USACO3.23Spinning Wheels

时间:2023-03-09 02:03:38
USACO3.23Spinning Wheels

直接枚举角度 数据比较水吧

 /*
ID: shangca2
LANG: C++
TASK: spin
*/
#include <iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
using namespace std;
struct node
{
int l[],r[],k,v;
}p[];
int f[][];
int main()
{
freopen("spin.in","r",stdin);
freopen("spin.out","w",stdout);
int i,j,o,g;
for(i = ; i <= ; i++)
{
cin>>p[i].v;
cin>>p[i].k;
for(j = ; j <= p[i].k ; j++)
{
cin>>p[i].l[j]>>p[i].r[j];
if(p[i].l[j]+p[i].r[j]>=)
{
for(g = p[i].l[j]; g < ; g++)
f[i][g] = ;
for(g = ; g <= (p[i].l[j]+p[i].r[j])% ; g++)
f[i][g] = ;
}
else
for(g = p[i].l[j] ; g <= p[i].l[j]+p[i].r[j] ; g++)
f[i][g] = ;
}
}
o = ;
for(i = ; i < ; i++)
{
if(f[][i]&&f[][i]&&f[][i]&&f[][i]&&f[][i])
{
printf("0\n");
return ;
}
}
while()
{
o++;
memset(f,,sizeof(f));
for(i = ; i <= ; i++)
{
for(j = ; j <= p[i].k ; j++)
{
p[i].l[j] = (p[i].l[j]+p[i].v)%;
if(p[i].l[j]+p[i].r[j]>=)
{
for(g = p[i].l[j]; g < ; g++)
f[i][g] = ;
for(g = ; g <= (p[i].l[j]+p[i].r[j])% ; g++)
f[i][g] = ;
}
else
for(g = p[i].l[j] ; g <= p[i].l[j]+p[i].r[j] ; g++)
f[i][g] = ;
}
}
for(i = ; i < ; i++)
{
if(f[][i]&&f[][i]&&f[][i]&&f[][i]&&f[][i])
{
printf("%d\n",o);
return ;
}
}
if(o==)
{
puts("none");
return ;
}
}
return ;
}