蚂蚁感冒
2017-03-25 20:03
183 查看
思路:本想着模拟一下,但是中间发现一个问题,等两只蚂蚁到了比如说9 -10的时候,到底该怎么走了呢。。
然后就只25分。。
错误数据:
5
20 4 -3 -10 -22
应输出3(不理解啊,模拟出来怎么感觉是4。。)
代码:
然后就只25分。。
错误数据:
5
20 4 -3 -10 -22
应输出3(不理解啊,模拟出来怎么感觉是4。。)
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; int x[55]; int vis[55]; int main() { int n; while(cin >> n) { for(int i=0; i<n; i++) cin >> x[i]; int cnt = n, sum = 1; memset(vis, 0,sizeof vis); vis[0] = 1; while(cnt) { for(int i=0; i<n; i++) { if(x[i] == 1000) continue; x[i]++; if(x[i] > 100 && x[i] != 1000) { x[i] = 1000; cnt--; } } for(int i=0; i<n; i++) { if(x[i] == 1000) continue; for(int j=0; j<n; j++) { if(vis[i] == 2 && vis[j] == 2) continue; if(i == j) continue; if(x[i] == -x[j]) { x[i] = -x[i]; x[j] = -x[j]; if(vis[i] == 1 && vis[j] == 1) continue; if(vis[i] == 1 || vis[j] == 1) { sum++; vis[i] = 2; vis[j] = 2; } } } } for(int i=0; i<n; i++) { if(vis[i] == 2) vis[i] = 1; } } cout << sum << endl; } return 0; }