RQNOJ 62 [NOIP2002]均分纸牌
2012-10-05 17:45
162 查看
RQNOJ_62
我们可以将牌在相邻堆之间的移动想象成经过了一条边,那么任意两堆相邻的牌之间都会有一条边,而且在最优情况下每条边应当是至多经过一次的,如果超过一次的话也可以通过相消变成至多经过一次。那么如何确定一条边要不要被走呢?实际上对于任意一条边来讲,都将牌划分成了左右两部分,如果两部分各自内部不能平衡的话就会通过这条边来达到平衡的目的。这样扫一遍前缀和就可以判定有多少条边需要经过了,而经过的边的数量就是最后的结果。至于可行性,由于最后需要经过的边都是有向的,所以会形成一个有向图,按有向图的方向移动牌即可。
我们可以将牌在相邻堆之间的移动想象成经过了一条边,那么任意两堆相邻的牌之间都会有一条边,而且在最优情况下每条边应当是至多经过一次的,如果超过一次的话也可以通过相消变成至多经过一次。那么如何确定一条边要不要被走呢?实际上对于任意一条边来讲,都将牌划分成了左右两部分,如果两部分各自内部不能平衡的话就会通过这条边来达到平衡的目的。这样扫一遍前缀和就可以判定有多少条边需要经过了,而经过的边的数量就是最后的结果。至于可行性,由于最后需要经过的边都是有向的,所以会形成一个有向图,按有向图的方向移动牌即可。
#include<stdio.h> #include<string.h> #define MAXD 110 int N, a[MAXD]; void solve() { int s = 0, n, cnt = 0; for(int i = 1; i <= N; i ++) scanf("%d", &a[i]), s += a[i]; n = s / N; s = 0; for(int i = 1; i <= N; i ++) { s += a[i]; cnt += s != n * i; } printf("%d\n", cnt); } int main() { while(scanf("%d", &N) == 1) solve(); return 0; }
相关文章推荐
- [noip2002tg] 均分纸牌
- 一中OJ #1341 均分纸牌 [NOIP 2002T1] | 贪心 | 解题报告
- [贪心] 均分纸牌 HUSTOJ3066(Noip2002)
- 【模拟】【NOIP2002】均分纸牌
- [noip2002]: 均分纸牌
- [模拟][NOIP2002] 均分纸牌
- noip2002-均分纸牌 2008.11.5
- noip2002 均分纸牌 (模拟)
- NOIP2002 均分纸牌
- NOIP 2002提高组 均分纸牌
- [NOIP2002] 提高组 洛谷P1031 均分纸牌
- [NOIP2002]均分纸牌题解
- 洛谷-均分纸牌-NOIP2002提高组复赛
- 贪心算法 均分纸牌(NOIP2002)
- NOIP2002 均分纸牌
- |Vijos|NOIP2002|贪心|P1123 均分纸牌
- [NOIP2002]均分纸牌
- 【noip2002】均分纸牌
- NOIP2002提高组/洛谷P1031均分纸牌
- 【模拟】【NOIP2002】均分纸牌