CloudLunar
主页
知识库
人文社科
自然科学
跨学科领域
热门分类
算法及题库
云璟月's
墨色集(设计)
指尖集(代码)
未央集(随笔)
流觞集(语录)
如花集(书影)
纸鸢集(小说)
登录
B站
微博
人人
开心
Twitter
Facebook
RSS订阅链接
留言板
关于我
在社交网站上关注我
B站
微博
人人
开心
Twitter
Facebook
RSS订阅
RSS订阅链接
留言板
关于我
查看CodeForces/440B的源代码
←
CodeForces/440B
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
[[分类:模拟与排序]] ==摘要== {{信息题| Balancer|http://acm.hust.edu.cn/vjudge/contest/view.action?cid{{=}}70537#problem/H|1|100|没用lld|1|time=2015-02-23 19:16:20}} *来自寒假练习:[http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70537 2015 Winter Warm up div1] H题 *原题链接:http://codeforces.com/problemset/problem/440/B ==题意== n个火柴盒,每个火柴盒里有<m>a_i</m>根火柴,每次可以从一个火柴盒取出一根火柴到相邻的盒子去,问使得所有火柴盒数量相等的最少移动步数。 ==题解== 目的是把每个火柴盒变成<m>\frac{a_1+a_2+...+a_n}{n}</m>根火柴,而向左移动m根火柴其实相当于向右移动-m根火柴,所以不用考虑左右。而顺序对结果也没有影响,所以就从最左边开始,依次利用每个火柴盒右边的火柴盒,将其火柴达到要求值即可。 (即使右边被移动成负数值也没有关系,等价地调一下顺序会补上的) ==代码== {{折叠|440B.cpp代码已折叠 |<pre> #include <iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstdlib> #include<cstring> #include<climits> #include<queue> #include<vector> using namespace std; #define f(i,n) for(int i=1;i<=n;++i) #define fi(i,t,n)for(int i=t;i<=n;++i) #define fd(i,n) for(int i=n;i>=1;--i) #define fdi(i,t,n) for(int i=n;i>=t;--i) #define foreach(i,s) for(typeof(s.begin()) i=s.begin();i!=s.end();++i) #define rforeach(i,s) for(typeof(s.rbegin()) i=s.rbegin();i!=s.rend();++i) #define si(n) scanf("%d",&n) #define dsi(n) int n;scanf("%d",&n) #define llu unsigned long long #define lld long long #define ci const int & long long n,a[50001],Ans=0,sum=0;//fixed:不能用int,不能用llu// int main() { cin>>n; f(i,n) { cin>>a[i]; sum+=a[i]; } f(i,n) { Ans+=abs(a[i]-sum/n); a[i+1]+=a[i]-sum/n; } cout<<Ans; } </pre> |code440B}}
该页面使用的模板:
模板:=
(
查看源代码
)
模板:信息题
(
查看源代码
)
模板:折叠
(
查看源代码
)
返回
CodeForces/440B
。
著作权声明
[
编辑
]
除非另有说明,本
网站内容
采用
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
进行许可(中国大陆可以参照
知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议
,如有不同以前者为准)。
如果需要商业化使用,请另联系作者取得授权。
关于
[
编辑
]
联系
@云璟月Lunar
的新浪微博
本站RSS:
RSS链接