UVALive6442_Coins on a Ring
2024-08-30 15:45:18
真正的水题,可惜无法当场机智一下。
这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少?
其实是这样来考虑的,我们可以随便设置一系列参考点,不妨直接假设为(0,n/m,2*n/m,……),这样我们直接记录所有的点依次移动到这些对应位置所需要的最大的步奏和最小的步奏,这样我们就得到了到这一系列的位置的最大和最小值。这样我们需要的最终目标位置就是在最大值和最小值的中点处。
这里理解一下吧,就是答案了。。 智商拙计。、、、
#include <iostream>
#include <cstdio>
#include <algorithm>
#define maxn 1000100
using namespace std; int a[maxn],maxpos,minpos,n,m,cas=,t; int main()
{
scanf("%d",&t);
while (t--)
{
scanf("%d%d",&n,&m);
for (int i=; i<=m; i++) scanf("%d",&a[i]);
sort(a+,a++m);
maxpos=,minpos=~0U>>;
for (int i=,cur=; i<=m; i++,cur+=n/m)
maxpos=max(maxpos,a[i]-cur),minpos=min(minpos,a[i]-cur);
printf("Case #%d: %d\n",++cas,(maxpos-minpos+)/);
}
return ;
}
最新文章
- 【读书笔记】《编程珠玑》第一章之位向量&;位图
- 紫書_例5-10 UVa207
- vim中执行shell命令
- hdoj 2083 简易版之最短距离
- ubuntu系统安装jdk
- Codevs 2776 寻找代表元(二分图匹配)
- 推荐一本好书给即将走入工作的程序员and程序媴
- 可爱的 Python : Python中函数式编程,第二部分
- DevOps之服务器
- 如何管理Session(防止恶意共享账号)——理论篇
- 安装MySQL时提示3306端口已被占用的解决方案
- php缩放gif和png图透明背景变成黑色的解决方法_php技巧
- yii2.0 app上集成支付宝支付
- 利用 git format-patch 和 git send-email 把修改的 patch 文件发送给 ffmpeg-devel
- 从零实现Lumen-JWT扩展包(序):前因
- Cloudstack云平台实践
- java copy 文件夹
- centos7.6 安装nginx-1.14.2
- Realm Swift
- java 多维数组转化为字符串