只能说是看着题解做的,题目模拟可以过,但是题意有点模糊不清,缺口如[1,2]表示缺口1和2,而不是1到2之间的1个
还有宽度如包括收尾,比如start=0,length=30,则最后包括0-30共31个缺口...
1 /* 2 3 ID: hubiao cave 4 5 PROG: spin 6 7 LANG: C++ 8 9 */ 10 11 #include<iostream> 12 #include<fstream> 13 #include<cstring> 14 using namespace std; 15 16 int main() 17 18 { 19 ifstream fin("spin.in"); 20 ofstream fout("spin.out"); 21 int used[360],speed[5],crack_num[5],cracks[50]; 22 memset(used,0,sizeof(int) *360); 23 memset(speed,0,sizeof(int) *5); 24 memset(crack_num,0,sizeof(int)*5); 25 memset(cracks,0,sizeof(int) *50); 26 27 for(int i=0;i<5;i++) 28 { 29 fin>>speed[i]; 30 fin>>crack_num[i]; 31 for(int j=0;j<crack_num[i];j++) 32 { 33 int last; 34 fin>>cracks[i*10+j*2]>>cracks[i*10+j*2+1]; 35 36 } 37 } 38 39 for(int seconds=0;seconds<360;seconds++) 40 { 41 memset(used,0,sizeof(int)*360); 42 for(int i=0;i<5;i++) 43 { 44 for(int j=0;j<crack_num[i];j++) 45 { 46 for(int m=0;m<=cracks[i*10+2*j+1];m++) 47 { 48 int index=cracks[i*10+2*j]+seconds*speed[i]+m; 49 index%=360; 50 used[index]++; 51 } 52 } 53 } 54 for(int c=0;c<360;c++) 55 { 56 if(used[c]==5) 57 { 58 fout<<seconds<<endl; 59 return 0; 60 } 61 } 62 63 } 64 65 fout<<"none"<<endl; 66 67 68 return 0; 69 70 71 }