Google Code Jam 2009, Round 1C C. Bribe the Prisoners (记忆化dp)
2017-12-09 13:58
267 查看
我们开始分析
假设1-10 我们取3 和 5和 7
1 - 10
1-4 5 6-10 hanshu(1,10)=hanshu(1,4)+hanshu(6,10)+ (a[10]-a[1]-2)这部分是取5所能获得的
基本dp我们就找到了。通过记忆化dp来做
#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;
}
假设1-10 我们取3 和 5和 7
1 - 10
1-4 5 6-10 hanshu(1,10)=hanshu(1,4)+hanshu(6,10)+ (a[10]-a[1]-2)这部分是取5所能获得的
基本dp我们就找到了。通过记忆化dp来做
#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;
}
相关文章推荐
- 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)
- 记忆化搜搜——Code Jam 2009 Round 1C #C Bribe the Prisoners
- Bribe the Prisoners——GCJ 2009 Round1C C(区间dp)
- 挑战2.7.3 Round 1C 2009 C. Bribe the Prisoners 区间dp
- The Next Number-Google Code Jam 2009 Round 1B B题
- Bribe the Prisoners(GCJ 2009 Round 1C C)(dp)
- Crazy Rows (GoogleCode Jam 2009 Round2 A)
- Google Code Jam 2009 Qualification Round Problem A. Alien Language
- GCJ 2009 Round 1C C (Bribe the Prisoners)
- Google Code Jam 2009 Qualification Round Problem B. Watersheds
- [C++]Saving the Universe——Google Code Jam Qualification Round 2008
- 130_Bribe the Prisoners 囚徒贿赂问题 (2009 Round1C C)
- Google Code Jam 2009 Qualification Round Problem C. Welcome to Code Jam
- GCJ 2009 Round 1C Bribe the Prisoners
- dp - Google Code jam Qualification Round 2015 --- Problem B. Infinite House of Pancakes
- google code jam 2009 round1 c
- GCJ--Bribe the Prisoners (2009 Round 1C C)
- 2009 Google Code Jam Qualification Round 题解