F. 张胖胖玩多米诺骨牌 (南阳理工oj—21新生第二场招新赛)
目标:邻两块骨牌距离的最大值最小
首先这是一道二分题(如果你可以看出来,那你就已经成功一半了)
我以上面的图,来讲解一下:
这个算是贪心思想了
X是二分出来的最大值,如果距离大于X,我就插一个(也可能插多个),插的数量可以用数学式子表示,请看下面:
for (i = 0; i < n - 1; i++){sum += (a[i + 1] - a[i]) / x;if ((a[i + 1] - a[i]) % x == 0){sum--;}}
如果可以整除,相当于 (a[i + 1] - a[i]) / x 多插一个,所以要减一个。
所以跑一个for(遍历)就可以得到插入的数量。
if (sum <= k) {return 1;}return 0;
sum<=k,就符合二分的答案
二分需要满足——》 具有单调性(也可以说成具有函数单调性)
就这道题来说:X越大sum越小;X越小sum越大。
具有单调性,即:满足二分!
AC代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
ll s[100010];
int n, k;
int check(ll x)
{ll sum = 0;for (int i = 0; i < n - 1; i++){sum += (s[i + 1] - s[i]) / x;if ((s[i + 1] - s[i]) % x == 0)sum--;}if (sum <= k)return 1;elsereturn 0;
}
int main()
{cin >> n >> k;for (int i = 0; i < n; i++)cin >> s[i];//sort(s, s + n);//进行排序(小——》大)ll r, l;l = 1; r = s[n-1] - s[0];while (l < r) {int mid = l + r >> 1; //(l+r)/2if (check(mid)) r = mid; // check()判断mid是否满足性质else l = mid + 1;}cout << l << endl;return 0;
}
最后感谢您的阅读!!!
F. 张胖胖玩多米诺骨牌 (南阳理工oj—21新生第二场招新赛)相关推荐
- POJ 1135 Domino Effect(最短路 多米诺骨牌)
题意 题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行,两张骨牌之间只有很短的空隙.如果排列得很好,当你推 倒第 1张骨 ...
- 多米诺骨牌最长牌阵java_棋盘的完美覆盖(多米诺骨牌完美覆盖)幻方(魔方阵)...
棋盘的完美覆盖: 一张8行8列的棋盘一共有64个方格,用一些形状相同的多米诺骨牌覆盖,每一张覆盖相邻的两个方格,没有相互重叠,能用32张这样的多米诺骨牌完全覆盖整张棋盘称为多米诺骨牌完美覆盖或者盖瓦. ...
- 【01背包】洛谷P1282多米诺骨牌
题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...
- leetcode 1128. 等价多米诺骨牌对的数量
给你一个由一些多米诺骨牌组成的列表 dominoes. 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的. 形式上,dominoes[i] = ...
- 【8.6】代码源 - 【前缀集】【矩阵游戏】【谁才是最终赢家?】【放置多米诺骨牌】
#930. 前缀集 题意:给定两个长为 n ( 1 ≤ n ≤ 5 × 1 0 5 ) n(1\leq n\leq 5\times 10^5) n(1≤n≤5×105) 的序列 a i , b i a ...
- 大学四年生活总结_大学四年,我总结了一个道理,多米诺骨牌效应
读书,能让你过上自己想要过的生活 大学毕业已经很长时间了,现在回过头来看,仍然感谢,当年那个的我,在大学读书阶段,一直在努力学习中度过,才让自己过上现在想要过的生活. 然而,现在每当看到好多人,在高中 ...
- 多米诺骨牌效应(转载)
多米诺骨牌效应(Domino Effect) 多米诺骨牌效应简介 新华社2000年12月31日和中央电视台2001年元月6日先后报道:在20世纪的最后几分钟里,一项新的多米诺骨牌吉尼斯世界纪录,在北京 ...
- S6 edge+的多米诺骨牌效应:大屏的趋势
日前,为庆祝三星S6 edge+国行版的顺利发售,三星盖乐世社区的一些粉丝自发组织了三星疯狂"盖星人"第一期活动--活动现场除了可以对S6 edge+进行全方面体验之外,还将演示著 ...
- P1282 多米诺骨牌 (差值DP+背包)
题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...
最新文章
- 2016年7月微软MVP申请開始了!
- springboot 获取application参数_LOOK ! SpringBoot的外部化配置最全解析
- Codeforces Round #364 (Div. 1) (差一个后缀自动机)
- js实现冒泡排序,快速排序,选择排序
- Linux-shell获取天气
- 中国小伙CVPR 18论文遭质疑:同行难复现,要求评议组撤稿
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案(转)
- 华为机试HJ99:自守数(附带提速方案)
- User Agent跨站攻击
- 会声会影2022语音转文字功能怎么用
- RBF神经网络学习及实践
- 【杂谈】真相揭开有点吃惊:杨利伟出舱时
- 【每日一题】一起冲击蓝桥杯吧——Day6【蓝桥真题一起练】
- DM 源码阅读系列文章(七)定制化数据同步功能的实现
- css两列等高,多种方法实现div两列等高(收集整理)
- 计算机29首流行音乐叫什么,2018结婚用的歌曲排名 50首流行歌曲燃爆婚礼现场...
- 跟我学药物设计 | 药物研发的过程和药物设计的意义
- 有15个数按从小到大的顺序存放在一个数组中。(折半查找)
- Python+WebKit+HTML开发桌面应用程序
- C语言/C++基础之绘制图钉画(附源码)
热门文章
- STP端口状态特点、STP端口角色特点、链路状态发生变化,STP如何重新收敛? TCN何时发?uplinkfast技术、Portfast技术、backbonefast技术、常见的STP调整命令:
- Docker实战部署JavaWeb项目-基于SpringBoot
- 【Python爬虫】Beautiful Soup库入门
- diy 多路监控_如何通过此DIY设置监控空气质量
- 黑客马拉松 招募_举办第一次黑客马拉松的提示
- docker 容器 日志_如何为Docker容器设置日志轮换
- 构建meteor应用程序_我如何在一个月内构建一个复杂的文本分析应用程序
- react 代码编写原则_如何编写易读的React代码— 10种编码风格技巧
- oc开源应用_失眠:一款开源应用,可根据睡眠周期告诉您何时入睡
- 134_Power BI Report Server之某消费品运营数据监控