天梯 1098 均分纸牌
2013-08-09 22:03
225 查看
解题报告:给出n堆纸牌,现在规定:第一堆的牌只能移动到第二堆,然后第n堆的牌只能移动到第n-1堆,然后其他的堆里的牌可以往两边移动,一次可以移动任意张,问最少可以经过多少次移动才可以使得所有堆里面的牌的数量相同(可以确定的是牌的总数是堆的数的整数倍)
这题可以说是贪心,我的做法是定义一个数,初始化为0,同时定义一个位置指针,然后从第一个位置往后移动,每次都加上这个堆的纸牌数与平均数的差,当这个数等于0的时候就将这个位置与位置指针的差累加起来,同时将位置指针更新到当前位置的下一个位置。这样最后便得到最后结果,时间复杂度只是O(n)。下面是代码:
View Code
这题可以说是贪心,我的做法是定义一个数,初始化为0,同时定义一个位置指针,然后从第一个位置往后移动,每次都加上这个堆的纸牌数与平均数的差,当这个数等于0的时候就将这个位置与位置指针的差累加起来,同时将位置指针更新到当前位置的下一个位置。这样最后便得到最后结果,时间复杂度只是O(n)。下面是代码:
#include<cstdio> const int maxn = 100+3; int n,A[maxn]; int main() { int sum = 0 , eve ; while(scanf( " %d " , & n ) != EOF) { sum = 0; for( int i = 1;i <= n ; ++i ) { scanf("%d",&A[i]); sum += A[i]; } eve = sum / n; int t = 0 , flag = 1 , tot = 0 ; for( int i = 1;i <= n ; ++i ) { t += ( A[i] - eve ) ; if( t == 0 ) { tot += (i - flag); flag = i + 1 ; } } printf("%d\n",tot); } return 0; }
View Code
相关文章推荐
- CODE[VS] 天梯 1098 均分纸牌 2002年NOIP全国联赛提高组
- wikioi天梯之1098 均分纸牌 贪心
- wikioi-天梯-普及一等-贪心-1098:均分纸牌
- 1098 均分纸牌
- CODE[VS] 1098 均分纸牌
- codevs 均分纸牌 1098
- codevs 1098 && 洛谷 P1031 均分纸牌 (修bug plus(两个注意*))
- 【20171111】Codevs 1098 均分纸牌
- wikioi 1098 均分纸牌
- CodeVs 1098 均分纸牌
- CODE VS 天梯 均分纸牌
- wikioi 1098 均分纸牌
- 【贪心】【codevs】1098 均分纸牌
- 【codevs 1098】均分纸牌
- CodeVs_1098 均分纸牌问题
- CODEVS 1098 均分纸牌(贪心)
- codeVS 1098 均分纸牌(2002年NOIP全国联赛提高组)
- wikioi 1098 均分纸牌
- code[vs] 1098 均分纸牌
- codevs1098 均分纸牌