codeforces 234F Fence (dp)
2015-02-05 22:52
344 查看
题意:
给出n个栅栏,需要涂上红色和绿色。红色的面积不能超过啊a,绿色的面积不能超过b。给出每个栅栏的高度,宽度都是1。所得的价值等于相邻栅栏不同颜色的面积。求最小的价值。
题解:
dp[i][2][j]前i个栅栏,第i个栅栏涂成红色,用去j面积的红色栅栏,所得的最小价值。
这题无线TL,就因为输入的时候就超时了,要用文件流读入才能过,坑了2个小时。。。。。
给出n个栅栏,需要涂上红色和绿色。红色的面积不能超过啊a,绿色的面积不能超过b。给出每个栅栏的高度,宽度都是1。所得的价值等于相邻栅栏不同颜色的面积。求最小的价值。
题解:
dp[i][2][j]前i个栅栏,第i个栅栏涂成红色,用去j面积的红色栅栏,所得的最小价值。
这题无线TL,就因为输入的时候就超时了,要用文件流读入才能过,坑了2个小时。。。。。
#include<iostream> #include<math.h> #include<stdio.h> #include<algorithm> #include<string.h> #include<vector> #include<map> using namespace std; typedef long long lld; const int oo=0x3f3f3f3f; const lld OO=1e18; const int Mod=1000000007; const int maxn=50000+5; int dp[2][2][maxn];///前i个点用了花了j个红色得到的最大价值 int h[205]; int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); int a,b,n; scanf("%d %d %d",&n,&a,&b); for(int i=1;i<=n;i++) scanf("%d",&h[i]); memset(dp,0x3f,sizeof dp); dp[0][1][0]=dp[0][0][0]=0; int cur=1,pre=0,w,t; for(int i=0;i<n;i++) { cur^=1; pre+=h[i]; t=min(h[i],h[i+1]); memset(dp[cur^1],0x3f,sizeof dp[cur^1]); for(int j=0;j<=a&&j<=pre;j++) { w=j+h[i+1]; ///下个涂红色 if(j+h[i+1]<=a) { if(dp[cur^1][0][w]>dp[cur][0][j]) dp[cur^1][0][w]=dp[cur][0][j]; if(dp[cur^1][0][w]>dp[cur][1][j]+t) dp[cur^1][0][w]=dp[cur][1][j]+t; } ///下个涂绿色 if(pre-j+h[i+1]<=b) { if(dp[cur^1][1][j]>dp[cur][0][j]+t) dp[cur^1][1][j]=dp[cur][0][j]+t; if(dp[cur^1][1][j]>dp[cur][1][j]) dp[cur^1][1][j]=dp[cur][1][j]; } } } int ans=oo; pre+=h ; cur^=1; for(int i=0;i<=a;i++) { if(pre-i<=b) { if(ans>dp[cur][0][i]) ans=dp[cur][0][i]; if(ans>dp[cur][1][i]) ans=dp[cur][1][i]; } } if(ans>=oo) ans=-1; printf("%d\n",ans); return 0; }
相关文章推荐
- Codeforces 711c 简单dp
- Codeforces 148D Bags of mice 概率dp
- Codeforces 712D Memory and Scores【dp+前缀和】
- Codeforces 582B Once Again...【思维YY+Dp(LIS)】好题~
- CodeForces 447C DZY Loves Sequences (dp 子序列)
- codeforces 592D(树DP)
- [DP 平衡树] Codeforces 809D Round #415 (Div. 1) D. Hitchhiking in the Baltic States
- CodeForces 455A Boredom (dp)
- Codeforces 868F - Yet Another Minimization Problem (分治DP,莫队)
- Codeforces 327E Axis Walking 状压dp(水
- Codeforces 212E IT Restaurants 树形dp(水
- codeforces 543A A. Writing Code(完全背包优化dp )
- CodeForces 543A Writing Code(dp)
- Codeforces 623B Array GCD(枚举情况+dp)
- 【codeforces 734E】Anton and Tree【缩点+DP】
- CodeForces 115E Linear Kingdom Races(线段树 + DP)
- CodeForces 598E Chocolate Bar(DP|记忆化搜索)
- codeforces 731D (DP 二分 二维RMQ)
- Codeforces 709E. Centroids 树形DP
- 【DP】[CodeForces - 713C]Sonya and Problem Wihtout a Legend