CFGym 101490D DP
来源:互联网 发布:potplayer for mac 编辑:程序博客网 时间:2024/06/06 01:03
题意
有N条船,每条船过河需要20S,桥放下和拉起需要60S,要求使得桥放下之后的总时间最小,问这个最小的总时间
题解
想清楚了就发现很简单。。。
状态转移方程如下:dp[i]代表前i条船通过所需要的最少时间
dp[i]=min(dp[i],dp[i-j]+max(a[i]-a[i-j+1]+20-1800,j*20)+120);
对于一条船,这条船有可能是在前面某一条船把桥拉起的时候,没有放下,然后通过可以得到最小值。因此暴力去枚举究竟会在哪一条船把桥拉起之后没有放下去,而是等待这条船通过再拉起就可以了。
代码
#include<bits/stdc++.h>#define UP(i,l,h) for(int i=l;i<h;i++)#define DOWN(i,h,l) for(int i=h-1;i>=l;i--)#define W(t) while(t)#define MEM(a,b) memset(a,b,sizeof(a))#define LL long long#define INF 0x3f3f3f3f#define EPS 1e-6#define MAXN 1010#define MOD 100000007#define COUT(x) cout<<x<<endl#define PI acos(-1)using namespace std;int a[4010];int dp[4010];int main(){ int n; scanf("%d",&n); MEM(a,0); UP(i,1,n+1){ scanf("%d",&a[i]); } MEM(dp,0); UP(i,1,n+1){ dp[i]=INF; UP(j,1,i+1){ dp[i]=min(dp[i],dp[i-j]+max(a[i]-a[i-j+1]+20-1800,j*20)+120); } } printf("%d\n",dp[n]);}
阅读全文
0 0
- CFGym 101490D DP
- CFGym - 101102D.Rectangles 单调栈+dp优化
- CFgym 100803D -Space Golf
- CFGym 101002C 状压DP
- CFGym
- CFGym
- CFGym
- CFGym
- CFGym
- CFgym:Outer space invaders(区间dp)
- CFgym:Teamwork(dp & 过河问题)
- CFgym:Memory Manager(dp & 单调队列优化)
- CFGYM 2013-2014 CT S01E03 D题 费用流模版题
- CFgym:Castle(KMP)
- 229D - Towers DP
- codeforce 143D dp
- cf 413D DP
- cf 408D DP
- 重载运算符之->
- Mysql
- Educational Codeforces Round 30 B. Balanced Substring
- 重拾JS-对象
- 阿里巴巴Java开发规约插件全球首发!
- CFGym 101490D DP
- JVM虚拟机运行时数据区域的理解
- poj3126 埃式筛法+bfs
- hdu2017青岛网络赛Zuma(区间dp)
- Scrapy
- 迷宫问题
- Friend Circles
- C# SocketAsyncEventArgs 实现异步通信
- 类和对象的区别