【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系统共存,修改默认启动
一个mint,一个ubuntu,想要默认启动ubuntu,那么咱们这么来:修改启动顺序,我们需要修改Ubuntu的GRUB配置文件.使用常见的编辑程序如"gedit"就可以很方便 ...
- Mybatis框架的多对一关联关系(六)
一.一对多的关联映射 一对多关联查询多表数据 1接口 public interface IDeptDAO { //根据部门编号查询该部门单个查询 public Emp getEmpById(Integ ...
- 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(前言)
一直希望能够搭建一个完整的,基础Web框架,方便日后接一些外快的时候,能够省时省力,终于花了一周的时间,把这个东西搞定了.特此写下此博客,一来是纪念,二来是希望能够为别人提供方便.顺带说一下,恩,组合 ...
- DOM加载过程中ready和load的区别
在浏览器地址栏输入URL地址,浏览器开始加载页面时,有以下几个过程 1.浏览器开始解析HTML文档 2. 浏览器遇到HTML文档中的<script>元素以及CSS样式文件,并且没有asyn ...
- jQuery css3仿游戏网站右键环形菜单
效果展示 http://hovertree.com/texiao/jquery/86/ PC用户右键弹出环形菜单. 手机用户扫描二维码: 长安可以弹出环形菜单. 转自:http://hovertree ...
- C++02.访问控制
1.class是struct的扩展,它包括数据成员和成员函数. 2.在C++中,有三种访问权限: (1)private:默认,只供类内部的函数使用. (2)public:类外的程序可以使用. (3)p ...
- ASP.NET MVC 5 04 - 控制器
PS: 唉.本来这一篇前几天早就应该发了的,可是谁每月没有那么几天啊... 呵呵.开个玩笑.反正就是各种烦气,所以也就一直没上来继续发了. 年底了,摆正一下心态吧.好好干,整点钱,过年回家能跟亲朋好友 ...
- monkey命令选项参考
基本参数: --help 打印帮助消息 -v 可以在命令行中出现多次,每次一个-V选项都会增加monkey向命令行打印输出的详细级别.默认的级别0只会打印启动信息. ...
- javascript判断数组中是否包含某个元素
//判断数组array中是否包含元素obj的函数,包含则返回true,不包含则返回false function array_contain(array, obj){ for (var i = 0; i ...
- 【Windows编程】系列第六篇:创建Toolbar与Statusbar
上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮.比如典 ...