BZOJ 1700 [Usaco2007 Jan]Problem Solving 解题(单调DP)
【题目链接】 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)的更多相关文章
- 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] ...
- bzoj:1700: [Usaco2007 Jan]Problem Solving 解题
Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场 ...
- bzoj 1700: [Usaco2007 Jan]Problem Solving 解题 ——dp
Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场 ...
- 【BZOJ】1700: [Usaco2007 Jan]Problem Solving 解题
[题意]给定n道题,每月末发放工资m,要求从1解到n,每道题需要在当月初付费ai,下月初付费bi,多道题可以安排在同月,求最少月数. [算法]DP [题解]参考自:[bzoj1700]Problem ...
- 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划
[BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...
- [bzoj1700]: [Usaco2007 Jan]Problem Solving 解题
不能贪心!不能贪心!不能贪心! 反正有反例(有的题目月初支付款很少,月末支付款很大,和前面的题凑到一个月的话可能导致下个月写不了= =这时放后一个月,和后面的题一起开始写可能更优) 比如: 50 44 ...
- BZOJ1700: [Usaco2007 Jan]Problem Solving 解题
每月m<=1000块钱,有n<=300道题,要按顺序做,每月做题要花钱,花钱要第一个月预付下个月立即再付一次,给出预付和再付求最少几个月做完题,第一个月不做. 神奇的DP..竟没想出来.. ...
- bzoj 1700 Problem Solving 解题 dp
[Usaco2007 Jan]Problem Solving 解题 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 492 Solved: 288[Sub ...
- BZOJ 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
题目 1635: [Usaco2007 Jan]Tallest Cow 最高的牛 Time Limit: 5 Sec Memory Limit: 64 MB Description FJ's N ( ...
随机推荐
- 小程序_改变switch组件的大小
微信开发文档中,switch能修改颜色,没有直接修改switch大小的属性.用一般控件height & width来修改宽高是没有用的. 使用如下方法: 在.wxss文件: .wx-switc ...
- JVM在遇到OOM(OutOfMemoryError)时生成Dump文件
方法一: 命令:jmap -dump:format=b,file=heap.bin file:保存路径及文件名pid:进程编号(windows通过任务管理器查看,linux通过ps aux查看) du ...
- 新建一个express工程,node app无反应
1.问题描述 新建一个express工程,node app以后无反应,浏览器输入localhost:3000,显示如下 2.解决方法 在app.js文件中加入如下代码 app.listen(3000, ...
- perl登录ssh
use warnings; use strict; use Net::SSH::Perl; my $host = '192.168.255.128'; my $username = 'root'; m ...
- ARM linux的启动部分源代码简略分析【转】
转自:http://www.cnblogs.com/armlinux/archive/2011/11/07/2396784.html ARM linux的启动部分源代码简略分析 以友善之臂的mini2 ...
- centos 引导盘
# grub.conf generated by anaconda## Note that you do not have to rerun grub after making changes to ...
- Win10打开照片提示“无效的注册表值”解决方法
1.点开开始菜单,右键单击,选择“以管理员运行”[键盘win键+R]输入PowerShell. 2.输入Get-AppxPackage *photo* | Remove-AppxPackage后回车. ...
- ICTPOS3.0 词性标注集
Ag 形语素 形容词性语素.形容词代码为a,语素代码g前面置以A. a 形容词 取英语形容词adjective的第1个字母. ad 副形词 直接作状语的形容词.形容词代码a和副词代码d并在一起. an ...
- 微信小程序使用canvas绘制图片的注意事项
1.单位换算问题,canvas的尺寸单位是px,所以单位需要做个换算,可以通过wx.getSystemInfo获取屏幕宽高(单位是px),微信小程序无论什么机型,屏幕宽度都是750rpx,因此可以做个 ...
- 微信小程序时钟(xx年xx月xx日xx:xx格式)
wxml: <view>时间:{{newTime}}</view> js: page({ data:{ newTime:'' }, onLoad: function (opti ...