hdu 5489 Removed Interval lis变形
来源:互联网 发布:dapaolu域名更换 编辑:程序博客网 时间:2024/06/05 09:07
题意:
给定长为n的序列问删除长为m的子串后的lis
分析:
我们可以枚举这个长度为m的子串然后 对于每一个子串的lis 应该等于这个子串右边的lis长度加上左边最大值小于右边l的lis
ACcode:
#include <bits/stdc++.h>#define maxn 100010using namespace std;int a[maxn],b[maxn],lis[maxn],dp[maxn];int main(){ int n,m,cnt=1,loop; scanf("%d",&loop); while(loop--){ scanf("%d%d",&n,&m); for(int i=0;i<=n-1;++i){ scanf("%d",&a[i]); b[i]=-a[i]; } int x,ans=0,mxlen=0; memset(lis,0x3f,sizeof(lis)); for(int i=n-1;i>=0;--i){ x=lower_bound(lis,lis+n,b[i])-lis; lis[x]=b[i]; dp[i]=x+1; } memset(lis,0x3f,sizeof(lis)); for(int i=m;i<n;++i){ x=lower_bound(lis,lis+n,a[i])-lis; //从左边的LIS查找 ans=max(ans,x+dp[i]); // 之所以减一是因为我们从左边查找的是大于等于的 x=lower_bound(lis,lis+n,a[i-m])-lis; // 左边更新LIS lis[x]=a[i-m]; mxlen=max(mxlen,x+1); } ans=max(ans,mxlen); //最后要比较下滑动窗口滑动到最后的情况 printf("Case #%d: ",cnt++); printf("%d\n",ans); } return 0;}
0 0
- hdu 5489 Removed Interval LIS变形
- HDU 5489 Removed Interval (LIS,变形)
- hdu 5489 Removed Interval lis变形
- [HDU 5489]Removed Interval[LIS]
- Hdu 5489 Removed Interval【LIS+线段树】
- HDU5489 Removed Interval (LIS变形)
- HDU5489-Removed Interval(LIS变形)
- hdu 5489 Removed Interval(线段树+LIS)
- hdoj 5489 Removed Interval 【线段树维护LIS or LIS变形】
- hdu 5489 Removed Interval
- HDU5489 Removed Interval LIS
- hdu5489 Removed Interval LIS
- 2015合肥网络赛 HDU 5489 Removed Interval LIS+线段树(树状数组)
- HDU 5489 Removed Interval(DP)
- Removed Interval HDU
- HDU 5489 Removed Interval (合肥网络赛 1006 )
- hdu 5489 Removed Interval 动态规划,最长上升子序列
- hdu 5087(LIS变形)
- 曾经的装逼
- 史上最最最炫酷动感的下拉刷新,只需要十秒钟就可以让你完成。
- CodingNet - Learning - 16
- ldap+apache+svn
- js定义类的方式
- hdu 5489 Removed Interval lis变形
- 网络地址基础
- 如何将css,js压缩成jar包maven发布后引用!
- jabc开发基本流程步骤
- 安卓开发之使用双进程守护和进程提权来实现服务进程保活
- Python学习笔记:由range获取列表
- jsp:forward的问题。。。。
- android:手机之间蓝牙通信(四)
- 神的启示(一):Knowing John