hdu 4512吉哥系列故事——完美队形I(动态规划LCIS)
2016-07-14 16:49
363 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4512
RT,很容易发现这是一个最长公共递增子序列问题。
不过这道题数据很小,n只有200,理论上直接暴力应该是可以过的,未尝试。
很久没写动态规划了,手残调试了很久,具体见代码吧。。。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=1e3;
int T,n,m;
int a[maxn],b[maxn];
int dp[maxn];
int main(){
#ifndef ONLINE_JUDGE
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
#endif
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",a+i);
b[i]=a[i];
}
reverse(b+1,b+n+1);
memset(dp,0,sizeof(dp));
int ans=0;
for(int i=1;i<=n;i++){
int k=0;
for(int j=1;j<=n-i+1;j++){
if(a[i]==b[j]){
if(i+j!=n+1){
dp[j]=max(dp[j],dp[k]+2);
}
else{
dp[j]=max(dp[j],dp[k]+1);
}
}
else if(a[i]>b[j]&&dp[k]<dp[j])
k=j;
ans=max(ans,dp[j]);
}
}
printf("%d\n",ans);
}
return 0;
}
RT,很容易发现这是一个最长公共递增子序列问题。
不过这道题数据很小,n只有200,理论上直接暴力应该是可以过的,未尝试。
很久没写动态规划了,手残调试了很久,具体见代码吧。。。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=1e3;
int T,n,m;
int a[maxn],b[maxn];
int dp[maxn];
int main(){
#ifndef ONLINE_JUDGE
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
#endif
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",a+i);
b[i]=a[i];
}
reverse(b+1,b+n+1);
memset(dp,0,sizeof(dp));
int ans=0;
for(int i=1;i<=n;i++){
int k=0;
for(int j=1;j<=n-i+1;j++){
if(a[i]==b[j]){
if(i+j!=n+1){
dp[j]=max(dp[j],dp[k]+2);
}
else{
dp[j]=max(dp[j],dp[k]+1);
}
}
else if(a[i]>b[j]&&dp[k]<dp[j])
k=j;
ans=max(ans,dp[j]);
}
}
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- HDU 3607 线段树
- 命令执行不能使用空格绕过
- MySQL详解--锁,事务
- Java 构造方法的执行过程(猜测)
- MySQL数据库系列之建立高性能的索引
- Bitmap的高效加载
- 浏览器不能正常上网
- OpenJ_Bailian 4081 树的转换 数据结构
- Android之edittext取消默认弹出软键盘
- Git使用小结
- 自定义类,外面调用的属性是只读,但是可以在自定义类内部设置修改属性
- Candies POJ 3159 (堆优化的SPFA,)
- 【VS开发】【智能语音处理】特定人语音识别算法—DTW算法
- 双向队列的应用
- linux 网卡配置参数详解
- xss利用之kali神器beef
- 王道部分笔记
- Python 面向对象编程容易忽视的知识点
- ASP.NET Web API 自定义MediaType实现jsonp跨域调用
- NOIP2016A组模拟7.13】字符串匹配