题意:

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(同心圆旋转)的更多相关文章

  1. USACO Spinning Wheels

    洛谷 P2728 纺车的轮子 Spinning Wheels https://www.luogu.org/problemnew/show/P2728 JDOJ 1800: Spinning Wheel ...

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

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

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

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

  4. 17.1拓展之纯 CSS 创作炫酷的同心圆旋转动画

    效果地址:https://codepen.io/flyingliao/pen/ebjEMm?editors=1100 HTML代码: <div class="loader"& ...

  5. Canvas 同心圆旋转示例解析

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. spin_USACO

    Spinning Wheels1998 ACM NE Regionals Each of five opaque spinning wheels has one or more wedges cut ...

  7. 【repost】JavaScript 基本语法

    JavaScript 基本语法,JavaScript 引用类型, JavaScript 面向对象程序设计.函数表达式和异步编程 三篇笔记是对<JavaScript 高级程序设计>和 < ...

  8. poj2187 旋转卡(qia)壳(ke)

    题意:求凸包的直径 关于对踵点对.旋转卡壳算法的介绍可以参考这里: http://www.cnblogs.com/Booble/archive/2011/04/03/2004865.html http ...

  9. 【USACO】clocks 遇到各种问题 最后还是参考别人的思路

    //放在USACO上一直通不过 不知道哪里出了问题 输出的n总是等于1 但是BFS递归的次数是对的 <----这个问题解决了 局部变量压入queue中返回就是对的了 #include<io ...

随机推荐

  1. Java Swing interview

    http://www.careerride.com/Swing-AWT-Interview-Questions.aspx   Swing interview questions and answers ...

  2. Backbone中的model和collection在做save或者create操作时, 如何选择用POST还是PUT方法 ?

    Model和Collection和后台的WEB server进行数据同步非常方便, 都只需要在实行里面添加一url就可以了,backbone会在model进行save或者collection进行cre ...

  3. 遍历map的四种方法

    方法一  在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用.注意:for-each循环在Java 5中被引入所以该方法只能应用于j ...

  4. 深入理解DOM节点关系

    × 目录 [1]父级属性 [2]子级属性 [3]同级属性[4]包含方法[5]关系方法 前面的话 DOM可以将任何HTML描绘成一个由多层节点构成的结构.节点分为12种不同类型,每种类型分别表示文档中不 ...

  5. VBA 格式化字符串 - Format大全

    VBA 格式化字符串 VBA 的 Format 函数与工作表函数 TEXT 用法基本相同,但功能更加强大,许多格式只能用于VBA 的 Format 函数,而不能用于工作表函数 TEXT ,以下是本人归 ...

  6. 用collectionview实现瀑布流-转(后面附demo,供参考)

    算法总体思路 先说一下总体上的思路.既然图片的大小.位置各不一样,我们很自然地会想到需要算出每个item的frame,然后把这些frame赋值给当前item的UICollectionViewLayou ...

  7. 海康威视,大华,宇视 的视频监控iOS Demo

    原谅我只提供一个链接,我在这里写了两遍,最后加个链接页面卡死了,下面的demo,最好真机调试.(写博客还是在别的地方写复制到这里比较好!) 一个画面可以做,4个,9个,16个画面原理是一样的,集合到自 ...

  8. pip安装指定版本的package

    起因 最近到一个项目组,用了一套高大上的运维工具来搭建开发环境. 有vagrant控制VirtualBox启动虚拟机.有ansible来运行playbook初始化环境. 然后遇到了一个坑,项目现有的p ...

  9. 优化SQLServer--表和索引的分区(二)

    简介 之前一篇简单的介绍了语法和一些基本的概念,隔了一段时间,觉得有必要细致的通过实例来总结一下这部分内容.如之前所说,分区就是讲大型的对象(表)分成更小的块来管理,基本单位是行.这也就产生了很大优势 ...

  10. TCP三次握手/四次挥手详解

    一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...