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 }

 

 

posted @ 2012-11-21 17:50  Naix_x  阅读(177)  评论(0编辑  收藏  举报