UVA 111

来源:互联网 发布:mac chrome 书签备份 编辑:程序博客网 时间:2024/05/22 04:40

  这题简直不要这么难以理解,具体翻译可以看NOCOW上给出的翻译:http://www.nocow.cn/index.php/UVA/111。

  理解题意之后很明显是一个球最长上升子序列的dp问题,定义状态dp(i) 为第i个答案能和之前给出的答案组合得到的最高分,那么状态转移方程为dp(i)=max{dp(j)}+1  (0<=j<i)。

#include <iostream>#include <cstring>using namespace std;int main(){int n,r[30]={0},ss[30]={0},dp[30]={0};cin>>n;for(int i=1;i<=n;i++) cin>>r[i];int temp;while(cin>>temp){int ans=0;ss[temp]=1;for(int i=2;i<=n;i++){cin>>temp;ss[temp]=i;}for(int i=1;i<=n;i++){int Max=0;for(int j=0;j<i;j++) if(r[ss[i]]>r[ss[j]]){if(dp[j]>Max) Max=dp[j];}dp[i]=Max+1;if(dp[i]>ans) ans=dp[i];}cout<<ans<<endl;}return 0;}


 

0 0
原创粉丝点击