hdu 5353 Average 迷のWA-- --
来源:互联网 发布:科比2008总决赛数据 编辑:程序博客网 时间:2024/05/01 22:48
题意:相邻两个人能传递一次糖果,问最后所有人的糖果数是不是一样。
把第一个给第二个的情况枚举一下,接下来剩下的人按情况即可。
按理说,依次判断 if (OK) { PRINTF; continue;}的写法和放在for里面根据case讨论第一个给第二个的情况是没有区别的,蓝而,,神奇的是前者会迷のwa-- --,顺便贴下AC代码
AC:
#include <bits/stdc++.h>#include <map>#include <set>#include <queue>#include <stack>#include <cmath>#include <time.h>#include <vector>#include <cstdio>#include <string>#include <iomanip>///cout << fixed << setprecision(13) << (double) x << endl;#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1#define ls rt << 1#define rs rt << 1 | 1#define pi acos(-1.0)#define eps 1e-8#define Mp(a, b) make_pair(a, b)#define asd puts("asdasdasdasdasdf");typedef long long ll;typedef pair <int, int> pl;//typedef __int64 LL;const int inf = 0x3f3f3f3f;const int N = 100010;int a[N], c[N];ll sum, avg;vector <pl> v;int n;void OUT(){puts("YES");int sz = v.size();printf("%d\n", sz);for( int i = 0; i < sz; ++i ) {printf("%d %d\n", v[i].first, v[i].second );}}int f(){for( int i = 2; i <= n; ++i ) {int j = i+1;if( j == n+1 )j = 1;if( abs( c[i]-avg ) > 1 )return 0;if( c[i] < avg ) {c[i]++, c[j]--;v.push_back( Mp( j, i ) );}else if( c[i] > avg ) {c[i]--, c[j]++;v.push_back( Mp( i, j ) );}}for( int i = 1; i <= n; ++i )if( c[i] != avg )return 0;return 1;}int main(){int tot;scanf("%d", &tot);while( tot-- ) {scanf("%d", &n);sum = 0;for( int i = 1; i <= n; ++i ) {scanf("%d", &a[i]);sum += a[i];}if (sum % n) { printf("NO\n"); continue;}if (n == 1) { printf("YES\n"); printf("0\n"); continue;}avg = sum / n;bool OK = 0;int p;for( int i = 0; i < 3; ++i ) {v.clear();memcpy( c, a, sizeof c );if( i == 1 ) {c[1]--, c[2]++;v.push_back( Mp(1, 2) );}else if( i == 2 ) {c[1]++, c[2]--;v.push_back( Mp( 2, 1 ) );}OK = f();if( OK ) {OUT();break;}}if( OK == 0 )puts("NO");}return 0;}
wa:(保证其他地方都一样),然后wa3、 40+发
avg = sum / n; int OK = 0; v.clear(); memcpy( c, a, sizeof c ); c[1]++, c[2]--; v.push_back( Mp( 2, 1 ) ); OK = f(); if( OK ) { OUT(); continue; } v.clear(); memcpy( c, a, sizeof c ); c[1]--, c[2]++; v.push_back( Mp( 1, 2 ) ); OK = f(); if( OK ) { OUT(); continue; } v.clear(); memcpy( c, a, sizeof c ); OK = f(); if( OK ) { OUT(); continue; } if( !OK ) { puts("NO"); }
0 0
- hdu 5353 Average 迷のWA-- --
- HDU 5353 Average(这里或许有你一直WA的原因)
- HDU 5353 Average
- HDU 5353 Average
- HDU 5353 Average
- HDU 5353 Average(枚举)
- HDU 5353 Average 贪心
- HDU 5192 [迷之WA!]
- hdu 5353 Average(暴力)
- HDU 5353 Average(贪心)
- hdu 5353 Average(贪心+构造)
- HDU 5353(Average-贪心分果)
- hdu 1257 WA
- HDU 2145wa
- hdu 2604(WA)
- HDU 5353 Average(破解环的做法是枚举起始点の操作,灵活题)
- HDU 1224 莫名其妙的WA
- hdu 5353 Average(2015 Multi-University Training Contest 6)
- 怎么从键盘给数组输入不定个数的元素?
- 三种简单的html网页自动跳转方法,可以让你在打开一个html网页时自动跳转到其它的页面。
- LeetCode之Binary Tree Level Order Traversal II
- HDOJ1232 畅通工程(并查集)
- POJ 1005 I Think I Need a Houseboat
- hdu 5353 Average 迷のWA-- --
- GitHub超详细图文攻略
- linux 输入输出流和文件描述符浅析
- 设计模式之——单例模式(Singleton)的实现、优缺点和常见应用场景
- POJ1182 食物链(并查集)
- HDU 5364 Distribution money
- SATA SAS SSD 硬盘介绍和评测
- HDU 5365 Run
- 关于handler机制的总结