hdu 1209 Clock(排序)

题意:按钟表的时针、分针的夹角对5个时间进行升序排序,输出第3个时间

思路:排序

注意:若夹角相同,则按时间进行升序排序

#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;

struct node{
    int ti[2];
    double ang;
}a[5];

int cmp(node a,node b){
    if(a.ang!=b.ang)return a.ang<b.ang;
    if(a.ti[0]!=b.ti[0])return a.ti[0]<b.ti[0];
    return a.ti[1]<b.ti[1];
}

int main(){
    int t,i;
    scanf("%d",&t);
    while(t--){
        for(i=0;i<5;++i){
            scanf("%d:%d",&a[i].ti[0],&a[i].ti[1]);
            if(a[i].ti[0]>12)a[i].ang=(a[i].ti[0]-12)*30+a[i].ti[1]*0.5-a[i].ti[1]*6;
            else a[i].ang=a[i].ti[0]*30+a[i].ti[1]*0.5-a[i].ti[1]*6;
            if(a[i].ang<0)a[i].ang=-a[i].ang;
            if(a[i].ang>180)a[i].ang=360-a[i].ang;
        }
        sort(a,a+5,cmp);
        printf("%02d:%02d\n",a[2].ti[0],a[2].ti[1]);
    }
    return 0;
}

时间: 2024-11-10 07:51:13

hdu 1209 Clock(排序)的相关文章

hdu 1209 Clock

Clock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5870    Accepted Submission(s): 1872 Problem Description There is an analog clock with two hands: an hour hand and a minute hand. The two ha

杭电 HDU 1209 Clock

Clock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5140    Accepted Submission(s): 1589 Problem Description There is an analog clock with two hands: an hour hand and a minute hand. The two h

HDU 1862 EXCEL排序 (排序水题)

Problem Description Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. Input 测试输入包含若干测试用例.每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号.以下有 N 行,每行包含一条学生纪录.每条学生纪录由学号(6位数字,同组测试中没有重复的学号).姓名(不超过8位且不包含空格的字符串).成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开.当读到 N=0 时,全部输入结

hdu 2020 绝对值排序

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2020 题目大意:按照绝对值大小从大到小排序,注意输出两个数之间要用空格隔开,在这里引入一个冒泡排序,两个循环即可! 1 #include <stdio.h> 2 #include <math.h> 3 int main () 4 { 5 int n,a[100],i,j,t; 6 while (scanf("%d",&n),n) 7 { 8 for (i=0

HDU 4857 拓扑排序 优先队列

n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得到的序列就是从大到小的,最后倒序输出就行了. 写这题的时候头好痛阿肚子好痛阿,再也不想熬夜了,一点效率都没有. /** @Date : 2017-09-29 19:29:12 * @FileName: HDU 4857 拓扑排序 + 优先队列.cpp * @Platform: Windows * @

HDU 1209

http://acm.hdu.edu.cn/showproblem.php?pid=1209 水题,按五个时针分针成的锐角从小到大排序,角度相同时间从早到晚,输出中间的那个 时针一小时走30度,一分钟走0.5度,分针一分钟走6度,注意是锐角,大于180要用360减回去,为避免精度出问题统一乘2拒绝小数 #include <iostream> #include <cstdio> #include <cstring> #include <queue> #incl

HDU 5638 拓扑排序+优先队列

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5638 题意: 给你一个DAG图,删除k条边,使得能个得到字典序尽可能小的拓扑排序 题解: 把拓扑排序的算法稍微改一下,如果某个顶点的入度小于k也把它加到优先队列里面去. k减小后队列里面会有些点不满足<=k,直接踢出来就好了. 代码: #include<iostream> #include<cstring> #include<cstdio> #include<

hdu 2647 (拓扑排序 邻接表建图的模板) Reward

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2647 老板给员工发工资,每个人的基本工资都是888,然后还有奖金,然后员工之间有矛盾,有的员工希望比某员工的奖金多,老板满足了所以员工的这种心思,而且老板下午发的总工资最少,问最少是多少?比如 a b 表示a的工资比b要高(高一块钱),当出现a b   b c   c a这种环的时候输出-1 拓扑排序http://www.cnblogs.com/tonghao/p/4721072.html 小指向大

传递 hdu 5961 拓扑排序有无环~

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5961 题目为中文,这里就不描述题意了. 思路: 从题目陈述来看,他将一个有向图用一个邻接矩阵来表示,并且分为两个图P.Q,但是它们是有内在联系的,即:P+Q,抛去方向即为完全图. 题目都是中文,这里就不翻译了.我们可以从题目中知道,如果P.Q均满足传递性,那么P与(Q的反向图)生成的有向图应该无环. 所以,简单一个拓扑排序检查是否有环即可,P.Q合为一张图,跑一遍,这个还是很快的. 时长:3432MS