hdu_1006 Tick and Tick(暴力模拟)
hdu1006
标签(空格分隔): 暴力枚举
好久没有打题了,退队了有好几个月了,从心底不依赖那个人了,原来以为的爱情戏原来都只是我的独角戏。之前的我有时候好希望有个人出现,告诉自己去哪里,做什么,哪种仅仅是渴望被爱的感觉都很美好,大概是因为离开了acm也不再依赖他所以现在我自己告诉自己,自己要去哪里,做什么,突然感觉很踏实,也不那么累了。现在我想把之前没有做好的做好,虽然我已经失去了最好的时机,但还是要在最忙的时间里抽出来做一些曾经有所遗憾的事情。
不多说了,上题!
开始推了半天公式,发现这个题要暴力模拟
其实是很简单的,要踏踏实实地反复去读条件,想清楚指针转动的情况就很简单了
/* 秒针的速度s=6°/s,分针是m=1/10°/s,时针是h=1/120°/s;
相对速度s_m=59/10°/s,s_h=719/120°/s,m_h=120/11°/s;
所以相差一度所需要的时间sm=10/59 s/°,sh=120/719 s/°,mh=120/11 s/°;
差360°的周期为cycle_sm=3600/59 s,cycle_sh=43200/719 s,cycle_mh=43200/11 s;
假设开始时从12点整开始,旋转至再均回到12点(即时针转一圈)
*/
double max(double a,double b,double c){
return a>b?(a>c?a:c):(b>c?b:c);}
double min(double a,double b,double c){
return a<b?(a<c?a:c):(b<c?b:c);}
#include <stdio.h>
int main()
{
double d;
double cycle_sm=3600./59.;
double cycle_sh=43200./719.;
double cycle_mh=43200./11.;//这三行是时针、分针、秒针两两相遇的周期
double sum;
double happys,happye;//开始happy和结束happy的时刻
double sm=10./59.,sh=120./719.,mh=120./11.;//相差一度所需要的时间
double d_sm,d_sh,d_mh,not_d_sm,not_d_sh,not_d_mh;//表示相差d°及以上的时刻和不再相差d°及以上的时刻
while(scanf("%lf",&d)!=EOF&&d!=-1)
{
sum=0;
d_sm=sm*d; not_d_sm=cycle_sm-d_sm;
d_sh=sh*d; not_d_sh=cycle_sh-d_sh;
d_mh=mh*d; not_d_mh=cycle_mh-d_mh;
happys=max(d_sm,d_sh,d_mh);
happye=min(not_d_sm,not_d_sh,not_d_mh);
while(happys<=43200&&happye<=43200)//43200是时针针转一圈的秒数
{
happys=max(d_sm,d_sh,d_mh);//两两之间最后一个满足相差d°及以上的条件视为开始happy时刻
happye=min(not_d_sm,not_d_sh,not_d_mh);//两两之间第一个不再满足相差d°及以上视为结束happy的时刻
if(happys<happye)
sum+=happye-happys;//如果end的时间比start的晚,由sum记录并累积
if(happye==not_d_sm)
{d_sm+=cycle_sm;not_d_sm+=cycle_sm;}
else if(happye==not_d_sh)
{d_sh+=cycle_sh;not_d_sh+=cycle_sh;}
else if(happye==not_d_mh)
{d_mh+=cycle_mh;not_d_mh+=cycle_mh;}//happy时间end后最慢的指针要提前一个周期才能让比它快的再次追上
}
printf("%.3lf\n",sum/43200*100);
}
return 0;
}
‘
hdu_1006 Tick and Tick(暴力模拟)的更多相关文章
- hdu 1006 Tick and Tick 有技巧的暴力
Tick and Tick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU 1006 Tick and Tick 时钟指针问题
Tick and Tick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- bnuoj 20832 Calculating Yuan Fen(暴力模拟)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=20832 [题意]: 给你一串字符串,求一个ST(0<ST<=10000),对字符串中字符 ...
- POJ 1013 小水题 暴力模拟
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35774 Accepted: 11 ...
- hdu1006 Tick and Tick
原题链接 Tick and Tick 题意 计算时针.分针.秒针24小时之内三个指针之间相差大于等于n度一天内所占百分比. 思路 每隔12小时时针.分针.秒针全部指向0,那么只需要计算12小时内的百分 ...
- HDU 1006 Tick and Tick(时钟,分钟,秒钟角度问题)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1006 Tick and Tick Time Limit: 2000/1000 MS (Java/Oth ...
- hihoCoder #1871 : Heshen's Account Book-字符串暴力模拟 自闭(getline()函数) (ACM-ICPC Asia Beijing Regional Contest 2018 Reproduction B) 2018 ICPC 北京区域赛现场赛B
P2 : Heshen's Account Book Time Limit:1000ms Case Time Limit:1000ms Memory Limit:512MB Description H ...
- 美团2018年CodeM大赛-资格赛 分数 暴力模拟
链接:https://www.nowcoder.com/acm/contest/138/D来源:牛客网 小胖参加了人生中最重要的比赛——MedoC资格赛.MedoC的资格赛由m轮构成,使用常见的“加权 ...
- hdu 1006 Tick and Tick
Tick and Tick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
随机推荐
- mvn命令笔记
#发布到本地仓库 mvn deploy -DaltDeploymentRepository=snapshots::default::http://mvnrepo.xxx.com/mvn/snapsho ...
- HBase0.98使用ReplicationAdmin管理集群同步
公司datalink平台负责从各种数据源读取数据并同步到其他的同步或者异构数据源,最近增加的HBase的reader利用到了Hbase的Replication特性. 正常情况下,我们配置HBase的R ...
- Cat 跨线程之 ForkedTransaction 用法和原理分析
代码 package com.dianping.cat.message.internal; import com.dianping.cat.Cat; import com.dianping.cat.m ...
- 发布 Google Chrome插件教程
换个视角,世界不一样.嘘~~~ 如果你会使用js的话,那么你就可以自己动手写一个chrome插件,而且非常容易.google是一个全球化的平台,想想自己的程序被世界人民所使用,是不是很激动? 注册开发 ...
- 虚拟机下linux系统安装nginx
近在windows虚机下安装nginx,也遇到部分问题,写篇随笔总结一下 一.安装虚机 windows下安装虚拟机我就不说了,一搜一大把,一直下一步就ok了 二. 打开虚拟安装nginx 1.选择版本 ...
- KandQ:单例模式的七种写法及其相关问题解析
设计模式中的单例模式可以有7种写法,这7种写法有各自的优点和缺点: 代码示例(java)及其分析如下: 一.懒汉式 public class Singleton { private static Si ...
- 妙味课堂:JavaScript初级--第12课:json与数组
1.json数据格式及json语法 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- Xamarin 简单的网络请求
//try //{ // var httpReq = (HttpWebRequest)HttpWebRequest.Create(new Uri(re ...
- C# DataTable抽取Distinct数据(不重复数据)
http://blog.csdn.net/jyh_jack/article/details/17959821 DataTable dataTable; DataView dataView = data ...
- ActiveReports 6:如何升级旧版本的项目
如果现在的项目使用的是ActiveReports for .NET 3.0,那么有两种升级方式: 一是使用ActiveReports 6.0附带的转换工具(参见下面"升级ActiveRepo ...