2013暑假集训 第三场个人赛总结
2013-07-21 19:07
525 查看
7月20日,第三场个人赛。这场个人赛应该是最低谷了吧,整场比赛2y了一题以后就再也没出题了。
ID | Origin | Title | ||
---|---|---|---|---|
0 / 11 | Problem A | SPOJ SEGMENTS | A | |
1 / 94 | Problem B | SPOJ STRDIST | B | |
#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int N = 111111; int rec , sum , p ; bool vis ; bool cmp(int a, int b) { return sum[a] < sum[b];} int main() { //freopen("in", "r", stdin); int n; while (~scanf("%d", &n)) { sum[0] = 0; bool ok = true; for (int i = 1; i <= n; i++) { scanf("%d", rec + i); sum[i] = sum[i - 1] + rec[i]; p[i] = i; if (sum[i] <= 0) ok = false; } sort(p + 1, p + n + 1, cmp); memset(vis, 0, sizeof(vis)); int ans = n; for (int i = 1; i <= n; i++) { //cout << p[i] << endl; if (sum[p[i - 1]] == sum[p[i]]) ok = false; if (!vis[i]) { int t = i; while (!vis[t]) vis[t] = true, t = p[t]; ans--; } //for (int i = 1; i <= n; i++) cout << vis[i] << ' '; cout << endl; } if (ok) printf("%d\n", ans); else puts("-1"); } return 0; } View Code 最后还有一题F,这个真不会了。以后研究懂了dp的时候再说吧。 ——written by Lyon 相关文章推荐
|