题解 P2728 【纺车的轮子 Spinning Wheels】
模拟题。找不到就输出none。
/*
ID: ylx14274
PROG: spin
LANG: C++
*/
#include<set>
#include<map>
#include<list>
#include<queue>
#include<stack>
#include<string>
#include<math.h>
#include<time.h>
#include<vector>
#include<bitset>
#include<memory>
#include<utility>
#include<stdio.h>
#include<sstream>
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#define LL unsigned long long
using namespace std;
int v[6];//速度
int s[6];//数量
int x[6][6],y[6][6];//5个轮子5个洞
int i,j,k,t;//循环控制变量
int a[361];
int b[6];
int main()
{
freopen("spin.in","r",stdin);
freopen("spin.out","w",stdout);
for (i=1;i<=5;i++)
{
scanf("%d%d",&v[i],&s[i]);//读入速度和洞的数量
for (j=1;j<=s[i];j++)//读入s[i]个洞
scanf("%d%d",&x[i][j],&y[i][j]);//读入洞的位置和宽度
} //读入完毕
//读进来了。要干嘛来着……
for (t=0;t<=360;t++)//可能一开始就有一个地方5个轮子在那都是洞
{
memset(a,0,sizeof(a));//a清0
for (i=1;i<=5;i++)//5个轮子
{
for (j=1;j<=s[i];j++)//s[i]个洞
{
for (k=x[i][j];k<=x[i][j]+y[i][j];k++)//标记到数组a
a[k%360]++;//标记。记得取模
x[i][j]=(x[i][j]+v[i])%360;//下一秒状态。记得取模
}
} //标记完成
for (i=0;i<=359;i++)
if (a[i]==5)//5个轮子在此处均为洞
{
printf("%d\n",t);//输出
return 0;
}
}
printf("none\n");
return 0;
}