博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1642[Usaco2007 Nov]Milking Time 挤奶时间*
阅读量:7099 次
发布时间:2019-06-28

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

题意:

m个挤奶时间段,每个时间段有一个产奶量,每次产完奶奶牛要休息r分钟,问最多产多少奶。m≤1000,时间≤1000000。

题解:

类似,方程改为f[i]=max(f[i+1],f[range[j].r+range[j].value],j为时刻i开始的产奶时间段)。然而本弱的写法时间和空间复杂度都排倒数,神犇们都是用背包dp的写法(我不会)QAQ

代码:

1 #include 
2 #include
3 #include
4 #define maxn 1010 5 #define ll long long 6 #define inc(i,j,k) for(int i=j;i<=k;i++) 7 using namespace std; 8 9 inline int read(){10 char ch=getchar(); int f=1,x=0;11 while(ch<'0'||ch>'9'){
if(ch=='-')f=-1; ch=getchar();}12 while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();13 return f*x;14 }15 struct rg{
int r; ll w; int n;}; rg rgs[maxn]; ll f[maxn*2000]; int n,m,r,g[maxn*1000],mx;16 int main(){17 n=read(); m=read(); r=read();18 inc(i,1,m){
int a=read(),b=read(),c=read(); rgs[i]=(rg){b,c,g[a]}; g[a]=i; mx=max(mx,a);}19 for(int i=mx;i>=0;i--){20 f[i]=f[i+1]; for(int j=g[i];j;j=rgs[j].n)f[i]=max(f[i],f[rgs[j].r+r]+rgs[j].w);21 }22 printf("%lld",f[0]); return 0;23 }

 

20160802

转载于:https://www.cnblogs.com/YuanZiming/p/5732553.html

你可能感兴趣的文章
PostgreSQL 11 1Kw TPCC , 1亿 TPCB 7*24 强压耐久测试
查看>>
修改toolbar自适应报表宽度
查看>>
Linux基础命令---chkconfig
查看>>
Arista Networks推出400千兆以太网交换机
查看>>
企业网站需要什么样内容才能满足和吸引到用户?
查看>>
关于 Java NIO Buffer 使用的详细解读
查看>>
以太坊系列之十三: evm指令集
查看>>
9、MySQL函数
查看>>
powerdesigner使用sql文件生成uml图
查看>>
Scala的类层级讲解
查看>>
微信api 源码分享
查看>>
泰坦尼克乘客存活状况(决策树案例)
查看>>
博客计划【推荐系统】
查看>>
iptables杂记
查看>>
JPress v2.0-rc.8 发布,新增插件开发的代码生成器
查看>>
RHEL和Debian上生成随机密码-mkpasswd
查看>>
图片转字符图片(三)
查看>>
常用正则表达式 -- 费元星 java大神
查看>>
TinyMCE 5 正式版发布,重磅更新!!!
查看>>
干货集中营mvp架构开源项目
查看>>