SRM 559 div 2【AK】
2012-10-31 16:39
288 查看
250pt.
题意:给定n块砖,编号0~n-1,选一定的砖摞起来,要求上面的砖编号比下面的大,并且偶数高度的不能放在奇数高度的上面,求最大高度。
解法: dp[i][0]记录选完前i块并且此时最上面一块高度为偶数的最优解
dp[i][1]记录选完前i块并且此时最上面一块高度为奇数的最优解。。。
1000pt
题意:给定n块砖,编号0~n-1,选一定的砖摞起来,要求上面的砖编号比下面的大,并且偶数高度的不能放在奇数高度的上面,求最大高度。
解法: dp[i][0]记录选完前i块并且此时最上面一块高度为偶数的最优解
dp[i][1]记录选完前i块并且此时最上面一块高度为奇数的最优解。。。
1000pt
#include<iostream> #include<cstring> #include<string> #include<algorithm> #include<vector> #define M 55 using namespace std; class ToyTrain{ public: int getMinCost(vector <string> s){ int r[M][M],d[M][M]; int hash[M]; bool v[M][M]; memset(hash,0,sizeof(hash)); memset(r,0,sizeof(r)); memset(d,0,sizeof(d)); int ans=0; for(int i=0;i<s.size();i++){ for(int j=0;j<s[i].size();j++){ int up,right; up=right=0; if(j-1>=0) right=r[i][j-1]; if(i-1>=0) up=d[i-1][j]; if(s[i][j]=='.'||(s[i][j]>='0'&&s[i][j]<='9')){ if(right==0&&up==0)continue; else if(!(right!=0&&up!=0)){ r[i][j]=right; d[i][j]=up; if(s[i][j]>='0'&&s[i][j]<='9'){ if(!hash[s[i][j]-'0']){ ans+=(s[i][j]-'0'); hash[s[i][j]-'0']=1; } } s[i][j]='S'; } else return -1; } else if(s[i][j]=='A'){ if(right==0&&up==0){ r[i][j]=1;d[i][j]=1; } else if(right==0&&up!=0){ if(up==1){ return -1; } else{ r[i][j]=1; d[i][j]=0; } } else if(right!=0&&up==0){ if(right==1){ return -1; } else{ r[i][j]=0; d[i][j]=1; } } else{ if(!(right==-1&&up==-1)) return -1; } } else if(s[i][j]=='B'){ if(right==0&&up==0){ r[i][j]=-1; d[i][j]=-1; } else if(right==0&&up!=0){ if(up==-1){ return -1; } else{ r[i][j]=-1; d[i][j]=0; } } else if(right!=0&&up==0){ if(right==-1){ return -1; } else{ r[i][j]=0; d[i][j]=-1; } } else{ if(!(right==1&&up==1)) return -1; } } else{ if(right==up){ return -1; } else if(right==0&&up!=0){ r[i][j]=0; d[i][j]=up; } else if(right!=0&&up==0){ d[i][j]=0; r[i][j]=right; } } } } memset(v,0,sizeof(v)); bool flag=0; for(int i=0;i<s.size();i++){ int sum=0; for(int j=0;j<s[i].size();j++){ sum+=d[i][j]; if(s[i][j]=='A'||s[i][j]=='B'||s[i][j]=='S')flag=1; } if(sum!=0)return -1; } for(int j=0;j<s[0].size();j++){ int sum=0; for(int i=0;i<s.size();i++){ sum+=r[i][j]; } if(sum!=0)return -1; } if(flag==0)return -1; else return ans; } };
相关文章推荐
- SRM 559 Div1 500 HatRack
- tc srm 636 div2 500
- SRM565 DIV2
- topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
- [容斥] Topcoder SRM div1-3 12004. SetAndSet
- topcoder srm 451 div2 level 3 PizzaDelivery
- Topcoder SRM 663 Div2 Hard: CheeseRolling(状压DP)
- topcoder srm 713 div1 -3
- topcoder srm 485 div1
- SRM 573 div2
- TopCoder SRM 612 DIV 1 450 SpecialCells
- Topcoder SRM 666 DIV 1
- Topcoder SRM144 div2 1100
- SRM 507 DIV1 B
- SRM 658 DIV1 650 二分答案 动态规划
- SRM 513 DIV1 C
- [TopCoder] SRM 578 DIV 2, Goose In Zoo, Solution
- 竞赛图的得分序列 (SRM 717 div 1 250)
- Topcoder SRM 643 Div1 250<peter_pan>
- topcoder_SRM_616_div2