码迷,mamicode.com
首页 > 其他好文 > 详细

usaco Spinning Wheels

时间:2015-09-20 00:26:57      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

 有五个不透明的圆盘,每个圆盘上有不超过五个扇形缺口,这五个圆盘重叠在一起,每个都有一个固定的速度旋转,问经过最短多久,光线可以穿过这些圆盘。

 世道模拟题,但是一开始一直在纠结如何判断这个状态已经枚举过了,也就是判重的问题,后来才知道不用判重,当旋转次数超过360次,就会回到起始状态。

/*
ID: modengd1
PROG: spin
LANG: C++
*/
#include <iostream>
#include <stdio.h>

using namespace std;
struct wheel
{
    int speed;
    int hole;
    int Sta[5],End[5];
};
wheel Wheel[5];
bool isPass()
{
    int Passcounter;
    for(int i=0;i<360;i++)
    {
        Passcounter=0;
        for(int j=0;j<5;j++)
        {
            for(int k=0;k<Wheel[j].hole;k++)
            {
                if(i==270)
                    i=270;
                if(Wheel[j].Sta[k]<=Wheel[j].End[k]&&i>=Wheel[j].Sta[k]&&Wheel[j].End[k]>=i)
                {
                    Passcounter++;
                    break;
                }
                if(Wheel[j].Sta[k]>Wheel[j].End[k]&&(i>=Wheel[j].Sta[k]||Wheel[j].End[k]>=i))
                {
                    Passcounter++;
                    break;
                }
            }
        }
        if(Passcounter==5)
            return true;
    }
    return false;
}
int main()
{
    freopen("spin.in","r",stdin);
    freopen("spin.out","w",stdout);
    //input
    for(int i=0;i<5;i++)
    {
        scanf("%d%d",&Wheel[i].speed,&Wheel[i].hole);
        for(int j=0;j<Wheel[i].hole;j++)
        {
            scanf("%d%d",&Wheel[i].Sta[j],&Wheel[i].End[j]);
            Wheel[i].End[j]=(Wheel[i].End[j]+Wheel[i].Sta[j])%360;
        }
    }
    //rotate
    for(int i=0;i<360;i++)
    {
        if(isPass())
        {
            cout<<i<<endl;
            return 0;
        }
        for(int j=0;j<5;j++)
        {
            for(int k=0;k<Wheel[j].hole;k++)
            {
                Wheel[j].Sta[k]=(Wheel[j].Sta[k]+Wheel[j].speed)%360;
                Wheel[j].End[k]=(Wheel[j].End[k]+Wheel[j].speed)%360;
            }
        }
    }
    cout<<"none"<<endl;
    return 0;
}

  

usaco Spinning Wheels

标签:

原文地址:http://www.cnblogs.com/modengdubai/p/4822565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!