MZ test17# NOIP模拟题 # T1 第1题 时间计算(heaven.pas/cpp)[key.模拟]
2016-05-17 15:26
281 查看
第1题 时间计算(heaven.pas/cpp)
输入文件的第一行是一个非负整数 N,表示4000年中必须呆在人间的天数,以下共N行,每行两个用空格隔开的正整数,即日期(月,日),输入文件保证无错误,日期无重复。
【输出数据】
输出文件仅有一行包含一个非负整数,即在天上的时间(四舍五入精确到秒)。
【样例输入】heaven.in
2
3 8
12 2
【样例输出】heaven.out
63266
【问题描述】
有一天,我做了个梦,梦见我很荣幸的接到了猪八戒的邀请,到天宫陪他吃酒。我犹豫了。天上一日,人间一年啊!当然,我是个闲人,一年之中也没有多少时日是必须在人间的,因此,我希望选一个最长的空闲时间段,使我在天上待的时间尽量长。记住,今年是4000年。天上一天也是24小时,每小时60分,每分60秒。
【输入数据】输入文件的第一行是一个非负整数 N,表示4000年中必须呆在人间的天数,以下共N行,每行两个用空格隔开的正整数,即日期(月,日),输入文件保证无错误,日期无重复。
【输出数据】
输出文件仅有一行包含一个非负整数,即在天上的时间(四舍五入精确到秒)。
【样例输入】heaven.in
2
3 8
12 2
【样例输出】heaven.out
63266
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; void init(){ freopen("heaven.in","r",stdin); freopen("heaven.out","w",stdout); } int n; int month[]={0,31,29,31,30,31,30,31,31,30,31,30,31}; struct date{ int m,n; }d[500]; bool cmp(date a,date b){ return a.m==b.m?a.n<b.n:a.m<b.m; } int cont(date a,date b){ if(a.m==b.m)return b.n-a.n-1; else{ int ans=0; while(a.m<b.m){ ans+=month[a.m]-a.n; a.m++; a.n=0; } ans+=b.n-1; return ans; } } int main(){ init(); scanf("%d",&n); d[1].m=1,d[1].n=0; d[n+1].m=12,d[n+1].n=32; for(int i=1;i<=n;i++){ scanf("%d%d",&d[i].m,&d[i].n); } sort(d,d+n+2,cmp); int Max=-1; for(int i=1;i<=n+1;i++){ Max=max(Max,cont(d[i-1],d[i])); } printf("%.0lf",((24*60*60/366.0)*(Max))); return 0; }
相关文章推荐
- C++计时器
- C++中两个大整数相乘
- c++11中的tuple(元组)
- 嵌入式为什么选择C语言? (面试)
- c++成员函数的重载、覆盖、隐藏区别
- C/C++中标准转换运算符reinterpret_cast
- C/C++中流的基本概念
- C&C++编译过程
- 牛人博客链接--高级算法、智能视频、嵌入式软件、DSP应用开发,algorithem,c++,c,视频处理,图像处理
- C++11中once_flag,call_once实现
- C++文件读写详解(ofstream,ifstream,fstream)
- C/C++中的虚析构函数和私有析构函数的使用
- c++中vector的用法详解
- 魔方阵程序编写
- c++ geogle v8见解
- C++ 排列组合—N个数中取M个数
- 查看C语言的方法名
- C++ 查找本机安装word的版本号,
- <<Effective C++>>读书笔记5: 实现
- C#与C++(结构体内对象指定大小)