题目描述

Dustar有n道题目要做。他的月薪是m元。
由于题目是一流的难题,所以Dustar不得不找个人来帮(代)助(替)他写作业。
找人写作业不是免费的,但是他们能保证在一个月内做出任何题目。每做一道题需要两笔付款,第一笔ai元在做题的那一个月初支付,第二笔b[i]元(1<=b[i]<=m)在做完后的下一个月初支付。每一个月Dustar用上一个月挣的钱来付款。
Dustar没有任何存款意识,所以每个月的节余都回拿用去买糖吃掉了。
因为题目是相互关联的,它们必须按顺序解出。比如,题目3必须在题目4之前或同一个月解出。
请问做完所有题目并支付完所有款项的最少月数。

解法

第一眼看到这道题会想到贪心,如果当前可以放到下一个月里去,但是这样很明显是错的。。。
试试这组数据

10 9
1 9
9 1

这样就会被卡住,那么怎么做?
那么就是DP。我们设置\(f[i][j]\)表示到第\(i\)天买了\(j\)物品的答案。
我们每次看一下前后天是否满足状态就好了。

ac代码

#include<bits/stdc++.h>
#define N 305
using namespace std;
int f[N][N],a[N],b[N];
int n,m;
int r(){
    int w=0,x=0;char ch=0;
    while(!isdigit(ch))w|=ch=='-',ch=getchar();
    while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    return w?-x:x;
}
int main(){
    m=r(),n=r();
    for(int i=1;i<=n;i++)a[i]=r(),b[i]=r();
    memset(f,-1,sizeof(f));
    f[1][0]=m;
    for(int i=1;i<=n;i++){
        for(int j=0;j<=n;j++) {
            if(f[i][j]<0) break;
            int res1=f[i][j],res2=m;
            f[i+1][j]=max(f[i+1][j],m);
            for(int k=j+1;k<=n;k++){
                if(res1-a[k]<0||res2-b[k]<0) break;
                res1-=a[k],res2-=b[k];
                f[i+1][k]=max(f[i+1][k],res2);
            }
        }
    }
    int ans;
    for(int i=1;i<=2*n;i++){
        if(f[i][n]!=-1){ans=i;break;}
    }
    printf("%d\n",ans+1);
    return 0;
}

[hgoi#2019/2/16t3]psolve的更多相关文章

  1. 「HGOI#2019.4.19省选模拟赛」赛后总结

    t1-Painting 这道题目比较简单,但是我比较弱就只是写了一个链表合并和区间DP. 别人的贪心吊打我的DP,嘤嘤嘤. #include <bits/stdc++.h> #define ...

  2. [hgoi#2019/3/21]NOIP&NOI赛后总结

    前言 今天做的是是2010年提高组和NOI的题目,做过几道原题,但是还是爆炸了,我真的太弱了. t1-乌龟棋 https://www.luogu.org/problemnew/show/P1541 这 ...

  3. [hgoi#2019/3/10]赛后总结

    关于本次hg模拟赛,题目来源于CF1110. t1-无意义运算符(meaning) 题目描述 最大公约数和位运算之间有共同点吗?是时候来研究一下了. 给定一个正整数a,请找到一个闭区间[1,a-1] ...

  4. [hgoi#2019/3/3]赛后总结

    T1--最长公共前缀(lcp) 定义两个字符串S,T 的最长公共前缀lcp(S,T)为最长的字符串R,满足R 既是S 的前缀又是T 的前缀. 给定一个字符串S,下标从1 开始,每次询问给出四个正整数a ...

  5. [hgoi#2019/2/16t2]friend

    题目描述 在一个遥远的国度里有n个人,每个人手上写着4个互不相同的数. 这个国度比较奇怪,如果两个人至少有一个数字相同,则他们是一对朋友. 现在这n个人按序号从左到右排成了一排,每个人都想知道在他左边 ...

  6. [hgoi#2019/2/16t1]math

    题目描述 解法 我们稍微枚举一下前面几位,可以得到这样的规律. \[X_i=\frac{1}{2^{i+1}-1}\] \[Y_i=\frac{1}{2^{2^i}-1}\] 那么要使\(xm=yn\ ...

  7. [hgoi#2019/2/24]玄学考试

    感想 对于这次考试,真的不想说什么了,太玄学了!!! t1输出比标准输出长,这是什么操作???难道要关文件???但是交到oj上又A掉了.这是什么操作. t2还好,没有出什么意外...但是要吐槽一下出题 ...

  8. [hgoi#2019/2/18]比较水

    T1--调换纸牌(card) Alex有 n张纸牌,每张纸牌上都有一个值ai,Alex把这些纸牌排成一排,希望将纸牌按值从小到大的顺序排好.现在他把这个任务交给你,你只能进行一种操作:选中一张牌,然后 ...

  9. [hgoi#2019/2/17t1]million

    题目描述 面对格鲁的入侵,小黄人们要组建一支队伍,来抵御进攻,现在有编号为1 至n 的小黄人,任命编号为n 的队长,由其挑选队员,当然编号不是随便编的,每一个编号里都包含一个小黄人的个人信息,现在队长 ...

随机推荐

  1. SAAS云平台搭建札记: (一) 浅论SAAS多租户自助云服务平台的产品、服务和订单

    最近在做一个多租户的云SAAS软件自助服务平台,途中遇到很多问题,我会将一些心得.体会逐渐分享出来,和大家一起探讨.这是本系列的第一篇文章. 大家知道,要做一个全自助服务的SAAS云平台是比较复杂的, ...

  2. 使用rem进行自适应页面布局

    设计师给到我们前端的设计稿一般是按照iphone6屏幕(iphone6 两倍屏 设备 分辨率(物理尺寸) 屏幕宽高 PPI 状态栏高度 导航栏高度 标签栏高度 iPhone6 750×1334 px ...

  3. bootstrap面试题

    1.你能描述一下渐进增强和优雅降级之间的不同吗? 优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作.由于IE独特的盒模型布局问题,针 ...

  4. bootstrap完善按钮组bug

    .btn.active { border: 1px solid #ff9400 !important; color: #ff9400 !important; } <div class=" ...

  5. 生产者消费者模式 php 【转】

    在工作中常常听到某某大牛之间的交谈会涉及到,xx消费者啊啥的,到底什么大牛之间讲的是什么? 这篇文章主要解决三个问题: 1.到底什么是生产者和消费者,以及它们之间的故事 2.它们之间靠什么交流 3.应 ...

  6. Linux内核分析期中总结

    目录: “Linux内核分析”实验一报告 “Linux内核分析”实验二报告 “Linux内核分析”实验三报告 Linux实验四报告 “Linux内核分析”第五周报告 "Linux内核分析&q ...

  7. “Linux内核分析”第五周报告

    张文俊+ 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 学习总结 1.给M ...

  8. 毕设之c#多线程学习(官方+转载)

    官方文档,原址:打开 如何:对 Windows 窗体控件进行线程安全调用   使用多线程提高 Windows 窗体应用程序的性能时,必须注意以线程安全方式调用控件. 示例 访问 Windows 窗体控 ...

  9. Daily Scrum 12.8

    Member Task on 12.08 Task on 12.09 仇栋民 参与M2阶段第二次决策会议 开始Task964 : 活动评论功能雏形 康家华 开始Task982 : 完成活动界面的设计稿 ...

  10. git查看分支图

    git log --graph --decorate --oneline --simplify-by-decoration --all