codevs 1098 均分纸牌
2017-11-23 19:50
176 查看
题目:codevs1098
思路: 直接从左到右,遇到小于均值的,直接向右边拿,大于均值的,直接给右边,因为纸牌总数为堆数n的倍数,所以最后肯定能均分;
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int a[105];
int main()
{
int n;
cin >> n;
int count = 0;
int sum = 0;
for(int i = 0;i < n;i++)
{
cin >> a[i];
sum+= a[i];
}
sum/=n;
for(int i = 0;i < n;i++)
{
if(a[i]==sum)continue;
if(a[i] > sum){
a[i+1] += a[i]-sum;
a[i] = sum;
count++;
// cout << count << "/" << i << " ";
}
else {
a[i+1] = a[i+1] - sum+a[i];
a[i] = sum;
count++;
//cout << count << "/" << i << " ";
}
}
/*for(int i = 0;i < n;i++)
{
cout << a[i] << " ";
}*/
cout << count;
return 0;
}
思路: 直接从左到右,遇到小于均值的,直接向右边拿,大于均值的,直接给右边,因为纸牌总数为堆数n的倍数,所以最后肯定能均分;
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int a[105];
int main()
{
int n;
cin >> n;
int count = 0;
int sum = 0;
for(int i = 0;i < n;i++)
{
cin >> a[i];
sum+= a[i];
}
sum/=n;
for(int i = 0;i < n;i++)
{
if(a[i]==sum)continue;
if(a[i] > sum){
a[i+1] += a[i]-sum;
a[i] = sum;
count++;
// cout << count << "/" << i << " ";
}
else {
a[i+1] = a[i+1] - sum+a[i];
a[i] = sum;
count++;
//cout << count << "/" << i << " ";
}
}
/*for(int i = 0;i < n;i++)
{
cout << a[i] << " ";
}*/
cout << count;
return 0;
}
相关文章推荐
- Codevs 1098 均分纸牌 贪心
- 贪心-codevs-1098均分纸牌
- 【codevs 1098】均分纸牌
- [贪心]CODEVS-1098 均分纸牌
- codevs 1098 均分纸牌 2002年NOIP全国联赛提高组 x
- 【20171111】Codevs 1098 均分纸牌
- codevs 1098 均分纸牌【贪心】
- wikioi 1098 均分纸牌
- codevs1098 均分纸牌(贪心)
- 【贪心】【codevs】1098 均分纸牌
- code[vs] 1098 均分纸牌
- 【codevs1098 均分纸牌】贪心
- codevs 1098 均分纸牌 模拟 解题报告
- 1098 均分纸牌
- codevs 1098 均分纸牌
- wikioi天梯之1098 均分纸牌 贪心
- 1098 均分纸牌
- CODE[VS] 天梯 1098 均分纸牌 2002年NOIP全国联赛提高组
- codevs 1098 && 洛谷 P1031 均分纸牌 (修bug plus(两个注意*))
- 1098 均分纸牌 2002年NOIP全国联赛提高组