本文主要是介绍HDU1006、3037、2084、1176题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近就只有早起做题,做完就上课,周六日可以做些恶心点点的,平时要上课就只有做做DP,数学题什么的了。
HDU1006,十分恶心的一题,实际上我还不是很懂,看着kuangbin大神的代码基本对着拍,没有什么改进。
题目的意思就是时钟里有三条针,时分秒针,两两超过D度就开心,问一天有百分只几是开心的。
思路就是:模拟,区间交,关键,精度问题,这个针算是连续的~不是60秒动一下分针!
/*************************************************************************
> OS : Linux 3.2.0-60-generic #91-Ubuntu
> Author : yaolong
> Mail : dengyaolong@yeah.net
> Created Time: 2014年05月24日 星期六 07:18:50
************************************************************************/#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
struct segment{double l,r;segment(){}segment(double lt,double rt){l=lt;r=rt;}segment(const segment & s){l=s.l;r=s.r;}};
double D;
segment intersect(segment a,segment b){segment p;p.l=max(a.l,b.l);p.r=min(a.r,b.r);if(p.l>=p.r){p.l=p.r=0;}return p;}
segment solve(double a,double b){//D<=a*x+b<=360-D,求出最大区间[l,r]segment p;if(a>0){p.l=(D-b)/a;p.r=(360-D-b)/a;}else{p.r=(D-b)/a;p.l=(360-D-b)/a;}segment s(0,60);return intersect(s,p);}
double cal(int h,int m){
这篇关于HDU1006、3037、2084、1176题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!