CCF 201803-2 碰撞的小球
作者:互联网
没有好办法就暴力,没有好办法就模拟。
#include<iostream> using namespace std; struct node { int dis; bool dir;//1是向右 0是向左 } p[1005]; int num[1005];//用来记录每个位置有几个球 int sign[1005];//用来标志是否需要反向 int main() { int n,t,l; cin >> n >> t >> l; for(int i = 0 ; i < n ; i++) { cin >> p[i].dis; p[i].dir = 1; } while(l--) { for(int i = 0 ; i < n ; i++) { if(num[p[i].dis] == 2) { sign[p[i].dis] = 1; } if(p[i].dis == 0 || p[i].dis == t || sign[p[i].dis] == 1) { p[i].dir= !p[i].dir; } if(num[p[i].dis] > 0){ num[p[i].dis]--; if(num[p[i].dis] == 0 && sign[p[i].dis] == 1){ sign[p[i].dis] = 0; } } if(p[i].dir) { p[i].dis++; } else { p[i].dis--; } num[p[i].dis]++; } } for(int i = 0 ; i < n ; i++) { cout << p[i].dis << ' '; } }
标签:int,小球,sign,++,num,CCF,201803,dir,dis 来源: https://www.cnblogs.com/LikeFish/p/16259510.html