随笔-141  评论-9  文章-3  trackbacks-0
模拟1到359步就可以了。

/*
ID: lorelei
TASK: spin
LANG: C++
*/


#include 
<fstream>

using namespace std;

typedef 
struct Gap{
    
int start;
    
int span;
}
Gap;

int gap_num[5];
int speed[5];
Gap gaps[
5][5];

ifstream fin;
ofstream fout;

void move(){
    
int i,j;
    
for(i=0; i<5++i)
        
for(j=0; j<gap_num[i]; ++j)
            gaps[i][j].start 
= (gaps[i][j].start+speed[i])%360;
}


int tmp[360];
bool check(){
    
int i,j,k;
    
for(i=0; i<360++i) tmp[i]=0;

    
for(i=0; i<5++i)
        
for(j=0; j<gap_num[i]; ++j)
            
for(k=0; k<=gaps[i][j].span; ++k)
                tmp[(gaps[i][j].start
+k)%360]++;

    
for(i=0; i<360++i)
        
if(tmp[i]==5)
            
return true;

    
return false;
}


int main(){
    
int i,j;
    
    fin.open(
"spin.in");
    fout.open(
"spin.out");

    
for(i=0; i<5++i){
        fin
>>speed[i];
        fin
>>gap_num[i];
        
for(j=0; j<gap_num[i]; ++j)
            fin
>>gaps[i][j].start>>gaps[i][j].span;
    }


    
if(check()){
        fout
<<0<<endl;
        
return 0;
    }


    
for(i=1; i<360++i){
        move();
        
if(check()){
            fout
<<i<<endl;
            
return 0 ;
        }

    }

    fout
<<"none"<<endl;

    
return 0;
}
posted on 2010-12-23 14:46 小阮 阅读(200) 评论(0)  编辑 收藏 引用 所属分类: USACO

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理