【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1700

【题目大意】

  共有p道题目要做,每个月收入只有n元,用于付钱做题之外的部分都会吃掉,
  做题要按顺序来解决,对于一道题,在这个月需要付预做费用,下个月开始的时候还要付完成费用,
  上一个月才会发上个月的工资,问最少几个月能做完这些题目

【题解】

  dp[j][i]表示当前最后一个月做j到i的题目用的最小月份,
  我们发现如果当前月能结算上个月的完成费用和这个月的预付费用,则转移时答案加一,
  否则转移时答案加2,顺序dp即可。

【代码】

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n,p,a[1010],b[1010],as[1010],bs[1010],dp[310][310];
int main(){
while(~scanf("%d%d",&n,&p)){
for(int i=1;i<=p;i++){
scanf("%d%d",&a[i],&b[i]);
as[i]=as[i-1]+a[i];
bs[i]=bs[i-1]+b[i];
}memset(dp,0x3f,sizeof(dp));
for(int i=1;i<=p;i++){
if(as[i]<=n&bs[i]<=n)dp[1][i]=1;
else break;
}int ans=0x3f3f3f3f3f;
for(int i=1;i<=p;i++){
for(int j=1;j<=i;j++){
for(int k=1;k<j;k++){
if(as[i]-as[j-1]<=n&&bs[i]-bs[j-1]<=n)
dp[j][i]=min(dp[j][i],dp[k][j-1]+2);
if(as[i]-as[j-1]+bs[j-1]-bs[k-1]<=n&&bs[i]-bs[j-1]<=n)
dp[j][i]=min(dp[j][i],dp[k][j-1]+1);
}if(i==p)ans=min(ans,dp[j][i]);
}
}printf("%d\n",ans+2);
}return 0;
}

BZOJ 1700 [Usaco2007 Jan]Problem Solving 解题(单调DP)的更多相关文章

  1. bzoj 1700: [Usaco2007 Jan]Problem Solving 解题【dp】

    很像贪心的dp啊 这个定金尾款的设定让我想起了lolita和jk制服的尾款地狱-- 设f[i][j]为从j到i的付定金的最早月份然后从f[k][j-1]转移来,两种转移f[i][j]=min(f[i] ...

  2. bzoj:1700: [Usaco2007 Jan]Problem Solving 解题

    Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场 ...

  3. bzoj 1700: [Usaco2007 Jan]Problem Solving 解题 ——dp

    Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场 ...

  4. 【BZOJ】1700: [Usaco2007 Jan]Problem Solving 解题

    [题意]给定n道题,每月末发放工资m,要求从1解到n,每道题需要在当月初付费ai,下月初付费bi,多道题可以安排在同月,求最少月数. [算法]DP [题解]参考自:[bzoj1700]Problem ...

  5. 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划

    [BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...

  6. [bzoj1700]: [Usaco2007 Jan]Problem Solving 解题

    不能贪心!不能贪心!不能贪心! 反正有反例(有的题目月初支付款很少,月末支付款很大,和前面的题凑到一个月的话可能导致下个月写不了= =这时放后一个月,和后面的题一起开始写可能更优) 比如: 50 44 ...

  7. BZOJ1700: [Usaco2007 Jan]Problem Solving 解题

    每月m<=1000块钱,有n<=300道题,要按顺序做,每月做题要花钱,花钱要第一个月预付下个月立即再付一次,给出预付和再付求最少几个月做完题,第一个月不做. 神奇的DP..竟没想出来.. ...

  8. bzoj 1700 Problem Solving 解题 dp

    [Usaco2007 Jan]Problem Solving 解题 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 492  Solved: 288[Sub ...

  9. BZOJ 1635: [Usaco2007 Jan]Tallest Cow 最高的牛

    题目 1635: [Usaco2007 Jan]Tallest Cow 最高的牛 Time Limit: 5 Sec  Memory Limit: 64 MB Description FJ's N ( ...

随机推荐

  1. pycaffe做识别时通道转换问题

    转自---------------------  作者:Peanut_范  来源:CSDN  原文:https://blog.csdn.net/u013841196/article/details/7 ...

  2. apache加入chkconfig

    #First Step: cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd #Second Step: vim /etc/init.d/htt ...

  3. Redis Cluster 集群使用(3)

    简介 Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用(HA),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data Shar ...

  4. JavaScript中常用的BOM属性

    window 窗口 window.open():打开窗口.返回一个指向新窗口的引用. window.close():关闭窗口. window.resizeTo():调整窗口尺寸到指定值 window. ...

  5. linux命令(47):rmdir命令

    1.命令格式: rmdir [选项]... 目录... 2.命令功能: 该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对父目录的写权限. 3.命令参数: - p 递归删除目录dirn ...

  6. Qt笔记——多线程

    这个例子是,点击开始按钮,数字累加,点击停止按钮,数字不动. 1,新建一个类,里面是子线程的内容 #ifndef MYTHREAD_H #define MYTHREAD_H #include < ...

  7. 查看linux版本及lsb_release安装及一些想法

    https://blog.csdn.net/darkdragonking/article/details/61194308

  8. hdu5728

    详细题解: http://blog.csdn.net/wust_zzwh/article/details/51966450 ……化简公式的能力还不够啊…… #include<bits/stdc+ ...

  9. Linux用户和用户组的初步知识

    用户组相关:在Linux系统下,当创建一个如叫tom的用户,那么系统同时会创建一个叫tom的用户组linux中用户的信息都是放在/etc/passwd下的,用户的密码经过加密后放在/etc/shado ...

  10. react native 增加react-native-storage

    现时需要使用react-native-storage本地存储 第一步:配置storage主文件 mystorage.js import { AsyncStorage } from 'react-nat ...