【u235】背单词
Time Limit: 1 second
Memory Limit: 128 MB
【问题描述】
英语四级考试临近了,小Y却发现他已经把以前学的单词几乎忘光了。好在现在离考试还有一段时间,小Y决定从现在开始夜以继日地背单词。也就是说小Y废寝忘食,一天二十四小时地背单词。 今天的日期(时间)是YYYY年mm月dd日hh时min分,考试的时间是YYYY’年mm’月dd’日hh’时min’分。这之间的所有时间小Y都用来背单词了,那么考试之前他最多能背多少个单词呢? 时间紧张,小Y只管数量不管质量。当然有的单词长一些,有的单词短一些。长的单词难背一些,短的单词好背一些。根据小Y的经验,他能一眼看出背某一个单词需要的时间,以分钟记。 现在给你一个字典,请你挑出最多的单词使小Y能在考试前背出来。
【输入格式】
第一行一个整数N,表示字典中的单词数,N<=5000。 接下来N行,每行一个整数表示背这个单词需要用的时间,以分钟记,小于等于10000。(这个单词本身是什么并不重要,不是吗?当前小Y已经认识的单词数为0个)。 接下来两行依次是当前时问和考试时间。时间给出的格式是:yyyy-mm-dd-hh:min.例如:2007-06-23-02:00,采用24小时制,每天从00:00-23:59,年份从0000到9999。
【输出格式】
一行一个数,表示考试前小Y最多能背出的单词数:
【数据规模】
Sample Input1
2
l
l
2007-06-23-11:59
2007-06-23-12:00
Sample Output1
1
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=u235
【题解】
先一年一年的加;
遇到闰年加366天(换算成分钟);
遇到平年加355天;
假设某一年x是闰年;需满足
x%4 == 0 && (x%100!=0 || (x%100==0 && x%400==0));
之后就一分钟一分钟地加就好;
每次模拟一下进位就好;
这样就能处理出两个时间的间隔分钟;
然后把所有的单词的时间升序排;
从小到大枚举;遇到可以背的就背;(价值都是一样的,那就选价格最小的先背肯定最优)
闰年2月是29天,平年28天;
1 3 5 7 8 10 12是31天
4 6 9 11是30天
【完整代码】
#include <cstdio>
#include <iostream>
#include <algorithm>
#define LL long long
using namespace std;
const int MAXN = 5000+100;
struct abc
{
int year,month,day,hour,minute;
};
int n;
int a[MAXN];
abc ks,js;
LL rest;
int day[13];
bool rn(int x)
{
if (!(x%4))
{
if (x%100)
return true;
else
{
if (x%400)
return false;
else
return true;
}
}
else
return false;
}
void change(abc &ks)
{
if (ks.minute>59)
{
ks.minute=0;
ks.hour++;
if (ks.hour == 24)
{
ks.hour=0;
ks.day++;
if (ks.day > day[ks.month])
{
ks.day = 1;
ks.month++;
if (ks.month > 12)
{
ks.year++;
ks.month = 1;
}
}
}
}
}
int main()
{
// freopen("F:\\rush.txt","r",stdin);
scanf("%d",&n);
for (int i = 1;i <= n;i++)
scanf("%d",&a[i]);
scanf("%d-%d-%d-%d:%d",&ks.year,&ks.month,&ks.day,&ks.hour,&ks.minute);
scanf("%d-%d-%d-%d:%d",&js.year,&js.month,&js.day,&js.hour,&js.minute);
rest = 0;
for (int i = ks.year+1;i <= js.year-1;i++)
if (rn(i))
rest+=527040;
else
rest+=525600;
day[1] = day[3] = day[5] = day[7] = day[8] = day[10] = day[12] = 31;
day[4] = day[6] = day[9] = day[11] = 30;
if (ks.year<js.year)
{
int goal = ks.year+1;
if (rn(ks.year))
day[2] = 29;
else
day[2] = 28;
while (ks.year<goal)
{
ks.minute++;
rest++;
change(ks);
}
ks.year = js.year;
if (rn(ks.year))
day[2] = 29;
else
day[2] = 28;
while (ks.month < js.month || ks.day < js.day || ks.hour < js.hour || ks.minute < js.minute)
{
rest++;
ks.minute++;
change(ks);
}
}
else
if (ks.year == js.year)
{
if (rn(ks.year))
day[2] = 29;
else
day[2] = 28;
while (ks.month < js.month || ks.day < js.day || ks.hour < js.hour || ks.minute < js.minute)
{
rest++;
ks.minute++;
change(ks);
}
}
sort(a+1,a+1+n);
int num = 0;
for (int i = 1;i <= n;i++)
if (a[i] <= rest)
rest-=a[i],num++;
else
break;
printf("%d\n",num);
return 0;
}
【u235】背单词的更多相关文章
- 做中学(Learning by Doing)之背单词-扇贝网推荐
做中学(Learning by Doing)之背单词-扇贝网推荐 看完杨贵福老师(博客,知乎专栏,豆瓣)的「继续背单词,8个月过去了」,我就有写这篇文章的冲动了,杨老师说: 有时候我会感觉非常后悔,如 ...
- “我爱背单词”beta版发布与使用说明
我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院 拒 ...
- BZOJ4567[Scoi2016]背单词
4567: [Scoi2016]背单词 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 304 Solved: 114 [Submit][Status] ...
- 《我爱背单词》 Alpha版 发布说明
——发布地址(baidu网盘) http://pan.baidu.com/s/15omtB ——简介 <我爱背单词>是一款英语单词记忆和管理辅助软件,旨在帮助广大考生在短期内攻克GRE. ...
- [No000057]一个人默默背单词,小心被传染哦
不日凛冬将至,全国各地,已有多名少侠因季节变化,出现了不同程度的四肢不勤.bd不分的症状.具体表现为—— 包大人在此高能预警:不想背单词,有可能你已经被传染了. 好好的,怎么突然不想背单词了 哈佛医学 ...
- [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?
由于英语对于一个程序员来说,重要性你懂得.因此我会开始逐渐在博客上加入英语的一些东西. 听说不背单词,考英语会是这种下场 在中国, 「学英语」大抵遵循着这样一条 罗蒙诺索夫质量守恒定律 因为英语学着学 ...
- Supermemo背单词7周年纪念
从2007年2月1日开始,用Supermemo背单词7周年了,在2013年11月21日将单词表Reset,重新开始Review以前背过的单词,并慢慢加入听写VOA时遇到的生词.
- 使用Excel背单词-高效-简单
背单词是一个很纠结的事,想必那些走在留学路上的很多人都被英语这一关卡住了,这里,笔者就聊聊,不讲背单词的方法,只提供使用vb开发的产品和使用方法,有问题欢迎讨论. 简介:使用excel背单词,有一些人 ...
- 基于百词斩和扇贝单词的背单词APP软件测试
概述 背单词APP是非常受大学生青睐的手机应用,但它的发展尚未成熟,存在一些缺陷.我们决定深入地分析一组典型的背单词APP:百词斩(A产品).扇贝单词(B产品),寻找当前背单词APP中的提升空间.下面 ...
随机推荐
- Spring HandlerInterceptor的使用
http://blog.csdn.net/joeyon1985/article/details/49903761
- 【iOS开发系列】颜色渐变
记录: //Transparent Gradient Layer - (void) insertTransparentGradient { UIColor *colorOne = [UIColor c ...
- jmeter与apache测试网站并发
本文主要介绍性能测试中的常用工具jmeter的使用方式,以方便开发人员在自测过程中就能自己动手对系统进行自动压测和模拟用户操作访问请求.最后还用linux下的压测工具ab做了简单对比. 1. ...
- UVA 11388 - GCD LCM 水~
看题传送门 题目大意: 输入两个数G,L找出两个正整数a 和b,使得二者的最大公约数为G,最小公倍数为L,如果有多解,输出a<=b且a最小的解,无解则输出-1 思路: 方法一: 显然有G< ...
- [Nuxt] Add Arrays of Data to the Vuex Store and Display Them in Vue.js Templates
You add array of todos to the store simply by adding them to the state defined in your store/index.j ...
- swift项目第二天:初始化项目
初始化项目 项目的部署版本 之后项目会运行在哪些系统中 横竖屏的支持 iPhone应用一般只支持横屏 iPhone游戏一般支持竖屏 iPad横竖屏都支持 设置项目的图标和启动图片 项目的图标(美工做好 ...
- 20、在PC上测试虚拟驱动vivi
在Ubuntu上测试 准备工作:安装xawtv(是一个应用程序,用来在Ubuntu上捕获摄像头数据并显示)sudo apt-get install xawtv 源码xawtv-3.95.tar.gz: ...
- 28、应用调试之strace命令来跟踪系统调用
strace是个工具,在使用时需要先按照,见韦东山书籍: 1.tar xjf starce-4.5.15.tar.bz2 2.cd strace-4.5.15/ 3.patch -p1 < .. ...
- 【例题3-5 UVA - 1583】Digit Generator
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] for (int i = 1;i <= n;i++) { 算出i是哪一个的生成元. 假设是y. 则ans[y] = min(a ...
- 【a101】高精度实数加法
Time Limit: 1 second Memory Limit: 2 MB 问题描述 给出两个高精度正实数(可以含有小数点或没有),最长200位,字符串读入 求它们的和,小数部分末尾的0要舍去. ...