摘要: 题意是一个圆桌上面做了n个人,每个人手头上有不同数目的金币(每个人手头的金币数目已知),然后他们需要通过相互交换来使得大家手头上面的金币数目相等,求最少流通值。白书上面用了一个非常强劲的代数做法,觉得这个思想还是需要学习一下的。因为人数和总的金币数是确定的,而且题目确保了一定除得进,所以最终情况下每个人手头的钱币数量是确定的,设为M,把人编号1,2,3,4,..n,设xi为编号i-1的人给编号为i的人的金币数,我们最终要求的值即为|x1|+|x2|+…+|xn|,Ai为每个人初始状况下手头的钱币数,有A1+x1-x2=M → x2=A1-M+x1 A2+x2-x3=M → x3=A2-M+x2 阅读全文
posted @ 2014-02-06 19:46 acm_roll 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 题意是原本n个墓碑均匀分布在一个周长为10000的圆周上,现在加入m个,如果要使得n+m个墓碑都均匀分布的话,那么原来的墓碑最少的移动总距离是多少。因为加入m个之后m+n个墓碑的位置是固定的,要是移动距离最少必定会有一个墓碑不动,将圆周分成m+n段,分别标上0,1,2,3,4。。然后需要移动的墓碑坐标就是数轴上面的非整数点,两边的值靠近哪个就选哪个,之后再等比例扩大即可。#include #include #include using namespace std;int main() { int n,m; while(~scanf("%d%d",&n,&m) 阅读全文
posted @ 2014-02-06 19:17 acm_roll 阅读(497) 评论(0) 推荐(0) 编辑