zoukankan      html  css  js  c++  java
  • USACO Spinning Wheels

     题意是给你五个轮子, 每个轮子上有一些开口, 现在每个轮子从0位置开始转动,问最短啥时候5个轮子的开口相遇,刚开始看这道题的时候没啥思路, 就像等到最后在写,最后还没思路看了题解, 直接模拟就行, 代码如下:(注意处理边界,他不是离散的360个口,而是一个区间。

    /*
        ID: m1500293
        LANG: C++
        PROG: spin
    */
    
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    bool whell[6][390];
    int w[5];
    int idx[5] = {0, 0, 0, 0, 0};
    
    int check()
    {
        for(int i=0; i<360; i++)
        {
            bool res = true;
            for(int j=0; j<5; j++)
            {
                res = res&whell[j][(idx[j]+i)%360];
            }
            if(res)
                return true;
        }
        return false;
    }
    
    int main()
    {
        freopen("spin.in", "r", stdin);
        freopen("spin.out", "w", stdout);
        memset(whell, 0, sizeof(whell));
        for(int i=0; i<5; i++)
        {
            scanf("%d", &w[i]);
            int t;
            scanf("%d", &t);
            for(int j=0; j<t; j++)
            {
                int st, wi;
                scanf("%d%d", &st, &wi);
                for(int k=st; k<=st+wi; k++)
                    whell[i][k%360] = 1;
            }
        }
        for(int i=0; i<360; i++)
        {if(check())
            {
                printf("%d
    ", i);
                return 0;
            }
            for(int j=0; j<5; j++)
            {
                idx[j] = ((idx[j]-w[j])%360+360)%360;        //注意这里可能为负数,wa了一次
            }
        }
        printf("none
    ");
    }

  • 相关阅读:
    ps cc 2018安装
    eclipse 快速添加 set , get 方法
    电脑设置以太网
    C# 获取web.config配置文件内容
    C# @Page指令中的AutoEventWireup,CodeBehind,Inherits
    未能正确加载“Microsoft.VisualStudio.Implementation.EditorPackage”包
    C# 实现MD5加密
    mutex 简单介绍
    select @@IDENTITY
    C# vs2012创建报表
  • 原文地址:https://www.cnblogs.com/xingxing1024/p/5087380.html
Copyright © 2011-2022 走看看