洛谷 P2728 纺车的轮子 Spinning Wheels

https://www.luogu.org/problemnew/show/P2728

JDOJ 1800: Spinning Wheels 纺车的轮子

Description

一架纺车有五个纺轮,这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0 度),这样所有的轮子都可以在统一的已知位置开始转动.
轮子按照`plus degrees'方向旋转,所以从起始位置开始,在一定的时间内,它们依次转过1 度,2 度等等(虽然这些轮子很可能不会同时转过这些角度).
这是一个整数问题.轮子不会转过1.5 度或23.51234123 度这样的角度.例如,轮子可能在一秒钟内转过20 到25 度甚至30 到40 度(如果转得快的话).
这个问题中的所有角度都限制在 0 <= 角度 <= 359 这个范围内.轮子转过 359 度后接下来就是 0度.每个轮子都有一个确定的旋转速度,以秒作为单位.1 <= 速度 <= 180.
轮子上的缺口的起始角度和缺口大小(或长度)各由一个整数表示,都以度为单位.在一个轮子上,两个缺口之间至少有一度的间隔.
在起始位置,设时间为 0,所有的轮子的起始标记排列成一条直线.你的程序必须计算,最早出现每个的轮子上的缺口同其他轮子上的缺口对准(也就是一束光可以通过五个轮子上的五个缺口)情况的时间.这些缺口在任意一个角度对准.

Input

输入中的五行对应五个轮子.
第一个数字表示轮子的转动速度.下一个数字是缺口的数目 W.1 <= W <= 5.接下来的 W 对数字表示每个缺口的起始角度和长度.

Output

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

Sample Input

30 1 0 120 50 1 150 90 60 1 60 90 70 1 180 180 90 1 180 60

Sample Output

这道题是一道模拟题...
(我在洛谷上搜图论题做,结果蹦出来了这个,怎么看怎么是模拟,就用模拟做了,这里告诉大家,洛谷智能推荐=坑爹玩意)
其实没什么好说的,读入处理可以有很多种方法,最后枚举时间,一层一层枚举缺口,最后就能AC掉。
我在这里想和大家探讨一下关于这种圆轮题怎么处理:
先上代码再解释:
#include<cstdio>
#include<cstring>
using namespace std;
int speed[6];
int s[6];
int p[6][6],width[6][6];
int v[361];
int b[6];
int main()
{for(int i=1;i<=5;i++){scanf("%d%d",&speed[i],&s[i]);for(int j=1;j<=s[i];j++)scanf("%d%d",&p[i][j],&width[i][j]);}for(int t=0;t<=360;t++){memset(v,0,sizeof(v));for(int i=1;i<=5;i++)for(int j=1;j<=s[i];j++){for(int k=p[i][j];k<=p[i][j]+width[i][j];k++)v[k%360]++; p[i][j]=(p[i][j]+speed[i])%360; }for(int i=0;i<=359;i++)if (v[i]==5){printf("%d",t); return 0;} }  printf("none");return 0;
}

在这里我采用了合理的压行。

所谓圆轮题是我给起的名,大体就是那种收尾相连的串,如果用数组的话会越界,再就会WA,因为根据题意,1的前面是n,n的后面是1,如果用数组模拟的话,我的想法是开三倍的数组,然后把串复制三份扔进去,再...

哇,麻烦死了。

所以我们想到了另外一种做法。

我们的数组不用开三倍,开一倍的即可,当我们需要找数组下标时怎么办呢?

很简单,把枚举到的数(可能会超出n的范围),对n取模即可。

很好理解吧!然后就可以进行后续的操作。

针对本题,不仅在v[k%360]的时候用到了这个思想,在它的下一行——p[i][j]=(p[i][j]+width[i][j])%360的时候也同样用到了这样的原理。

希望同学们多多体会。

转载于:https://www.cnblogs.com/fusiwei/p/11207942.html

USACO Spinning Wheels相关推荐

  1. 洛谷 P2728 纺车的轮子 Spinning Wheels

    P2728 纺车的轮子 Spinning Wheels 题目背景 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标 ...

  2. 洛谷P2728 纺车的轮子 Spinning Wheels

     P2728 纺车的轮子 Spinning Wheels 29通过 66提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 一架纺车 ...

  3. 【USACO题库】3.2.3 Spinning Wheels纺车的轮子

    题目描述     一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知位 ...

  4. uscao Spinning Wheels

    模拟题 /* ID: jinbo wu TASK: spin LANG:C++ */ #include<bits/stdc++.h> using namespace std; //这题本来 ...

  5. P2728 纺车的轮子 Spinning Wheels(枚举)

    展开 题目背景 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知位置 ...

  6. [模拟]纺车的轮子 Spinning Wheels

    题目链接 题目大意 5个轮子 每个轮子上面有w个缺口 缺口的初始角度是n 宽度是m 每秒转速v 求当他们同时开始转的情况下,什么时候他们的缺口足以让一道阳光通过(就是有重叠部分) 思考 纯模拟题目没啥 ...

  7. USACO-Section3.2 Spinning Wheels【模拟法】

    题目描述: 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知位置开始 ...

  8. USACO-Section 3.2 Spinning Wheels(模拟)

    此处有目录↑ 描述 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知 ...

  9. Python包装用户指南(删减了讨论和新闻部分)

    Python包装用户指南 欢迎使用Python Packaging用户指南,这是一系列教程和参考资料,可帮助您使用现代工具分发和安装Python包. 本指南由Python Packaging Auth ...

最新文章

  1. unity3d : Failed to query D3D11 context for ID3DUserDefinedAnnotation interface (hr = 0x80004002)
  2. Matlab 常用运算符的用法和功能
  3. golang reflect
  4. java toast_Android中Toast的用法简介
  5. mycat两个mysql实例的搭建_Mycat-多实例的搭建
  6. html 中加载字体太慢,前端解决中文字体加载慢的问题
  7. c语言程序设计 高等教育,[高等教育]c语言程序设计.doc
  8. Windows 10 Enterprise 2015 LTSB 2019_免费下载:Intouch软件、Windows操作系统、SQL数据库,Office办公、VB6.0、C#、虚拟机、PLC...
  9. 汇编语言程序设计实验三
  10. u盘被隐藏的文件怎么恢复
  11. android+表情雨,微信8.0.1掉落表情雨2021下载
  12. 分享美容护肤门店预约下单小程序开发制作功能介绍
  13. 倒车轨迹理论实现方法
  14. [ARM 的高级命名术 A32 T32 A64 Thumb Thumb2 AArch32 AArch64]
  15. java解压7z格式的压缩包
  16. 计算机上瘾英语对话,对手机上瘾的英语作文(精选5篇)
  17. 迈微科讯 | 最新科技发展资讯
  18. FlexiTimer2库下载 无偿 分享 仅供学习
  19. 【算法图解】——算法必备
  20. 汉高2019年上半年实现销售额101亿欧元

热门文章

  1. 电机编码器调零步骤_一种伺服系统零点校对的绝对值编码器调零方法与流程
  2. 南卡跟华为降噪蓝牙耳机哪款好用?南卡跟华为降噪耳机测评
  3. 人脸门禁 刷卡模块 支持ISO14443A协议 手机NFC读取响应
  4. 已解决OSError: [WinError 6] 句柄无效。
  5. EMC存储各产品线收集日志
  6. Android自定义View之实现简单炫酷的球体进度球
  7. 志宇-Nginx学习
  8. 为什么我们需要老是加班?
  9. 零基础学编程,如何快速入门?
  10. 热度下的冷思考——智能眼镜到底有没有前途?