DP-记忆化dp--Bribe the Prisoners
2014-05-12 20:59
423 查看
题目大意:
t 组测试数据,n个人在监狱,要放出m个人,每放出一个人,他周围的人(两边连续的直到碰到空的监狱或者尽头)都要贿赂1个钱,问最少的总花费
算法:
动态规划:
需要释放的人的序号为a[i]
记dp[i][j]为a[i]到a[j]范围内(a[i],a[j])(开区间)的最小的花费。
则dp[i][j]=min(dp[i][k]+dp[k][j]+a[j]-a[i]-2,dp[i][j]);
实现:摘自网络
摘自-挑战程序设计竞赛
t 组测试数据,n个人在监狱,要放出m个人,每放出一个人,他周围的人(两边连续的直到碰到空的监狱或者尽头)都要贿赂1个钱,问最少的总花费
算法:
动态规划:
需要释放的人的序号为a[i]
记dp[i][j]为a[i]到a[j]范围内(a[i],a[j])(开区间)的最小的花费。
则dp[i][j]=min(dp[i][k]+dp[k][j]+a[j]-a[i]-2,dp[i][j]);
实现:摘自网络
#include <iostream> #include <cstring> #include <cstdio> using namespace std; const int maxn=110; const int inf=1e9; int n,m,a[maxn],d[maxn][maxn]; void initial(){ for(int i=0;i<=m+1;i++) for(int j=0;j<=m+1;j++) d[i][j]=inf; } void input(){ a[0]=0;a[m+1]=n+1; for(int i=1;i<=m;i++) scanf("%d",&a[i]); } int dp(int i,int j){ if(d[i][j]!=inf) return d[i][j]; if(i+1>=j) return 0; for(int k=i+1;k<=j-1;k++){ d[i][j]=min(dp(i,k)+dp(k,j)+(a[j]-a[i]-2),d[i][j]); } return d[i][j]; } void computing(){ cout<<dp(0,m+1)<<endl; } int main(){ //freopen("C-large-practice.in","r",stdin); //freopen("C-large-practice.out","w",stdout); int t; cin>>t; for(int i=1;i<=t;i++){ scanf("%d%d",&n,&m); initial(); input(); printf("Case #%d: ",i); computing(); } return 0; }
摘自-挑战程序设计竞赛
#include<stdio.h> #include<string.h> #include<iostream> #include <limits.h> using namespace std; int p,q,a[10010]; int dp[10010][10010]; void solve(){ a[0]=0; a[q+1]=p+1; for(int i=0;i<=q;i++) dp[i][i+1]=0; for(int w=2;w<=q+1;w++){ for(int i=0;i+w <=q+1;i++){ int j=i+w,t=INT_MAX; for(int k=i+1;k<j;k++){ t=min(t,dp[i][k]+dp[k][j]); } dp[i][j]=t+a[j]-a[i]-2; } } cout<<dp[0][q+1]<<endl; } int main(){ cin>>p>>q; for(int i=1;i<=q;i++) cin>>a[i]; solve(); return 0; }
相关文章推荐
- Google Code Jam 2009, Round 1C C. Bribe the Prisoners (记忆化dp)
- Google Code Jam 2009, Round 1C C. Bribe the Prisoners (记忆化dp)
- Google Code Jam 2009, Round 1C C. Bribe the Prisoners (记忆化dp)
- Google Code Jam 2009, Round 1C C. Bribe the Prisoners (记忆化dp)
- Bribe the Prisoners——GCJ 2009 Round1C C(区间dp)
- Bribe the Prisoners(GCJ 2009 Round 1C C)(dp)
- 挑战2.7.3 Round 1C 2009 C. Bribe the Prisoners 区间dp
- 记忆化搜搜——Code Jam 2009 Round 1C #C Bribe the Prisoners
- 129_Bribe the Prisoners_DP
- GCJ1C09C - Bribe the Prisoners
- GCJ 2009 Round 1C C (Bribe the Prisoners)
- GCJ--Bribe the Prisoners (2009 Round 1C C)
- 刷题: bribe the prisoners(2009 Round 1C C)
- UVA - 11324 The Largest Clique 强连通缩点+记忆化dp
- 130_Bribe the Prisoners 囚徒贿赂问题 (2009 Round1C C)
- Bribe the Prisoners
- GCJ 2009 Round1C C Bribe the Prisoners
- Codeforces Round #286 (Div. 2) C题 Mr. Kitayuta, the Treasure Hunter (DFS+记忆化DP)
- [Code Jam] Bribe the Prisoners
- GCJ 2009 Round 1C Bribe the Prisoners