【tyvj1098】任务安排(dp)
2017-09-13 17:08
309 查看
题目:我是超链接
题解:
首先我们看看题目的柿子,很复杂而且无规律呢
设T[i]为1~i的时间总和,G[i]为i~n的价值总和
比如说题目里的栗子吧
=(s+T[2])*(g1+g2)+(2*s+T[3])*g3+(3*s+T[5])*(g4+g5) 花费(题目的圆柿子)
=s*(g1+g2+g3+g4+g5)+s*(g3+g4+g5)+s*(g4+g5)+(T[5]-T[2])(g4+g5)+T[2]*(g4+g5)+T[2]*(g1+g2)+(T[3]-T[2])*g3+T[2]*g3
=(s+T[2])*(g1+g2+g3+g4+g5)+(s+T[3]-T[2])*g3+(s+s+T[5]-T[2])*(g4+g5)
=(s+T[2])*(g1+g2+g3+g4+g5)+(s+T[3]-T[2])*(g3+g4+g5)+(s+T[5]-T[3])*(g4+g5)
恩这个柿子看起来好多了嘛,那我们就把ta写进程序吧
代码:
题解:
首先我们看看题目的柿子,很复杂而且无规律呢
设T[i]为1~i的时间总和,G[i]为i~n的价值总和
比如说题目里的栗子吧
=(s+T[2])*(g1+g2)+(2*s+T[3])*g3+(3*s+T[5])*(g4+g5) 花费(题目的圆柿子)
=s*(g1+g2+g3+g4+g5)+s*(g3+g4+g5)+s*(g4+g5)+(T[5]-T[2])(g4+g5)+T[2]*(g4+g5)+T[2]*(g1+g2)+(T[3]-T[2])*g3+T[2]*g3
=(s+T[2])*(g1+g2+g3+g4+g5)+(s+T[3]-T[2])*g3+(s+s+T[5]-T[2])*(g4+g5)
=(s+T[2])*(g1+g2+g3+g4+g5)+(s+T[3]-T[2])*(g3+g4+g5)+(s+T[5]-T[3])*(g4+g5)
恩这个柿子看起来好多了嘛,那我们就把ta写进程序吧
代码:
#include <cstdio> #include <cstring> #include <iostream> using namespace std; int sumt[5005],t[5005],sumf[5005],f[5005],dp[5005]; int main() { int n,s,i,j; scanf("%d%d",&n,&s); for (i=1;i<=n;i++) scanf("%d%d",&t[i],&f[i]),sumt[i]=sumt[i-1]+t[i]; for (i=n;i>=1;i--) sumf[i]=f[i]+sumf[i+1]; memset(dp,0x7f,sizeof(dp)); dp[0]=0; for (i=1;i<=n;i++) for (j=1;j<=i;j++) dp[i]=min(dp[i],dp[j-1]+(s+sumt[i]-sumt[j-1])*sumf[j]); printf("%d",dp ); }
相关文章推荐
- TYVJ 1098 任务安排 解体报告
- tyvj1098[luogu 2365]任务安排 batch
- tyvj1098 任务安排
- 【IOI2002】 tyvj1098 任务安排
- TYVJ 1098 任务安排
- [洛谷 P2365] 任务安排 (线性dp)
- poj 1180 IOI202 经典DP任务安排
- [BZOJ2726][SDOI2012]任务安排(DP+凸壳二分)
- Tyvj P1034 尼克的任务 (DP)
- 【LSGDOJ 1333】任务安排 dp
- bzoj 2726 [SDOI2012]任务安排 CDQ分治维护凸包 dp
- [bzoj 2726] 任务安排 (斜率优化 线性dp)
- BZOJ 2726: [SDOI2012]任务安排 [斜率优化DP 二分 提前计算代价]
- BZOJ2726:任务安排(DP+斜率优化+二分)
- Cogs 376. [IOI2002]任务安排(后效性DP)
- 洛谷 P2365 任务安排【dp】
- 乘法游戏(tyvj P1014)区间dp
- 数据结构课程设计---教学任务安排系统【没看】
- [TYVJ-1195] DP
- BZOJ 2726 SDOI 任务安排