uscao Spinning Wheels
生活随笔
收集整理的這篇文章主要介紹了
uscao Spinning Wheels
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
模擬題
/*
ID: jinbo wu
TASK: spin
LANG:C++
*/
#include<bits/stdc++.h>
using namespace std;
//這題本來是昨天寫的昨天懶沒寫,今天usaco掛了。。。。。。。
bool can[6][365];
int v[6];
int pos[6];
const int mod=360;
int main()
{freopen("spin.in","r",stdin);freopen("spin.out","w",stdout);int w,s,e;for(int i=0;i<5;i++){scanf("%d %d",&v[i],&w);for(int j=1;j<=w;j++){scanf("%d %d",&s,&e);e++;//加上起始點其實長度有e+1個比如60 90 那組數(shù)據(jù)從60-150都是可以看見的而60到150的長度為150-60+1=91段。 for(int k=s;e--;k=(k+1)%mod){can[i][k]=1;}}}int flag=1;int ans=0;//說實話這里為什么是30000我也不太清楚但我知道他們五個周期的最小公倍數(shù)肯定符合題意。 while(ans<30000&&flag){for(int i=0;i<360&&flag;i++){for(int j=0;j<5;j++){if(!can[j][(i-pos[j]+mod)%mod]) break;//原博主這里應(yīng)該寫錯了他寫成pos[j]+i;導(dǎo)致他下面方向也錯了。其實想一下也不難。 if(j==4){printf("%d\n",ans);flag=0;}}}ans++;for(int j=0;j<5;j++)pos[j]=(pos[j]+v[j])%mod;}if(ans==30000)printf("none\n");
}
總結(jié)
以上是生活随笔為你收集整理的uscao Spinning Wheels的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山竹多少钱啊?
- 下一篇: 事业单位1月入职,3月去社保局办理新增,