zoukankan      html  css  js  c++  java
  • 洛谷P2728 纺车的轮子 Spinning Wheels

     P2728 纺车的轮子 Spinning Wheels

    •  
    • 29通过
    • 66提交
    • 题目提供者该用户不存在
    • 标签USACO
    • 难度普及/提高-

     提交  讨论  题解  

    最新讨论

    • 暂时没有讨论

    题目背景

    一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口。这些缺口必须被迅速而准确地排列好。每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知位置开始转动。轮子按照角度变大的方向旋转(即0经过旋转到达1的位置),所以从起始位置开始,在一定的时间内,它们依次转过1度,2度等等(虽然这些轮子很可能不会同时转过这些角度)。

    题目描述

    这是一个整数问题。轮子不会转过1.5度或23.51234123度这样的角度。例如,轮子可能在一秒钟内转过20到25度甚至30到40度(如果转得快的话)。

    这个问题中的所有角度都限制在 0 <= 角度 <= 359 这个范围内。轮子转过 359 度后接下来就是 0 度。每个轮子都有一个确定的旋转速度,以秒作为单位。1 <= 速度 <= 180。

    轮子上的缺口的起始角度和缺口大小(或宽度)各由一个整数表示,都以度为单位。在一个轮子上,两个缺口之间至少有一度的间隔。宽度也包含缺口起始的角度,即0 180包括0..180共计181个角度,比一般人想象的多一个。

    在起始位置,设时间为 0,所有的轮子的起始标记排列成一条直线。你的程序必须计算,最早出现每个的轮子上的缺口同其他轮子上的缺口对准(也就是一束光可以通过五个轮子上的五个缺口)情况的时间。这些缺口在任意一个角度对准。

    输入输出格式

    输入格式:

    输入中的五行对应五个轮子。

    第一个数字表示轮子的转动速度。下一个数字是缺口的数目 W。1 <= W <= 5。接下来的 W 对数字表示每个缺口的起始角度和宽度。

    输出格式:

    只有一行,包括一个整数,表示光能够通过这五个轮子的最早时间。如果无解,输出'none'(小写,不含引号)。

    输入输出样例

    输入样例#1

    30 1 0 120

    50 1 150 90

    60 1 60 90

    70 1 180 180

    90 1 180 60

    输出样例#1

    9

    说明

    题目翻译来自NOCOW。

    USACO Training Section 3.2

    分析:枚举水题,枚举到非常大的时间,看某一个位置是否有5个缺口覆盖即可.

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    int v[6], jiao[6][6], wide[6][6],w[6],vis[370];
    
    int main()
    {
        for (int i = 1; i <= 5; i++)
        {
            scanf("%d", &v[i]);
            scanf("%d", &w[i]);
            for (int j = 1; j <= w[i]; j++)
                scanf("%d%d", &jiao[i][j], &wide[i][j]);
        }
        for (int i = 0; i <= 1000; i++)
        {
            memset(vis, 0, sizeof(vis));
            for (int j = 1; j <= 5; j++)
                for (int k = 1; k <= w[j]; k++)
                {
                for (int t = jiao[j][k]; t <= jiao[j][k] + wide[j][k]; t++)
                    vis[t % 360]++;
                jiao[j][k] = (jiao[j][k] + v[j]) % 360;
                }
            for (int a = 0; a <= 359; a++)
                if (vis[a] == 5)
                {
                printf("%d
    ", i);
                return 0;
                }
        }
        printf("none
    ");
    
        return 0;
    }
  • 相关阅读:
    生成随机《c和指针笔记》让rand更随机一点
    mvcframeworkProgramming ASP.NET MVCFundamentals of ASP.NET MVC(四)Controller
    直线距离uva 11168 Airport(训练指南)
    分量算法poj 1751 Highways 最小生成树之Kruskal(克鲁斯卡尔)算法
    图片对象android学习笔记之使用ClipDrawable
    汇总窗口Visual Studio Watch 窗口技巧汇总
    百度用户百度,来一场华丽的视觉盛宴吧
    Dynamic 动态类型 和双问号??的使用
    C# insert into 一条记录后获取该记录的自动增长列ID
    MVC JsonResult的使用
  • 原文地址:https://www.cnblogs.com/zbtrs/p/5950923.html
Copyright © 2011-2022 走看看