博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
<USACO07JAN>解决问题Problem Solvingの思路
阅读量:4509 次
发布时间:2019-06-08

本文共 974 字,大约阅读时间需要 3 分钟。

日常为dp贡献脑细胞

#include
#include
#include
#include
#include
#include
using namespace std;int dp[310][310],fst[310],lst[310];int n,p;int main(){ int i,j,k; memset(dp,5,sizeof(dp)); scanf("%d%d",&n,&p); for(i=1;i<=p;i++)scanf("%d%d",&fst[i],&lst[i]); dp[1][1]=1;dp[1][0]=2;dp[0][0]=0; for(i=1;i<=p;i++) { fst[i]+=fst[i-1];lst[i]+=lst[i-1];//前缀和方便算几个任务一共的钱 } for(i=2;i<=p;i++)//总共已完成的 { //本月完成任务!! for(j=1;j<=i;j++)//本月完成的 { for(k=0;k<=i-j;k++)//上月完成的(欠了多少 { if(fst[i]-fst[i-j]+lst[i-j]-lst[i-j-k]<=n)//钱够得话.利用前缀和 算一段任务的钱 dp[i][j]=min(dp[i][j],dp[i-j][k]+1); } } //本月不完成任务 for(k=1;k<=p;k++)if(lst[i]-lst[i-k]<=n)dp[i][0]=min(dp[i][k]+1,dp[i][0]);//就还债 } int ans=dp[p][0]+1; for(i=1;i<=p;i++)//倒二月完成的.最后月还 if(lst[p]-lst[i-p]<=n)ans=min(ans,dp[p][i]+2); printf("%d",ans);return 0; }
点击查看丑陋の代码&注释

 

 

 

转载于:https://www.cnblogs.com/pile8852/p/9278540.html

你可能感兴趣的文章
linux 安装mysql数据库——yum安装法
查看>>
Visual Studio 2008 不能更改安装目录的原因
查看>>
关于求最大公约数
查看>>
C#高级编程
查看>>
Knowladge_网站学习_RSS 学习
查看>>
TCP/IP,Web世界的基本规则
查看>>
c++ 子类构造函数初始化及父类构造初始化
查看>>
Analysis on Human Various Emotional Expression
查看>>
DataGridView DataGridViewCheckBoxColumn编辑时实时触发事件
查看>>
SignalR---服务端
查看>>
PlayerPrefs存储Vector3等结构数据
查看>>
LightOJ - 1422 Halloween Costumes (区间DP)
查看>>
Dubbo架构设计详解
查看>>
谁终将点燃闪电,必长久如云漂泊
查看>>
小诗句集萃四
查看>>
软件之美: 易用性设计的目标及准则
查看>>
异步回调,事件,线程池与协程
查看>>
matlab函数:c2d离散化函数(待完善)
查看>>
java并发多面性
查看>>
TFS 测试用例导入、导出工具
查看>>