GYM
来源:互联网 发布:淘宝网成功的原因 编辑:程序博客网 时间:2024/05/17 23:48
题意:你可以一次发很多个包裹,花费为D,一个包裹延迟1s,收费D元,求最小花费。
解题思路:DP即可,详见代码,很好懂,区间DP的思想。对于每一个DP[i],枚举分割点j,即在j之后的都延迟发送包裹。
#include <iostream>#include <algorithm>#include <string>#include <vector>#include <memory.h>using namespace std;typedef long long int ll;int N,D,C;ll a[1005];ll sum[1005];//记录前缀和,用于优化计算速度ll dp[1005];//记录只考虑前i个的时候的最优值int main(){ scanf("%d%d%d",&N,&D,&C); for(int i=1;i<=N;i++){ scanf("%lld",&a[i]); sum[i]=sum[i-1]+a[i]; } memset(dp,0x3f,sizeof(dp)); dp[0]=0; for(int i=1;i<=N;i++) for(int j=0;j<i;j++) dp[i]=min(dp[i],dp[j]+((i-j)*a[i]-(sum[i]-sum[j]))*C+D); //原本是要把a[j]-a[i]的和计算一遍,这里直接用一个公式算出来即可。不用循环。 printf("%lld\n",dp[N]); return 0;}
阅读全文
0 0
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- Gym
- 重新认识java(十) ---- Enum(枚举类)
- python sqlite 时间查询
- 自动驾驶汽车懂得伦理道德吗?
- hibernate一对多多对多映射(注解)
- HADOOP 集群搭建
- GYM
- HDU 1324Pseudo-Random Numbers
- 在Spring容器外调用bean
- Git撤销详解
- SJTU OJ 1056 二哥吃糖
- [转]用VC++实现用Rasdial函数拨号
- SDNU__1194.传纸条&1032.机器人
- 【Data Struct】单链表
- mybatis的一些特殊SQL用法