POJ1836 - Alignment(LIS)
2013-08-13 20:32
316 查看
题目大意
一队士兵排成一条直线,问最少出队几个士兵,使得队里的每个士兵都可以看到又端点或者左端点题解
从左往右搞一遍LIS,然后从右往左搞一遍LIS,然后枚举即可。。。代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define MAXN 1005 double a[MAXN]; int d[MAXN],c[MAXN]; int main() { int n; while(cin>>n) { memset(d,0,sizeof(d)); memset(c,0,sizeof(c)); for(int i=1; i<=n; i++) { cin>>a[i],d[i]=1,c[i]=1; } for(int i=2; i<=n; i++) for(int j=1; j<i; j++) if(a[j]<a[i]&&d[j]+1>d[i]) d[i]=d[j]+1; for(int i=n-1; i>=1; i--) for(int j=i+1; j<=n; j++) if(a[j]<a[i]&&c[j]+1>c[i]) c[i]=c[j]+1; int ans=max(d ,c[1]); for(int i=1; i<n; i++) for(int j=i+1; j<=n; j++) ans=max(ans,d[i]+c[j]); cout<<n-ans<<endl; } return 0; }
相关文章推荐
- POJ 1836 Alignment( LIS )
- POJ 1836 Alignment 双向LIS+DP
- poj 1836 Alignment(双向LIS)
- POJ 1836-Alignment(DP/LIS变形)
- POJ 1836 Alignment 变形的LIS
- POJ 1836 Alignment (动态规划LIS)
- POJ 1836-Alignment(LIS-士兵列队)
- POJ 1836 Alignment (LIS)
- POJ-1836-Alignment-双向LIS-注意double精度
- POJ 1836 Alignment (线性dp LIS的两种姿势)
- POJ 1836 Alignment【LIS】
- POJ 1836 Alignment(DP | LIS)
- poj-1836-Alignment解题报告 LIS
- POJ 1836 Alignment 枚举中间点双向求LIS
- POJ 1836 Alignment --LIS&LDS
- POJ 1836-Alignment(DP/LIS变形)
- POJ 1836 Alignment DP LIS
- POJ 1836 Alignment(LIS)
- POJ 1836 Alignment(LIS和LDS的结合题)
- POJ 1836 Alignment LIS变形(最长上升子序列)