洛谷 P2728 纺车的轮子 Spinning Wheels

题意

有五个轮子,每个轮子都是360度(0~359),到了360度就会变成0度,每个轮子上都有 W个洞(1 <= W <= 5),判断在什么时候,五个轮子上的洞会有1度重合,光能后透过

做法

模拟加上暴力枚举轻松过,只要判断在一个点上什么时候有洞会重合即可

代码

#include<bits/stdc++.h>
using namespace std;
int a[6],k[6],x[6][6],l[6][6];
int now[6];
int main()
{
    freopen("spin.in","r",stdin);
    freopen("spin.out","w",stdout);
    for(int i=1;i<=5;++i)
    {
        cin>>a[i]>>k[i];
        for(int j=1;j<=k[i];++j)
           cin>>x[i][j]>>l[i][j]; 
    }
    for(int i=0;i<360;++i)
    { 
         int s[361]={};//记录在每个点上有多少个洞 
         for(int j=1;j<=5;++j)
         {
              for(int q=1;q<=k[j];++q)
              {
                  for(int t=x[j][q];t<=x[j][q]+l[j][q];++t)
                      s[t%360]++; //因为只有360度,要mod,记录 
                  x[j][q]+=a[j];
                  x[j][q]%=360;//更新洞的位置 
              }
         }
         for(int j=0;j<360;++j)
        {
            if(s[j]==5)
            {
                cout<<i<<endl;
                return 0;//找到就跳出,return 
            }
        }
    } 
    cout<<"none"<<endl;
    return 0; 
}   

 

posted @ 2022-02-12 16:16  LikC1606  阅读(57)  评论(0)    收藏  举报