当前位置: 首页 > news >正文

【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;
}

转载于:https://www.cnblogs.com/AWCXV/p/7632050.html

相关文章:

  • [置顶] 九月半集训总结
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • IntelliJ IDEA之版本控制
  • 【Python】【正则】
  • SharePoint REST API - 使用REST API和jQuery上传一个文件
  • localStorage小结
  • scrum学习心得
  • Mysql字符集设置
  • httpclient连接池
  • JS判断键盘是否按的回车键并触发指定按钮点击操作
  • 根据ip抓 包
  • Mac下Tomcat安装配置80默认端口设置
  • Jzoj4699 Password
  • (十)T检验-第一部分
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android 架构优化~MVP 架构改造
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CSS实用技巧
  •  D - 粉碎叛乱F - 其他起义
  • E-HPC支持多队列管理和自动伸缩
  • Facebook AccountKit 接入的坑点
  • JavaScript设计模式之工厂模式
  • JavaScript中的对象个人分享
  • nginx 负载服务器优化
  • overflow: hidden IE7无效
  • Python连接Oracle
  • spring-boot List转Page
  • springboot_database项目介绍
  • swift基础之_对象 实例方法 对象方法。
  • 基于遗传算法的优化问题求解
  • 经典排序算法及其 Java 实现
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 手写一个CommonJS打包工具(一)
  • 说说动画卡顿的解决方案
  • AI算硅基生命吗,为什么?
  • Mac 上flink的安装与启动
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1)(1.13) SiK无线电高级配置(五)
  • (AngularJS)Angular 控制器之间通信初探
  • (C)一些题4
  • (C++17) optional的使用
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (离散数学)逻辑连接词
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉