poj 1836
2016-05-14 20:36
399 查看
LIS家族举家出动
给出n个士兵的身高,要求留下一些士兵,使得每个士兵向左向右看都可以看到无穷远(要求太高啦(ˉ▽ ̄~) )
怎么办呢?
感觉告诉我们一定是找最长上升子序列
(^o^)/YES!
于是我们就正着找一遍再倒着找一遍,然后枚举寻找最长的类似三角形的序列即可
by >o< neighthorn
给出n个士兵的身高,要求留下一些士兵,使得每个士兵向左向右看都可以看到无穷远(要求太高啦(ˉ▽ ̄~) )
怎么办呢?
感觉告诉我们一定是找最长上升子序列
(^o^)/YES!
于是我们就正着找一遍再倒着找一遍,然后枚举寻找最长的类似三角形的序列即可
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> using namespace std; const int maxn=1000+10; int n; double integer[maxn]; int f[maxn],ref[maxn]; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>integer[i]; for(int i=1;i<=n;i++){ f[i]=1; for(int j=1;j<i;j++) if(integer[i]>integer[j]) f[i]=max(f[i],f[j]+1); } for(int i=n;i>=1;i--){ ref[i]=1; for(int j=n;j>i;j--) if(integer[i]>integer[j]) ref[i]=max(ref[i],ref[j]+1); } int ans=1; for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) ans=max(ans,f[i]+ref[j]); cout<<n-ans<<endl; return 0; }
by >o< neighthorn
相关文章推荐
- JS 将字符串转换成日期类型
- 面向对象的登录系统(QQ登录窗体)
- C++_(矩阵)快速幂
- swift 利用 Reflect(字典转模型)
- httpClient Post 加号会被转换为空格
- 【数据库】where 1=1 和 where 1=0
- HDU 2553 N皇后问题 (DFS)
- 第10、11周程序阅读 继承和派生 1
- 零售行业常见数据分析简介
- SSIS 学习之旅 第一个SSIS 示例(二)
- Android ActionBarSherlock使用教程
- ST表学习
- Apache Flink源码解析之stream-transformation
- Linux 文件系统剖析
- 1095. Cars on Campus (30)——PAT (Advanced Level) Practise
- 机器学习基础(六十三)—— 奇异值分解(SVD)
- Modular Multiplicative Inverse(模乘逆元)
- 我在北京的日子系列之一
- 使用Python处理地理数据文件-多进程处理类
- 返回十进制转换成二进制数的第i位