【USACO 3.2】Spinning Wheels(同心圆旋转)
题意:
5个同心圆,告诉你角速度,每个圆有1至5个楔,告诉你起点和宽度。求最早时间如果有的话使得存在某个角度经过5个圆的楔。
题解:
最重要的是要意识到,360秒钟后,每个圆都回到了原来的位置。
我的具体解法:对于时间t,dfs一遍,f[i]==0表示角度i 是楔,dfs(i)表示对第i个圆遍历360个角度,哪个角度不为楔,就置f为1,如果存在f为0,就继续dfs下一个圆,如果到了dfs(6)说明该时间是存在这样的角度的。
官方题解是:对于时间t,遍历每一个角度,对于该角度,用一个二进制储存五个圆是否是楔。如果都是,则该时间就是答案。
代码:
原来的不好看,按题解写过一份,结果在for里面想要break出外面的while,傻掉惹。
/*
TASK: spin
LANG:C++
URL:
*/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#define in(s) freopen(#s".in","r",stdin);freopen(#s".out","w",stdout);
using namespace std;
int pos[6],speed[6],num[6],wedge[6][6],len[6][6];
int active[400];
int main() {
in(spin);
for(int i=0;i<5;i++){
scanf("%d %d",speed+i,num+i);
for(int j=1;j<=num[i];j++)
scanf("%d %d",&wedge[i][j],&len[i][j]);
}
int t;
for(t=0;t<360;t++){
memset(active,0,sizeof active);
int i;
for(i=0;i<5;i++){
for(int j=1;j<=num[i];j++){
int wpos=pos[i]+wedge[i][j];
for(int k=0;k<=len[i][j];k++){
active[(wpos+k)%360]|=(1<<i);
}
}
}
for(i=0;i<360&&active[i]!=31;i++);
if(active[i]==31)break;
for(i=0;i<5;i++)
pos[i]=(pos[i]+speed[i])%360;
}
if(t!=360) printf("%d\n",t);
else puts("none");
return 0;
}
【USACO 3.2】Spinning Wheels(同心圆旋转)的更多相关文章
- USACO Spinning Wheels
洛谷 P2728 纺车的轮子 Spinning Wheels https://www.luogu.org/problemnew/show/P2728 JDOJ 1800: Spinning Wheel ...
- 洛谷P2728 纺车的轮子 Spinning Wheels
P2728 纺车的轮子 Spinning Wheels 29通过 66提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目背景 一架纺车 ...
- 洛谷 P2728 纺车的轮子 Spinning Wheels
P2728 纺车的轮子 Spinning Wheels 题目背景 一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标 ...
- 17.1拓展之纯 CSS 创作炫酷的同心圆旋转动画
效果地址:https://codepen.io/flyingliao/pen/ebjEMm?editors=1100 HTML代码: <div class="loader"& ...
- Canvas 同心圆旋转示例解析
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- spin_USACO
Spinning Wheels1998 ACM NE Regionals Each of five opaque spinning wheels has one or more wedges cut ...
- 【repost】JavaScript 基本语法
JavaScript 基本语法,JavaScript 引用类型, JavaScript 面向对象程序设计.函数表达式和异步编程 三篇笔记是对<JavaScript 高级程序设计>和 < ...
- poj2187 旋转卡(qia)壳(ke)
题意:求凸包的直径 关于对踵点对.旋转卡壳算法的介绍可以参考这里: http://www.cnblogs.com/Booble/archive/2011/04/03/2004865.html http ...
- 【USACO】clocks 遇到各种问题 最后还是参考别人的思路
//放在USACO上一直通不过 不知道哪里出了问题 输出的n总是等于1 但是BFS递归的次数是对的 <----这个问题解决了 局部变量压入queue中返回就是对的了 #include<io ...
随机推荐
- Linux服务器技术收集
如何说服运维选择 Debian/Ubuntu 而不是 CentOS? 服务器操作系统应该选择 Debian/Ubuntu 还是 CentOS? HHVM 是如何提升 PHP 性能的?
- C语言辗转相除法求2个数的最小公约数
辗转相除法最大的用途就是用来求两个数的最大公约数. 用(a,b)来表示a和b的最大公约数. 有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c). (证明过程请参考其它资料) 例 ...
- No-args constructor for class X does not exist. Register an InstanceCreator with Gson for this type to fix this problem.
Gson解析JSON字符串时出现了下面的错误: No-args constructor for class X does not exist. Register an InstanceCreator ...
- JavaScript--面向对象--猜拳游戏
//html代码 <!doctype html> <html> <head> <meta charset="UTF-8"> < ...
- Atitit.可视化与报表原理与概论
Atitit.可视化与报表原理与概论 1. 信息可视化1 2. Gui可视化1 3. 报表系统(三大图表,金字塔,组织结构图等)1 4. <可视化数据>目录3 5. 可视化的具体实现(c ...
- Atitit 延迟绑定架构法attilax总结
Atitit 延迟绑定架构法attilax总结 配置文件的延迟绑定1 Api属性与方法的回调延迟绑定1 后期绑定和前期绑定2 延迟调用2 用 Java 语言延迟绑定2 什么是推迟绑定 C++3 配置文 ...
- Waud.js – 使用HTML5降级处理的Web音频库
Waud.js 是一个Web音频库,有一个HTML5音频降级处理方案. 它允许您利用Web音频API为你的Web应用程序控制音频功能.在不支持Web音频API的非现代浏览器使用HTML5音频降级方案. ...
- jQuery css3仿游戏网站右键环形菜单
效果展示 http://hovertree.com/texiao/jquery/86/ PC用户右键弹出环形菜单. 手机用户扫描二维码: 长安可以弹出环形菜单. 转自:http://hovertree ...
- SQL Sever 博客文章目录(2016-07-06更新)
SQL Server方面的博客文章也陆陆续续的写了不少了,顺便也将这些知识点整理.归纳一下下.方便自己和他人查看. MS SQL 数据类型 三大数据库对比研究系列--数据类型 MS SQL 表和视图 ...
- apachetop 实时监测web服务器运行状况
apachetop 实时监测web服务器运行状况 我们经常会需要知道服务器的实时监测服务器的运行状况,比如哪些 URL 的访问量最大,服务器每秒的请求数,哪个搜索引擎正在抓取我们网站?面对这些问题 ...