网友投稿 773 2022-10-20
HDOJ 4512 - 吉哥系列故事——完美队形I
简单的dp...枚举中间点...先处理中间点是一个还是两个..用dp [ i ]代表这个回文在后半段某个位置的最大长度...
Program:
#include#include#include#include#include#include#include#define ll long long #define oo 1000000000using namespace std;int h[205],n,dp[205],ans; int main(){ int T,i,j,k,m; freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); scanf("%d",&T); while (T--) { scanf("%d",&n); for (i=1;i<=n;i++) scanf("%d",&h[i]); ans=0; for (i=1;i<=n;i++) //枚举中简点 { memset(dp,0,sizeof(dp)); dp[i]=1; for (j=i+1;j<=n;j++) if (h[i]==h[j]) break; if (j<=n) dp[j]=2; // 是否可以两个中间点 for (k=i-1;k>=1;k--) { m=0; for (j=i;j<=n;j++) { if (h[j]>h[k] && dp[j]>m) m=dp[j]; if (h[j]==h[k]) dp[j]=m+2; } } for (j=i;j<=n;j++) if (ans 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~
暂时没有评论,来抢沙发吧~