比较简单的题,直接模拟做就行。
判断一个角度是否在某个范围(st, st+sp)内用 (deg - st + 360) % 360 <= sp 即可
/*
PROG:spin
LANG:C++
*/
#include <cstdio>
using namespace std;
int v[6], s[6], st[6][6], sp[6][6];
bool satisfy(int time, int deg)
{
for (int i = 1;i <= 5;++i)
{
int x = v[i] * time;
bool flag = false;
for (int j = 1;j <= s[i];++j)
{
int tmp = (st[i][j]+x)%360;
if ((deg-tmp+360)%360 <= sp[i][j])
flag = true;
}
if (!flag) return false;
}
return true;
}
int main()
{
freopen("spin.in", "r", stdin);
freopen("spin.out", "w", stdout);
int i, j;
for (int i = 1;i <= 5;++i)
{
scanf("%d%d", &v[i], &s[i]);
for (int j = 1;j <= s[i];++j) scanf("%d%d", &st[i][j], &sp[i][j]);
}
for (i = 0;i <= 360;++i)
for (j = 0;j < 360;++j)
if (satisfy(i, j)) {printf("%d\n", i); return 0;}
printf("none\n");
}