USACO 3.2 Spinning Wheels
弱爆了,真心看不懂这个题是在搞毛线啊。。。本来以为是神马数论的神题,不能直接枚举把,然后搜了一下题解,然后都说是水题模拟就行。。。顿时受打击了,直接抄题解过了。。。掉人品啊,有点太无语了。
1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: spin 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <string> 9 #include <math.h> 10 #include <queue> 11 using namespace std; 12 int v[10],p[6][370],s[10]; 13 int main() 14 { 15 int i,j,k,n,st,d,z; 16 freopen("spin.in","r",stdin); 17 freopen("spin.out","w",stdout); 18 for(i = 1;i <= 5;i ++) 19 { 20 scanf("%d",&v[i]); 21 v[i] = 360 - v[i];//把速度给倒转,为了以后操作方便 22 scanf("%d",&n); 23 for(j = 1;j <= n;j ++) 24 { 25 scanf("%d%d",&st,&d); 26 for(k = 0;k <= d;k ++) 27 { 28 p[i][(k+st)%360] = 1; 29 } 30 } 31 } 32 z = 0; 33 for(i = 0;i <= 359&&!z;i ++) 34 { 35 for(j = 0;j <= 359;j ++)//例如速度为1,s则为359,就说明如0位置,上一次应该在359 36 { 37 if(p[1][(j+s[1])%360]&&p[2][(j+s[2])%360]&&p[3][(j+s[3])%360]&&p[4][(j+s[4])%360]&&p[5][(j+s[5])%360]) 38 { 39 z = 1; 40 break; 41 } 42 } 43 if(z) break; 44 for(j = 1;j <= 5;j ++) 45 { 46 s[j] += v[j]; 47 } 48 } 49 if(z == 0) 50 printf("none\n"); 51 else 52 printf("%d\n",i); 53 return 0; 54 }