HDU1029时钟(排序)
题意:是用两个指针的一个模拟时钟的时针和分针。两个指针形成一个角度。角度测量两个指针之间的最小角度。两只手之间的角度是大于或等于0,且小于或等于180度的度量。由于一个序列的五个不同的写入时间,格式为hh:mm,其中......是两个数字较完整的24小时( 00 <= ...... <= 23)和mm(00 <=毫米<= 59),你发现的中位数,也就是写一个程序,第三个元素的排序序列在两个数字代表分钟非递减顺序及其关联的角度。例如,假设您将得到一个序列(06:05,07:10,03:00,21:00,下午12:55)次。关系被打破这样一种方式,一个较早的时间排在稍后的时间之前。因为排序的序列(12:55,03:00,21:00,06:05,07:10),你输出的是21:00。
http://acm.hdu.edu.cn/showproblem.php?pid=1209
题解:排序;
错误分析:1:小时和分钟不一定是整10或5;
2:时针随着分针的变化而变化;所以时针与12的角度为angle=(hh+mm/60)*30;
3:输出格式可以用printf("%02d%02d",time[2].hh,time[2].mm);
上网搜了一个解题报告看到了这种数出格式,然后就试了一下,发现比我写的
if(time[2].hh<10)
printf("0%d",time[2].hh);
else
printf("%d",time[2].hh);
if(time[2].mm<10)
printf(":0%d\n",time[2].mm);
else
printf(":%d\n",time[2].mm);
好用多了,然后就百度一下解释:
2是宽度很简单。如果整数不够2列就补上0
比如
printf("%02d" ,3); 结果就是
03
如果大于2没有影响
printf("%02d",1234);
1234
代码实现
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef struct clock
{
int hh;
int mm;
double angle;
}clock;
clock time[6];
bool cmp( clock x1,clock x2 )//比较
{
if(x1.angle==x2.angle)
{
if(x1.hh==x2.hh)
return(x1.mm<x2.mm);
return (x1.hh<x2.hh);
} return x1.angle<x2.angle;
}
int main()
{
int t,h,m;
double angle1,angle2,angle3;
scanf("%d",&t);
while(t--)
{
for(int i=0;i<5;i++)
{
scanf("%d:%d",&h,&m);
time[i].hh=h;
time[i].mm=m;
angle1=30*(h%12)+m*0.5;//时针与0时的角度;
angle2=m*6;//分针与0分的角度
angle3=fabs(angle1-angle2);
if(angle3>180)angle3=360.0-angle3;
time[i].angle=angle3;
}
sort(time,time+5,cmp);//排序
printf("%02d:%02d\n",time[2].hh,time[2].mm);
} return 0;
}
排序的相关题目
HDU1029 Ignatius and the Princess IV
http://acm.hdu.edu.cn/showproblem.php?pid=1029
代码
#include<cstdio>
#include<algorithm>
#define MAX 1000000
using namespace std;
int a[MAX];
int main()
{
int i,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
int flag=a[0],count=0;
for(i=0;i<n;i++)
{
if(flag==a[i])
{
count++;
if((n+1)/2<=count)break;
}
else
{
flag=a[i];
count=1;
}
}
printf("%d\n",a[i]);
}
return 0;
}
HDU2673 shǎ崽 OrOrOrOrz
http://acm.hdu.edu.cn/showproblem.php?pid=2673
#include<cstdio>
#include<algorithm>
using namespace std;
int a[10005];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
printf("%d %d",a[n-1],a[0]);
for(int i=1;i<n/2;i++)
printf(" %d %d",a[n-i-1],a[i]);
if(n%2==1)
printf(" %d",n/2+1);
printf("\n"); }
return 0;
}
HDU1280 前m大的数
http://acm.hdu.edu.cn/showproblem.php?pid=1280
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
bool mysort(int x,int y)
{
return(x>y);
}
int b[45000000];
int main()
{
int i,j,k,n,m,a[3002];
while(scanf("%d %d",&n,&m)!=EOF)
{
k=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);//输入
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
b[k++]=a[i]+a[j];//两两相加的和
sort(b,b+n*(n-1)/2,mysort);//排序
printf("%d",b[0]);//控制输出格式
for(i=1;i<m;i++)
printf(" %d",b[i]);
printf("\n");
}
return 0;
}
HDU1029时钟(排序)的更多相关文章
- 一些 Mysql 维护命令
----------------------------------------------------------------------------使用mysql客户端程序------------ ...
- poj 3608(旋转卡壳求解两凸包之间的最短距离)
Bridge Across Islands Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9768 Accepted: ...
- Lamport时间戳论文笔记
本文主要参考文献[1]完成. 声明:本人仅在博客园发表了本文章,笔名LightningStar,其他网站均为转载. 笔记 私以为,论文中作者的核心工作是为分布式系统建立了一种数学模型,并基于这种数学模 ...
- 一种基于PTP 协议的局域网高精度时钟同步方法(转)
原文地址 http://www.dzsc.com/data/html/2011-1-17/88338.html 1 引言 在分布式系统中, 常常需要一个全局时间, 用来确定系统中各种事件发生的先后.协 ...
- ARM Linux系统的时钟机制
1. Linux下有两类时钟: 1.1 实时钟RTC 它由板上电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟.当操作系统关机的时候,用这个来记录时间,但是对于运行 ...
- 常用排序算法的python实现和性能分析
常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...
- Linux CFS调度器之虚拟时钟vruntime与调度延迟--Linux进程的管理与调度(二十六)
1 虚拟运行时间(今日内容提醒) 1.1 虚拟运行时间的引入 CFS为了实现公平,必须惩罚当前正在运行的进程,以使那些正在等待的进程下次被调度. 具体实现时,CFS通过每个进程的虚拟运行时间(vrun ...
- 【FZSZ2017暑假提高组Day2】圆盘时钟
[问题描述] 作为出题人的小Z相信大家对上图这样的圆盘时钟都不会陌生——在理想圆盘时钟上,秒针每一分钟转一圈,分针每一小时转一圈,时针每12小时转一圈,它们均是匀速转动的,在0点时三条针均指向表盘上的 ...
- HDU 1029 Ignatius and the Princess IV / HYSBZ(BZOJ) 2456 mode(思维题,~~排序?~~)
HDU 1029 Ignatius and the Princess IV (思维题,排序?) Description "OK, you are not too bad, em... But ...
随机推荐
- Hadoop学习之Hadoop集群搭建
1.检查网络状况 Dos命令:ping ip地址,同时,在Linux下通过命令:ifconfig可以查看ip信息2.修改虚拟机的ip地址 打开linux网络连接,在桌面右上角,然后编辑ip地址, ...
- Oracle经典书籍推荐
转自:http://www.cnblogs.com/fjfzhkb/archive/2007/12/05/983381.html 很多网友询问如何选择入门书籍,学Oracle有什么好书,这里给出一些常 ...
- day3_python学习笔记_chapter5_数字
1. 整形的表示范围-2^32~2^32 - 1 : 长整形表示:aLong = 99999L 2. 复数的属性, num.real,该复数的实部, num.imag,该复数的虚部.num.conju ...
- shell中常用的特殊字符
(1) * 代表0到无穷个任意字符 (2)?代表任意一个字符 (3)代表括号内任意一个字符 (4)[ - ] 代表一个范围中的任意一个字符 如[0-9] 即是代表0-9之间的一个数 (5)[^] 反向 ...
- Mac 10.7.*安装XCode3.2.6的方法
1.首先,在Xcode 3.2.6的磁盘映像(dmg文件)上点击右键,选择“磁盘工具”打开,如图1所示,转换成一个可读写的dmg文件,如图2所示. 图1 图2 转换好后双击它,让它在Finder里面显 ...
- Android Gradle配置
解决问题 错误: Could not find the AndroidManifest.xml file, going up from path //打开app build.gradle文件加入以下代 ...
- poj 3252 Round Numbers 数位dp
题目链接 找一个范围内二进制中0的个数大于等于1的个数的数的数量.基础的数位dp #include<bits/stdc++.h> using namespace std; #define ...
- linux 定时执行任务
测试可以了,做个笔记 系统是centos 6.3 1,直接命令 crontab -e 编辑文件,里面写时间和你想要执行的命令. 例子 */1 * * * * sh /home/guanliyang/t ...
- Linux ---> 监控JVM工具
Linux ---> 监控JVM工具shkingshking 发布时间: 2013/10/10 01:27 阅读: 2642 收藏: 26 点赞: 1 评论: 0 JDK内置工具使用 jps(J ...
- JAVA并发,线程优先级
package com.xt.thinks21_2; import java.util.concurrent.ExecutorService; import java.util.concurrent. ...