【模拟】Clock
Clock
题目描述
又有一些很重要的时刻,wls想要在钟表上复现这些时间(并不需要依次复现)。我们可以顺时针转动秒针,也可以逆时针转动秒针,分针和时针都会随着秒针按规则转动,wls想知道秒针至少转动多少角度可以使每个时刻至少都会被访问一次。
注意,时钟上的一种时针分针秒针的组合,可以代表两个不同的时间。
输入
第二行三个整数h,m,s分别代表当前时刻的时分秒。
最后n行每一行三个整数hi,mi,si代表每个要访问的时刻的时分秒。
1≤n≤86,400
0≤h,hi<24
0≤m,mi,s,si<60
输出
样例输入
1
0 1 0
0 1 1
样例输出
6.00
【题解】
我把这个环复制了三个,把每一个时刻当作环上的每一个点,把环展开成三份。
分三种情况:
1、全往顺时针,或者全往逆时针。
2、先往顺时针,再往逆时针。
3、先往逆时针,再往顺时针。
#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+;
const int M = ;
int a[N],n;
int main()
{ //cout << -1 % 10 << endl ;
ios_base :: sync_with_stdio(false);
cin.tie(NULL) , cout.tie(NULL);
int h , mi , s ;
cin >> n ;
cin >> h >> mi >> s ;
int Start = h * + mi * + s ;
if( Start >= M ) Start -= M ;
int m = ; //cout << "####" << endl; for( int i = ,u,v,w ; i<n ; i++ ){
cin >> u >> v >> w ;
int tmp = (u * + v * + w) ;
if( tmp >= M ) tmp -= M ;
if( Start == tmp ) continue ;
else {
a[m++] = tmp ;
}
} sort( a , a + m ); for( int i = ; i < m ; i++ ){
a[i+m] = a[i] + ;
a[i+*m] = a[i] + ;
}
if( m == ){
//printf("####\n");
printf("0.00\n");
}else{
int L = m+ , R = m+ ;
Start += ;
//printf("###\n");
for( int i = ; i < * m ; i++ ){
if( a[i] < Start && Start < a[i+] ){
L = i , R = i + ;
break ;
}
}
//printf("( %d , %d ) , a[L] = %d , a[R] = %d \n",L,R,a[L],a[R]); //printf("%d , %d \n", L , R ) ;
int t1 = (Start-a[L]) >= M ? (Start-a[L]) - M : Start-a[L] ;
int t2 = (a[R]-Start) >= M ? (a[R]-Start) - M : a[R]-Start ;
//t1 = ( t1 + M ) % M ;
//t2 = ( t2 + M ) % M ;
//printf("%d\n",M);
//printf("%d %d\n",t1,t2) ;
//printf("%d %d\n",M - t1 , M - t2 );
int ans = min( (M - t1) , (M - t2) );
//printf("%d %d - %d = %d , %d - %d = %d \n",ans, Start , a[L] , (Start-a[L]) , a[R] , Start , (a[R]-Start) );
//printf("%d\n",ans);
for( int i = L ; L - m + < i ; i-- ){
ans = min( ans , (Start - a[i]) * + a[i+m-] - Start );
}
for( int i = R ; i < R + m - ; i++ ){
ans = min( ans , (a[i] - Start) * + Start - a[i-m+] );
}
ans = ans * ;
printf("%d.00\n",ans);
}
return ;
}
【模拟】Clock的更多相关文章
- 【算法笔记】B1026 程序运行时间
1026 程序运行时间 (15 分) 要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗 ...
- 在Spring Boot中使用Docker在测试中进行高级功能测试
最近又学到了很多新知识,感谢优锐课老师细致地讲解,这篇博客记录下自己所学所想. 想更多地了解Spring Boot项目中的功能测试吗?这篇文章带你了解有关在测试中使用Docker容器的更多信息. 本文 ...
- 模拟 HDOJ 5387 Clock
题目传送门 /* 模拟:这题没啥好说的,把指针转成角度处理就行了,有两个注意点:结果化简且在0~180内:小时13点以后和1以后是一样的(24小时) 模拟题伤不起!计算公式在代码内(格式:hh/120 ...
- UVALive - 6269 Digital Clock 模拟
UVALive - 6269 Digital Clock 题意:时钟坏了,给你一段连续的时间,问你现在可能的时间是多少. 思路:直接模拟,他妈的居然这场就跪在了这题,卧槽,他妈的就在111行,居然多打 ...
- ZOJ 1122 Clock(模拟)
Clock Time Limit: 2 Seconds Memory Limit: 65536 KB You are given a standard 12-hour clock with ...
- HDU 5705 Clock(模拟,分类讨论)
Clock Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submi ...
- HDOJ 5387 Clock 水+模拟
Clock Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...
- HDU 5387 Clock (MUT#8 模拟)
[题目链接]:pid=5387">click here~~ [题目大意]给定一个时间点.求时针和分针夹角,时针和秒针夹角,分针和秒针夹角 模拟题,注意细节 代码: #include&l ...
- UVALive 6269 Digital Clock --枚举,模拟
题意:说不清楚,自己看吧,太恶心. 这题真是SB了,当时看了一下以为乱搞就好了,于是开始动手拍,结果拍了好几个小时都没拍出来,而且越想越想不通,直接把自己绕进去了,结果gg了. 总结:甭管什么题,想清 ...
随机推荐
- OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)
一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...
- [转载]IBM公司发布了最新的power7服务器p750 p770 p780
[转载]IBM公司发布了最新的power7服务器p750 p770 p780 (2015-06-11 12:54:17) 转载▼ http://blog.sina.com.cn/s/blog_6f52 ...
- viewSwitcher 切换视图
通过VIewSwitcher切换视图.这个用到了baseAdapter,还是不太懂,先记个笔记. <RelativeLayout xmlns:android="http://schem ...
- shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...
- Access 字段拼接(UPDATE 数据追加)
今天遇到一个需求,在Access数据库中,有个net_id 字段,它的值是由 “jjgrape” 这个字符串和 id 字段组成的,也就是说,要把 ‘jjgrape’ 和 id 字段拼接起来: 那怎么拼 ...
- ROS tf基础使用知识
博客参考:https://www.ncnynl.com/archives/201702/1306.html ROS与C++入门教程-tf-坐标变换 说明: 介绍在c++实现TF的坐标变换 概念: Co ...
- osg include lib -computer1
E:\\OpenSceneGraph\\OpenSceneGraph_3_6_install\\lib E:\\OpenSceneGraph\\3rdParty\\v140-x64\\lib Open ...
- 代理类和AOP
客户端不用调用目标对象了,直接调用代理类.最终目标方法还是去实行了. 代理类的每个方法调用目标类的相同方法,并且在调用方法时候加上系统功能的代码 代理和目标实现了相同的接口,有相同的方法.通过接口进行 ...
- Linux记录-批量安装ssh(转载)
首先,需要检查expect是否安装:rpm -qa|grep expect 然后,在操作机上创建公钥:ssh-keygen 一路回车即可 创建好之后到/root/.ssh/下就可以看到id开头的2个文 ...
- Laya的场景以及场景的加载
参考: Laya项目发布详解 Laya2.0 内嵌模式.加载模式.分离模式.文件模式的场景加载创建和场景打开关闭 版本2.1.1.1 白鹭中的场景是exml制作,发布后exml代码都会打包到defau ...