Clock

题目描述

wls有一个钟表,当前钟表指向了某一个时间。
又有一些很重要的时刻,wls想要在钟表上复现这些时间(并不需要依次复现)。我们可以顺时针转动秒针,也可以逆时针转动秒针,分针和时针都会随着秒针按规则转动,wls想知道秒针至少转动多少角度可以使每个时刻至少都会被访问一次。
注意,时钟上的一种时针分针秒针的组合,可以代表两个不同的时间。

输入

第一行一个整数n代表有多少个时刻要访问。
第二行三个整数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 ;
}

最新文章

  1. Information retrieval信息检索
  2. OpenGL图元的颜色属性
  3. centos7.2下编译安装git
  4. uva 10673 Play with Floor and Ceil
  5. 配置centos防火墙(iptables)开放80端口
  6. HDU 5821 Ball (排序)
  7. How to: Reading an ini config file from a batch file
  8. GWT事件处理
  9. excel poi 文件导出,支持多sheet、多列自动合并。
  10. navigationBar 背景色
  11. 多图片/文件上传 - SwfUpload/PlUpload
  12. WeMall微信商城源码插件会员卡代码详情
  13. ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
  14. DXGI快速截屏录屏技术
  15. Jenkins - ERROR: Exception when publishing, exception message [Failure] Build step &#39;Send build artifacts over SSH&#39; changed build result to UNSTABLE
  16. Machine Learning 算法可视化实现1 - 线性回归
  17. ubuntu16.04中设置python3
  18. [skill][vim] 常用技巧与配置
  19. python3基础:基本语句(2017)
  20. node+koa中转层开发实践总结

热门文章

  1. Spring中集成Ehcache缓存
  2. Java IO系统--RandomAccessFile
  3. Elasticsearch和Head插件安装(转)
  4. 算力和AI-ZILLIZ
  5. 生成model笔记
  6. Python3基础 函数 参数 多个参数都有缺省值,需要指定参数进行赋值
  7. 利用postman生成各种编程语言的代码
  8. 转 mysql awr 报告
  9. DEBUG技巧里的问题1 双击某个变量不能显示
  10. npm publish 一直报错 404