博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 1471 Defense Lines
阅读量:6325 次
发布时间:2019-06-22

本文共 923 字,大约阅读时间需要 3 分钟。

题意:

  给一个长度为n(n <= 200000) 的序列,你删除一段连续的子序列,使得剩下的序列拼接起来,有一个最长的连续递增子序列

分析:

  就是最长上升子序列的变形。需要加一个类似二分搜索就好。

代码:

  

#include 
#include
#include
#include
using namespace std; const int maxn=200005; const int INF=1000000000; int a[maxn],g[maxn],d[maxn]; int r[maxn]; int l[maxn]; int main() {
int t,n,ans; scanf("%d",&t); while(t--) {
scanf("%d",&n); int i,j; for(i=0;i
=0;i--) {
if(a[i]>=a[i+1]) r[i]=1; else r[i]=r[i+1]+1; } for(i=1;i<=n-1;i++) {
if(a[i]>a[i-1]) l[i]=l[i-1]+1; else l[i]=1; } ans=-1; for(i=1;i<=n;i++) g[i]=INF; for(i=0;i

转载于:https://www.cnblogs.com/137033036-wjl/p/4960525.html

你可能感兴趣的文章
DWZ实践——Dialog到NavTab的跳转
查看>>
在LINUX下面如何查看CPU的温度
查看>>
gitlab忘记密码
查看>>
我的友情链接
查看>>
Memcached的代理服务器软件——magent
查看>>
我的友情链接
查看>>
The type *** is not accessible due to restricti...
查看>>
variant conversion error for variable: V67 (或其它数字)
查看>>
MyBatis学习总结(七)——Mybatis缓存
查看>>
RabbitMQ学习总结(一)——基础概念详细介绍
查看>>
关于ls vim查看中文乱码问题
查看>>
FileReader读取文件编码丢失问题(乱码)
查看>>
国内DNS方面的技术力量
查看>>
ORACLE排错记录
查看>>
我热爱编程,但我讨厌这个行业
查看>>
alwayson高可用性组
查看>>
都是编译器惹的祸
查看>>
文件权限
查看>>
route命令
查看>>
用 cgroups 管理 cpu 资源
查看>>