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 ...
随机推荐
- PHP用户登录与注册页面
PHP用户登录模块实现 项目包含的功能脚本: login.php//登录 reg.php//注册用户 user_add.php//注册校验脚本 user_login_check.php//登录校验脚本 ...
- Android中计算时间差的实现方法
今天为“至简天气”增加了一项功能:在启动时根据上次更新数据的时间判断是否有必要更新数据,因为 weather.com.cn 的实况数据貌似是25分钟才会刷新一次,只有在据上次更新的时间达25分钟以上才 ...
- 1501 二叉树最大宽度和高度 (BFS+树的遍历)
题目:http://www.wikioi.com/problem/1501/ 给你一颗二叉树,求该数的宽和高, 首先求出树的高,直接进行二叉树遍历,能够得到二叉树的高 然后是得到宽,本人采用的是一层一 ...
- hdu 2565 放大的X
题目: http://acm.hdu.edu.cn/showproblem.php?pid=2565 这个题很简单 但是很容易错,写来给自己一个警示把 首先在最后一个x后面没有空格,然后就是那个换行一 ...
- Python 中psutil 模块的安装
第一步下载psutil 的安装包 网址:https://pypi.python.org 第二步解压 .tar.gz cd psutil- 第三步安装: python setup.py build py ...
- SD卡协议规范学习
首先,本博文遵照SD卡协议3.01版本,最旧协议版本为1.10,但是协议是向下兼容的.SD卡Physical Layer Simplified Specification Version 3.01英文 ...
- Sunday字符串匹配算法
逛ACM神犇的博客的时候看到的这个神奇的算法 KMP吧,失配函数难理解,代码量长 BF吧,慢,很慢,特别慢. BM吧,我不会写... 现在看到了Sunday算法呀,眼前一亮,神清气爽啊. 字符串匹配算 ...
- C(n+m,m) mod p的一类算法
Lucas定理 A.B是非负整数,p是质数.AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]. 则组合数C(A,B)与C(a[n],b[n])*C(a[n ...
- Java中static、this、super、final的用法
一. static 请先看下面这段程序: public class Hello{public static void main(String[] args){//(1)System. ...
- SQL基础查询实战
总结: 一.单表查询的情况: 1.where.....group by .. Having count(..) 2.Group by haing min(..)条件and max(..)条件(查询最低 ...