USACO Spinning Wheels
洛谷 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
Sample Output
#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相关推荐
- 洛谷 P2728 纺车的轮子 Spinning Wheels
P2728 纺车的轮子 Spinning Wheels 题目背景 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标 ...
- 洛谷P2728 纺车的轮子 Spinning Wheels
P2728 纺车的轮子 Spinning Wheels 29通过 66提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目背景 一架纺车 ...
- 【USACO题库】3.2.3 Spinning Wheels纺车的轮子
题目描述 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知位 ...
- uscao Spinning Wheels
模拟题 /* ID: jinbo wu TASK: spin LANG:C++ */ #include<bits/stdc++.h> using namespace std; //这题本来 ...
- P2728 纺车的轮子 Spinning Wheels(枚举)
展开 题目背景 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知位置 ...
- [模拟]纺车的轮子 Spinning Wheels
题目链接 题目大意 5个轮子 每个轮子上面有w个缺口 缺口的初始角度是n 宽度是m 每秒转速v 求当他们同时开始转的情况下,什么时候他们的缺口足以让一道阳光通过(就是有重叠部分) 思考 纯模拟题目没啥 ...
- USACO-Section3.2 Spinning Wheels【模拟法】
题目描述: 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知位置开始 ...
- USACO-Section 3.2 Spinning Wheels(模拟)
此处有目录↑ 描述 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知 ...
- Python包装用户指南(删减了讨论和新闻部分)
Python包装用户指南 欢迎使用Python Packaging用户指南,这是一系列教程和参考资料,可帮助您使用现代工具分发和安装Python包. 本指南由Python Packaging Auth ...
最新文章
- unity3d : Failed to query D3D11 context for ID3DUserDefinedAnnotation interface (hr = 0x80004002)
- Matlab 常用运算符的用法和功能
- golang reflect
- java toast_Android中Toast的用法简介
- mycat两个mysql实例的搭建_Mycat-多实例的搭建
- html 中加载字体太慢,前端解决中文字体加载慢的问题
- c语言程序设计 高等教育,[高等教育]c语言程序设计.doc
- Windows 10 Enterprise 2015 LTSB 2019_免费下载:Intouch软件、Windows操作系统、SQL数据库,Office办公、VB6.0、C#、虚拟机、PLC...
- 汇编语言程序设计实验三
- u盘被隐藏的文件怎么恢复
- android+表情雨,微信8.0.1掉落表情雨2021下载
- 分享美容护肤门店预约下单小程序开发制作功能介绍
- 倒车轨迹理论实现方法
- [ARM 的高级命名术 A32 T32 A64 Thumb Thumb2 AArch32 AArch64]
- java解压7z格式的压缩包
- 计算机上瘾英语对话,对手机上瘾的英语作文(精选5篇)
- 迈微科讯 | 最新科技发展资讯
- FlexiTimer2库下载 无偿 分享 仅供学习
- 【算法图解】——算法必备
- 汉高2019年上半年实现销售额101亿欧元