题目链接:https://vjudge.net/contest/241341#problem/I

题目大意:给你一个有N个点等距的环,编号[0,N-1],然后有些点上有一个或多个硬币,通过移动这些硬币使得所有的硬币在环上等距地放置且每个点只能放一个硬币,求每个硬币的移动距离中最长的那个移动距离的最小值。

解题思路:先对这m个硬币所在的初始位置排下序,然后我们可以随便假设它们等距要放的位置,比如0,n/m,1*n/m,……,(m-1)*n/m。然后依次计算这m个硬币移动到它们相应的位置所要移动的距离a1,a2,……,am,正的代表往前移动,负的代表往后移动。移动的最大距离当然就是他们的绝对值的最大值了。不过这不是唯一的方案,我们还可以调整要移动的终点位置,比如整体移动x个位置,终点位置 就变成了x,n/m+x,……,(m-1)*n/m+x,那我们怎么求移动距离最大值的最小值呢,哇这里说的有点蒙了,稍微理解理解。这里我们就要调整使a1,a2,a3,……am,使它们的最大值与最小值越接近0越好,比如a1,a2,a3,……am中的最大值为5,最小值为-2,表示往前移动的最多要移动5格,往后移动最多要移动2格,那我们可以给他们同时给整个序列都减去1,这样就变成最大值4和最小值-3了,所以结果为4,当他们最大值相差小于等于1时说明就不能移动了,而最大值与最小值之间相差最大值-最小值+1个点,我们需要尽量往0靠拢,所以除以2就是我们要求的结果了。看了这么就别人的题解,终于看懂了。。。

附上代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
typedef long long ll;
int n,m,num[]; int main()
{
int t;
cin>>t;
int kase=;
while(t--)
{
cin>>n>>m;
for(int i=;i<m;i++) cin>>num[i];
sort(num,num+m);
int steps=n/m;
int maxx=-inf,minn=inf;
for(int i=,j=;i<m;i++,j+=steps)
{
maxx=max(maxx,num[i]-j);
minn=min(minn,num[i]-j);
}
printf("Case #%d: %d\n",kase++,(maxx-minn+)/);
}
return ;
}
/*
3
12 4
11 1 2 5
15 5
1 9 1 1 2
10 2
3 4
*/

UVALive - 6442 (思维题)的更多相关文章

  1. UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)

    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...

  2. UVALive.2995 Image Is Everything (思维题 三维坐标转换)

    UVALive.2995 Image Is Everything (思维题 三维坐标转换) 题意分析 这题实在是没思路,就照着打了一遍,把不理解的地方,写了注释. #include <iostr ...

  3. UVALive.3708 Graveyard (思维题)

    UVALive.3708 Graveyard (思维题) 题意分析 这标题真悲伤,墓地. 在周长为1e4的圆周上等距分布着n个雕塑,现在要加入进来m个雕塑,最终还要使得这n+m个雕塑等距,那么原来的n ...

  4. zoj 3778 Talented Chef(思维题)

    题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...

  5. cf A. Inna and Pink Pony(思维题)

    题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...

  6. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  7. 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)

    思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...

  8. C. Nice Garland Codeforces Round #535 (Div. 3) 思维题

    C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  9. PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记

    PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...

  10. HDU 1029 Ignatius and the Princess IV / HYSBZ(BZOJ) 2456 mode(思维题,~~排序?~~)

    HDU 1029 Ignatius and the Princess IV (思维题,排序?) Description "OK, you are not too bad, em... But ...

随机推荐

  1. asp.net core部署时自定义监听端口,提高部署的灵活性

    另一种方式 https://www.cnblogs.com/stulzq/p/9039836.html 代码截图: 贴一下代码,方便复制: //默认端口号5000 string port = &quo ...

  2. 递归遍历对象获取value值

    let menu = { name: '一级菜单', data: { name: '二级菜单', data: { name: '三级菜单', data: { name: '四级菜单' } } } }; ...

  3. Keepalived基础知识-运维小结

    keepalived介绍keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防 ...

  4. Mysql优化系列(1)--Innodb重要参数优化

    1.简单介绍InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎.InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读.这些特色 ...

  5. 分布式监控系统Zabbix-3.0.3-完整安装记录(3)-监控nginx,php,memcache,Low-level discovery磁盘IO

    前段时间在公司IDC服务器上部署了zabbix3.0.3监控系统,除了自带的内存/带宽/CPU负载等系统资源监控模板以及mysql监控模板外,接下来对诸如nginx.php.memcache.磁盘IO ...

  6. Gerrit日常维护记录

    Gerrit代码审核工具是个好东西,尤其是在和Gitlab和Jenkins对接后,在代码控制方面有着无与伦比的优势. 在公司线上部署了一套Gerrit系统,在日常运维中,使用了很多gerrit命令,在 ...

  7. HTML 5 拖放

    拖放(Drag 和 drop)是 HTML5 标准的组成部分. 拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 拖放事件 1. ...

  8. 几何学观止(Riemann流形部分)

    上承这个页面,相较之前,增加了古典的曲线曲面论,这部分介绍得很扼要,Riemann流形介绍得也很快,花了仅仅30页就介绍到了Gauss-Bonnet公式.同时配上了提示完整的习题. 几何学观止-Rie ...

  9. js格式化时间

    转自:https://blog.csdn.net/u010964869/article/details/51095827 显示格式为:yyyy-mm-dd hh:mi:ss function form ...

  10. Linux内核分析(第九周)

    第一周总结1.存储程序计算机 + 函数调用堆栈 + 中断机制 2.堆栈:C语言程序运行时候必须的一个记录调用路径和参数的空间(函数调用框架/提供局部变量/传递参数/保存返回地址) 不同指令可能实现相同 ...