HDU 5353 Average 贪心
2015-08-08 11:20
337 查看
就是贪心啊,不知道为啥总是不过,总是WA
方法不对吗?
将数组扩展一倍,从左到右扫描,大于平均数就给右边的,小于就从右边拿,等于就不变,记录下操作类型。
大于2直接NO,不知道哪错了,自己出了一些数据也都过了
路过的大神多瞄一眼
多校每周只有两场,还是尽量把题全过了吧
方法不对吗?
将数组扩展一倍,从左到右扫描,大于平均数就给右边的,小于就从右边拿,等于就不变,记录下操作类型。
大于2直接NO,不知道哪错了,自己出了一些数据也都过了
路过的大神多瞄一眼
多校每周只有两场,还是尽量把题全过了吧
#pragma comment(linker, "/STACK:102400000,102400000") #include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <cstring> #include <map> #include <stack> #include <set> #define LL long long #define INF 0x3f3f3f3f #define MAXN 200005 using namespace std; struct Node { int x, y; Node(int x = 0, int y = 0):x(x), y(y){}; }; vector<Node> res; int n; LL sum; LL a[MAXN]; int f[MAXN]; int main() { #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); #endif // OPEN_FILE int T; scanf("%d", &T); for(int cas = 1; cas <= T; cas++){ scanf("%d", &n); sum = 0; for(int i = 1; i <= n; i++){ scanf("%d", &a[i]); a[i + n] = a[i]; sum += a[i]; } if(sum % n != 0){ printf("NO\n"); continue; } LL ave = sum / n; memset(f, 0, sizeof(f)); bool noans = false; for(int i = 1; i < 2 * n; i++){ if(a[i] == ave){ continue; } if(a[i] < ave){ if(ave - a[i] > 2){ noans = true; break; } a[i]++; a[i + 1]--; f[i] = 1; continue; } if(a[i] > ave){ if(a[i] - ave > 2){ noans = true; break; } a[i]--; a[i + 1]++; f[i] = -1; } } if(noans){ printf("NO\n"); continue; } noans = true; int cnt = 1; int pos = 0; for(int i = 2; i <= 2 * n; i++){ if(a[i] == a[i - 1]){ cnt++; } else{ cnt = 1; } if(cnt == n){ noans = false; pos = i; break; } } if(noans){ printf("NO\n"); continue; } printf("YES\n"); int x, y; res.clear(); for(int i = pos - n + 1; i <= pos; i++){ if(f[i] == 0){ continue; } if(f[i] == 1){ x = i + 1; y = i; } else{ x = i; y = i + 1; } if(x > n){ x -= n; } if(y > n){ y -= n; } res.push_back(Node(x, y)); } printf("%d\n", res.size()); for(int i = 0; i < res.size(); i++){ printf("%d %d\n", res[i].x, res[i].y); } } }
相关文章推荐
- 微信红包要收税 到底关我卵事?
- 南邮 OJ 2098 3_A+B(III)
- HDU 1879 继续畅通工程
- 转 wsdl
- UIWebView网页视图—IOS开发
- volatile 关键字
- HDU - 3466 Proud Merchants(不理解)
- kali无法输入中文
- Cent OS下发送邮件
- eclipse如何查看类之间的引用关系
- onfiguration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/security]
- 如何生成vfh特征值pcd文件
- 理解Linux的硬连接与软连接
- 南邮 OJ 2097 2_A+B(II)
- shell中截取cut所不能做好的字符串的方法
- Java中字符串为什么不以\0结尾
- Python安装.whl包的一系列问题
- LAMP开发环境的搭建
- leetcode 84: Largest Rectangle in Histogram
- 分数相加减的代码(c++)