hdu5489 Removed Interval dp+线段树优化

现在看这题居然直接秒了。。。去年看的时候还以为神题。。

设以第i项为结尾的lis前缀为f[i],以第j项为结尾的lis后缀为g[i],如果求出f[i]和g[j],然后枚举i,快速找到最大的满足a[j]>a[i]的g[j]就可以了。注意到如果将f[i]从后往前枚举,那么只要添加g[j]而不用删除操作了,因此枚举f[i],在线段树中找(a[i]+1,Xn]中g的最大值就可以了,ans=f[i]+max(g[j]) (a[j]>a[i]且j>i+L),然后顺势把g[j]插入线段树。

求f[i]也是dp+线段树优化,f[i]=max(f[j])+1 (a[j]<a[i])。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#define REP(i,a,b) for(int i=a;i<=b;i++)
#define MS0(a) memset(a,0,sizeof(a))
#define key_val ch[ch[rt[i]][1]][0]
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1using namespace std;typedef long long ll;
const int maxn=1000100;
const int INF=1e9+10;int n,L;
int a[maxn],X[maxn],Xn;
int f[maxn],g[maxn];
int Max[maxn<<2];void push_up(int rt)
{Max[rt]=max(Max[rt<<1],Max[rt<<1|1]);
}void build(int l,int r,int rt)
{if(l==r){Max[rt]=0;return;}int m=(l+r)>>1;build(lson);build(rson);push_up(rt);
}void update(int p,int c,int l,int r,int rt)
{if(l==r){Max[rt]=max(Max[rt],c);return;}int m=(l+r)>>1;if(p<=m) update(p,c,lson);else update(p,c,rson);push_up(rt);
}int query(int L,int R,int l,int r,int rt)
{if(L>R) return 0;if(L<=l&&r<=R) return Max[rt];int m=(l+r)>>1;int res=0;if(L<=m) res=max(res,query(L,R,lson));if(R>m) res=max(res,query(L,R,rson));return res;
}int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);#endifint T;cin>>T;REP(casen,1,T){scanf("%d%d",&n,&L);REP(i,1,n) scanf("%d",&a[i]),X[i]=a[i];sort(X+1,X+n+1);Xn=unique(X+1,X+n+1)-(X+1);REP(i,1,n) a[i]=lower_bound(X+1,X+Xn+1,a[i])-X;build(1,Xn,1);f[0]=0;REP(i,1,n) f[i]=query(1,a[i]-1,1,Xn,1)+1,update(a[i],f[i],1,Xn,1);build(1,Xn,1);int ans=0,tmp=0;for(int i=n;i>=1;i--){int j=i-L;if(j>=0){tmp=f[j]+query(a[j]+1,Xn,1,Xn,1);ans=max(ans,tmp);}g[i]=query(a[i]+1,Xn,1,Xn,1)+1;update(a[i],g[i],1,Xn,1);}printf("Case #%d: %d\n",casen,ans);}return 0;
}
View Code

 

转载于:https://www.cnblogs.com/--560/p/5211163.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS原型链理解

1. 每个对象都有原型属性(__proto__)2. 对象的原型(__proto__)指向其构造函数(Constructor)的prototype属性3. 构造函数(Constructor)的prototype属性本身也是一个对象&#xff0c;其原型(__proto__)亦指向其构造函数的prototype4. 如此形成一个链式结构&#xff0c;而Construc…

【深度学习】——2021年FPN特征金字塔

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2021/4/22 17:06 # Author : linlianqin # Site : # File : fpn.py # Software: PyCharm # description:其搭建的基本流程和resnet是一致的&#xff0c;只是将每一层的卷积结果保存了起来import torch impo…

NoSQL分类及ehcache memcache redis 三大缓存的对比

NoSQL分类 由于NoSQL中没有像传统数据库那样定义数据的组织方式为关系型的&#xff0c;所以只要内部的数据组织采用了非关系型的方式&#xff0c;就可以称之为NoSQL数据库。目前&#xff0c;可以将众多的NoSQL数据库按照内部的数据组织形式进行如下分类&#xff1a; Key/Value的…

52.4. APC Cache (php-apc - APC (Alternative PHP Cache) module for PHP 5)

$ apt-cache search php-apc php-apc - APC (Alternative PHP Cache) module for PHP 5$ sudo apt-get install php-apcapc cache 状态监控 http://pecl.php.net/package/APC 下载解包找到apc.php,放到web服务器上 原文出处&#xff1a;Netkiller 系列 手札 本文作者&#xff1…

乐视云计算基于OpenStack的IaaS实践

本文作者岳龙广&#xff0c;现在就职于乐视云计算有限公司&#xff0c;负责IaaS部门的工作。 从开始工作就混在开源世界里&#xff0c;在虚拟化方面做过CloudStack/Ovirt开发&#xff0c;现在是做以OpenStack为基础的乐视云平台。所以对虚拟化情有独钟&#xff0c;也对虚拟化/云…

【深度学习】——如何提高map值

目录 代码获取 map原理 map提高技巧 技巧总结&#xff1a; 实战&#xff1a; 1、效果不佳map55.55% 1&#xff09;单独调整get_dr_txt.py中的self.iou 0.3 2&#xff09;单独调整get_map,py中的minoverlap: 3)同时调整minoverlap和self.iou 本文是在faster_rcnn模型的…

每日站立会议个人博客(冲刺周)-Wednesday

时间未完成不知道如何获取具体标签里的内容正在做爬虫技术之获取标签里的内容将要做对运用爬虫技术获取的数据进行处理转载于:https://www.cnblogs.com/andibier/p/8075098.html

数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)...

第1章 引言 随着互联网应用的广泛普及&#xff0c;海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用&#xff0c;每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能&#xff0c;横…

【深度学习】——纠错error: Unable to find vcvarsall.bat:关于安装pycocotools

1、安装包下载 大佬改写支持 Windows 的 COCO 地址&#xff1a;https://github.com/philferriere/cocoapi 下载后如下&#xff1a; 进入pythonAPI 先后运行&#xff1a; python setup.py build_ext --inplacepython setup.py build_ext install 出现以下标志时&#xff0c…

【小贴士】虚拟键盘与fixed带给移动端的痛!

前言今天来公司的主要目的就是研究虚拟键盘与fixed的问题&#xff0c;期间因为同事问起闭包与事件委托&#xff08;阻止冒泡&#xff09;相关问题&#xff0c;便穿插了一篇别的&#xff1a;【小贴士】工作中的”闭包“与事件委托的”阻止冒泡“&#xff0c;有兴趣的朋友可以去看…

[OJ] Wildcard Matching (Hard)

LintCode 192. Wildcard Matching (Hard)LeetCode 44. Wildcard Matching (Hard) 第二次刷还是被这题虐. 其实就是跪在一个地方, 就是关于mustFail的地方. 当*p && !*s的时候, 说明s已经被用完了, p还没有被穷尽, 这种情况下要直接退出所有的递归返回false, 因为s都匹配…

CSS3 -webkit-transition(属性渐变)

-webkit-transition&#xff1a;CSS属性(none|all|属性) 持续时间 时间函数 延迟时间 CSS属性(transition-property)&#xff1a;要变化的属性&#xff0c;比如元素变宽则是width&#xff0c;文字颜色要变色这是color&#xff1b;W3C给出了一个可变换属性的列表&#xff1a;…

vxworks的default boot line说明

boot程序的主要功能是引导vxworks 内核,所以boot程序需要知道vxworks的内核存放在何处&#xff0c;通过什么手段去获取。在vxworks缺省的boot程序里有一条内建的default boot line,它指明了获得vxworks内核的途径&#xff0c;在boot程序启动时&#xff0c;它先寻找NVRAM里面有无…

【机器视觉】——相机和镜头的选择

目录 1、相机选择 2、镜头选择 3、其他计算公式 1)芯片尺寸计算:

React Native中pointerEvent属性

在React Native界面开发中, 如果使用绝对定位布局,在代码运行时的某个时刻有可能会遮盖住它的下方的某个组件。这是因为绝对定位只是说这个组件的位置由它父组件的边框决定。 绝对定位的组件可以被认为会覆盖在它前面布局&#xff08;JSX代码顺序&#xff09;的组件的上方. 如果…

Rar Java Zip

http://wolfdream.iteye.com/blog/428588转载于:https://www.cnblogs.com/diyunpeng/p/5218381.html

库卡机器人CELL程序解析

KUKA机器人 CELL程序 解析及注释&ACCESS RVP&REL 4&COMMENT HANDLER on external automaticDEF CELL ( );EXT EXAMPLE1 ( );EXT EXAMPLE2 ( );EXT EXAMPLE3 ( ) ;FOLD INITDECL CHAR DMY[3]DMY[]"---";ENDFOLD (INIT);FOLD BASISTECH INIIR_STOPM ( )…

Ubuntu 16.04服务器安装及软件配置

1.配置静态地址 vim /etc/network/interfaces auto enp1s0 iface enp1s0 inet static address 192.168.1.131 netmask 255.255.255.0auto enp2s0 iface enp2s0 inet static address 192.168.2.131 netmask 255.255.255.0auto enp3s0 iface enp3s0 inet static address 192.168.…

[软件测试airtest软件安装]——填坑

目录 1、安装Python环境&#xff08;版本问题&#xff09; 2、连接手机出现连接上了但是无法进行点击 airtest官网&#xff1a; https://airtest.doc.io.netease.com/for_newer/ 关于软件测试刚入门的可以参考进行了解&#xff1a;https://airtest.doc.io.netease.com/tuto…

KUKA 机器人SPS.SUB程序解析

&ACCESS RVO&COMMENT PLC on controlDEF SPS ( );FOLD DECLARATIONS;FOLD BASISTECH DECL;Automatik externDECL STATE_T STAT定义STATE_T类型的变量。该结构为&#xff1a;STRUC STATE_T CMD_STAT RET1&#xff0c; CMD_STAT是枚举类型数据&#xff0c;组成了STATE_…