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 }

 

 

你可能感兴趣的:(USACO)