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. 1
  2. 0 1 0
  3. 0 1 1

样例输出

  1. 6.00

【题解】

  我把这个环复制了三个,把每一个时刻当作环上的每一个点,把环展开成三份。

  分三种情况:

  1、全往顺时针,或者全往逆时针。

  2、先往顺时针,再往逆时针。

  3、先往逆时针,再往顺时针。


  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N = 3e5+;
  4. const int M = ;
  5. int a[N],n;
  6. int main()
  7. {
  8.  
  9. //cout << -1 % 10 << endl ;
  10. ios_base :: sync_with_stdio(false);
  11. cin.tie(NULL) , cout.tie(NULL);
  12. int h , mi , s ;
  13. cin >> n ;
  14. cin >> h >> mi >> s ;
  15. int Start = h * + mi * + s ;
  16. if( Start >= M ) Start -= M ;
  17. int m = ;
  18.  
  19. //cout << "####" << endl;
  20.  
  21. for( int i = ,u,v,w ; i<n ; i++ ){
  22. cin >> u >> v >> w ;
  23. int tmp = (u * + v * + w) ;
  24. if( tmp >= M ) tmp -= M ;
  25. if( Start == tmp ) continue ;
  26. else {
  27. a[m++] = tmp ;
  28. }
  29. }
  30.  
  31. sort( a , a + m );
  32.  
  33. for( int i = ; i < m ; i++ ){
  34. a[i+m] = a[i] + ;
  35. a[i+*m] = a[i] + ;
  36. }
  37. if( m == ){
  38. //printf("####\n");
  39. printf("0.00\n");
  40. }else{
  41. int L = m+ , R = m+ ;
  42. Start += ;
  43. //printf("###\n");
  44. for( int i = ; i < * m ; i++ ){
  45. if( a[i] < Start && Start < a[i+] ){
  46. L = i , R = i + ;
  47. break ;
  48. }
  49. }
  50. //printf("( %d , %d ) , a[L] = %d , a[R] = %d \n",L,R,a[L],a[R]);
  51.  
  52. //printf("%d , %d \n", L , R ) ;
  53. int t1 = (Start-a[L]) >= M ? (Start-a[L]) - M : Start-a[L] ;
  54. int t2 = (a[R]-Start) >= M ? (a[R]-Start) - M : a[R]-Start ;
  55. //t1 = ( t1 + M ) % M ;
  56. //t2 = ( t2 + M ) % M ;
  57. //printf("%d\n",M);
  58. //printf("%d %d\n",t1,t2) ;
  59. //printf("%d %d\n",M - t1 , M - t2 );
  60. int ans = min( (M - t1) , (M - t2) );
  61. //printf("%d %d - %d = %d , %d - %d = %d \n",ans, Start , a[L] , (Start-a[L]) , a[R] , Start , (a[R]-Start) );
  62. //printf("%d\n",ans);
  63. for( int i = L ; L - m + < i ; i-- ){
  64. ans = min( ans , (Start - a[i]) * + a[i+m-] - Start );
  65. }
  66. for( int i = R ; i < R + m - ; i++ ){
  67. ans = min( ans , (a[i] - Start) * + Start - a[i-m+] );
  68. }
  69. ans = ans * ;
  70. printf("%d.00\n",ans);
  71. }
  72. return ;
  73. }

【模拟】Clock的更多相关文章

  1. 【算法笔记】B1026 程序运行时间

    1026 程序运行时间 (15 分) 要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗 ...

  2. 在Spring Boot中使用Docker在测试中进行高级功能测试

    最近又学到了很多新知识,感谢优锐课老师细致地讲解,这篇博客记录下自己所学所想. 想更多地了解Spring Boot项目中的功能测试吗?这篇文章带你了解有关在测试中使用Docker容器的更多信息. 本文 ...

  3. 模拟 HDOJ 5387 Clock

    题目传送门 /* 模拟:这题没啥好说的,把指针转成角度处理就行了,有两个注意点:结果化简且在0~180内:小时13点以后和1以后是一样的(24小时) 模拟题伤不起!计算公式在代码内(格式:hh/120 ...

  4. UVALive - 6269 Digital Clock 模拟

    UVALive - 6269 Digital Clock 题意:时钟坏了,给你一段连续的时间,问你现在可能的时间是多少. 思路:直接模拟,他妈的居然这场就跪在了这题,卧槽,他妈的就在111行,居然多打 ...

  5. ZOJ 1122 Clock(模拟)

    Clock Time Limit: 2 Seconds      Memory Limit: 65536 KB You are given a standard 12-hour clock with ...

  6. HDU 5705 Clock(模拟,分类讨论)

    Clock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submi ...

  7. HDOJ 5387 Clock 水+模拟

    Clock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Subm ...

  8. HDU 5387 Clock (MUT#8 模拟)

    [题目链接]:pid=5387">click here~~ [题目大意]给定一个时间点.求时针和分针夹角,时针和秒针夹角,分针和秒针夹角 模拟题,注意细节 代码: #include&l ...

  9. UVALive 6269 Digital Clock --枚举,模拟

    题意:说不清楚,自己看吧,太恶心. 这题真是SB了,当时看了一下以为乱搞就好了,于是开始动手拍,结果拍了好几个小时都没拍出来,而且越想越想不通,直接把自己绕进去了,结果gg了. 总结:甭管什么题,想清 ...

随机推荐

  1. 【纸模】六角大王 Super 5.6 CHS 简体中文版 U20080725+[手册]窗口与工具的概要(PDF格式)

    六角大王5.6简体中文版中文化:star21 主界面<ignore_js_op> 人体生成模式<ignore_js_op> 动画<ignore_js_op> < ...

  2. Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'kindergarten.n.stuMChkTime' which is not functionally dependent on columns in GROUP BY clause; this is in

    错误原因: ​ sql _mode中only _full _group _by不兼容的问题 解决思路: ​ 既然是only _full _group _by不兼容,那就把它去掉就好啦 show var ...

  3. python 设计模式之适配器模式 Adapter Class/Object Pattern

    #写在前面 看完了<妙味>和<华医>,又情不自禁的找小说看,点开了推荐里面随机弹出的<暗恋.橘生淮南>,翻了下里面的评论,有个读者从里面摘了一段自己很喜欢的话出来, ...

  4. 海思3531添加移远EC20 4g模块(转)

    源: 海思3531添加移远EC20 4g模块 Hi3798移植4G模块(移远EC20)

  5. vmware配置双网卡

    最近在学习使用iptables做网关服务器,即SNAT设置 我们的宿主机有两块网卡,地址分别是: 192.168.6.108/24 192.168.66.119/24 我们的目标是在虚拟机VMware ...

  6. flutter 保持页面状态

    import 'package:flutter/material.dart'; import 'KeepAliveDemo.dart'; void main() => runApp(MyApp( ...

  7. ModSecurity:一款优秀的开源WAF

    一.ModSecurity3.0介绍 ModSecurity是一个开源的跨平台Web应用程序防火墙(WAF)引擎,用于Apache,IIS和Nginx,由Trustwave的SpiderLabs开发. ...

  8. 详解 C++11 lambda表达式

    详解 C++11 lambda表达式   lambda表达式是函数式编程的基础.咱对于函数式编程也没有足够的理解,因此这里不敢胡言乱语,有兴趣的可以自己查找相关资料看下.这里只是介绍C++11中的la ...

  9. 003-结构型-06-组合模式(Composite)

    一.概述 将对象组合成树形结构以表示“部分一整体”的层次结构 组合模式是为了表示那些层次结构,同时部分和整体也可能是一样的结构,常见的如文件夹或者树. 通过递归手段来构造树形的对象结构,并可以通过一个 ...

  10. 将一个多表关联的条件查询中的多表通过 create select 转化成一张单表的sql、改为会话级别临时表 【我】

    将一个多表关联的条件查询中的多表通过 create   select  转化成一张单表的sql 将结果改为创建一个会话级别的临时表: -- 根据下面这两个sql CREATE TABLE revenu ...