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】背单词的更多相关文章

  1. 做中学(Learning by Doing)之背单词-扇贝网推荐

    做中学(Learning by Doing)之背单词-扇贝网推荐 看完杨贵福老师(博客,知乎专栏,豆瓣)的「继续背单词,8个月过去了」,我就有写这篇文章的冲动了,杨老师说: 有时候我会感觉非常后悔,如 ...

  2. “我爱背单词”beta版发布与使用说明

    我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院  拒 ...

  3. BZOJ4567[Scoi2016]背单词

    4567: [Scoi2016]背单词 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 304 Solved: 114 [Submit][Status] ...

  4. 《我爱背单词》 Alpha版 发布说明

    ——发布地址(baidu网盘) http://pan.baidu.com/s/15omtB ——简介  <我爱背单词>是一款英语单词记忆和管理辅助软件,旨在帮助广大考生在短期内攻克GRE. ...

  5. [No000057]一个人默默背单词,小心被传染哦

    不日凛冬将至,全国各地,已有多名少侠因季节变化,出现了不同程度的四肢不勤.bd不分的症状.具体表现为—— 包大人在此高能预警:不想背单词,有可能你已经被传染了. 好好的,怎么突然不想背单词了 哈佛医学 ...

  6. [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?

    由于英语对于一个程序员来说,重要性你懂得.因此我会开始逐渐在博客上加入英语的一些东西. 听说不背单词,考英语会是这种下场 在中国, 「学英语」大抵遵循着这样一条 罗蒙诺索夫质量守恒定律 因为英语学着学 ...

  7. Supermemo背单词7周年纪念

    从2007年2月1日开始,用Supermemo背单词7周年了,在2013年11月21日将单词表Reset,重新开始Review以前背过的单词,并慢慢加入听写VOA时遇到的生词.

  8. 使用Excel背单词-高效-简单

    背单词是一个很纠结的事,想必那些走在留学路上的很多人都被英语这一关卡住了,这里,笔者就聊聊,不讲背单词的方法,只提供使用vb开发的产品和使用方法,有问题欢迎讨论. 简介:使用excel背单词,有一些人 ...

  9. 基于百词斩和扇贝单词的背单词APP软件测试

    概述 背单词APP是非常受大学生青睐的手机应用,但它的发展尚未成熟,存在一些缺陷.我们决定深入地分析一组典型的背单词APP:百词斩(A产品).扇贝单词(B产品),寻找当前背单词APP中的提升空间.下面 ...

随机推荐

  1. httpclient 模拟浏览器动作需注意的cookie和HTTP头等信息

    转自:http://resolute.javaeye.com/blog/491701 commons-httpclient是apache下的一个开源项目,提供了一个纯java实现的http客户端.使用 ...

  2. HttpClient请求发送的几种用法二:

    public class HttpClientHelper    {        private static readonly HttpClientHelper _instance = new H ...

  3. UVA 11039 - Building designing 水题哇~

    水题一题,按绝对值排序后扫描一片数组(判断是否异号,我是直接相乘注意中间值越界)即可. 感觉是让我练习sort自定义比较函数的. #include<cstdio> #include< ...

  4. 【z02】选择客栈

    (hotel.cpp/c/pas) [问题描述] 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照 某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示) ...

  5. bootstrap课程3 bootstrap中常用的排版样式有哪些

    bootstrap课程3 bootstrap中常用的排版样式有哪些 一.总结 一句话总结:bootstrap里面对常用表情比如p.h1.code等html中的常用表情都修改了样式,照着手册用就好,样式 ...

  6. js进阶 12-8 如何知道上一个函数的返回值是什么(如何判断上一个函数是否执行成功)

    js进阶 12-8 如何知道上一个函数的返回值是什么(如何判断上一个函数是否执行成功) 一.总结 一句话总结:event的result属性即可. 1.event的result属性的实际应用场景是什么? ...

  7. 【例题3-6 UVA - 1584】Circular Sequence

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 不用真的把每一位都取出来. 用一个后缀的思想. 把原串复制一遍接在后面,然后把每个字符串 都当成一个长度为n的后缀就好了. 比较每个 ...

  8. Ubuntu UEFI 模式下安装基本原则

    https://help.ubuntu.com/community/UEFI Introduction The Extensible Firmware Interface (EFI) or its v ...

  9. 【LeetCode-面试算法经典-Java实现】【096-Unique Binary Search Trees(唯一二叉搜索树)】

    [096-Unique Binary Search Trees(唯一二叉搜索树)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given n, how many s ...

  10. 【心情】"支NMLGB配树”

    大视野oj坏了 那就做杭电呗 看看大触都做杭电里的哪些题 看到杭电的分类了 Tarjan算法诶,我好像会嘛,就是你了 诶,怎么不是求强连通分量? 哦,原来是Tarjan算法的另外一个应用叫做支配树 我 ...