首页 > 其他分享 >HDU 5489 Removed Interval(DP)

HDU 5489 Removed Interval(DP)

时间:2023-06-12 14:32:12浏览次数:58  
标签:HDU int scanf 右边 maxn dp LIS Removed DP


题意:求去掉某一个长度为L的子串的LIS

思路:画画图其实比较显然的想法是去掉这个区间的时候答案是右边以第一个数开头的LIS+左边最后一个数小于右边第一个数的LIS,为什么是右边以第一个数开头的LIS呢,因为如果是在这个L的后第二个是最佳答案的话那么我在这个“窗口”滑到L+1这个位置的时候左边会多一个位置,这样答案显然会一样或更优,所以每次只用考虑窗口的右边第一个数的LIS即可,将a[i]取负,然后从后往前做LIS,就是以第i个位置开始的LIS了,然后一边滑窗一边更新左边的LIS更新答案即可



#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
#define inf 1e9
int a[maxn],g[maxn],dp[maxn],b[maxn];
int main()
{
    int T,cas=1;
	scanf("%d",&T);
	while(T--)
	{
		int n,L;
		scanf("%d%d",&n,&L);
		for(int i = 0;i<n;i++)
			scanf("%d",&a[i]),b[i]=-a[i];
		for(int i = 0;i<=n;i++)
			g[i]=inf;
		for(int i = n-1;i>=L;i--)
		{
			int x = lower_bound(g,g+n,b[i])-g;
            g[x]=b[i];
			dp[i]=x+1;
		}
        int ans = 0,maxlen = 0;
		for(int i = 0;i<=n;i++)
			g[i]=inf;
		for(int i = L;i<n;i++)
		{
			int x = lower_bound(g,g+n,a[i])-g;
			ans = max(ans,x+dp[i]);
			x = lower_bound(g,g+n,a[i-L])-g;
			g[x]=a[i-L];
			maxlen = max(maxlen,x+1);
		}
		ans = max(ans,maxlen);
		printf("Case #%d: %d\n",cas++,ans);
	}
}


HDU 5489 Removed Interval(DP)_#define

标签:HDU,int,scanf,右边,maxn,dp,LIS,Removed,DP
From: https://blog.51cto.com/u_16156555/6462561

相关文章

  • HDU 5492 Find a path(DP)
    思路:将式子化开其实就是求(n+m-1)*s1-s2的最小值,s1表示各个格子的平方和,s2表示和的平方,留意到数据范围较小,令dp[i][j][k]为走到第i行第j列当前和为k的平方和的最小值,最后答案就是(n+m-1)*dp[i][j][k]-k*k#include<bits/stdc++.h>usingnamespacestd;#defineinf1e9inta[33][3......
  • TCP 协议快被淘汰了,UDP 协议才是新世代的未来?
    TCP协议可以说是今天互联网的基石,作为可靠的传输协议,在今天几乎所有的数据都会通过TCP协议传输,然而TCP在设计之初没有考虑到现今复杂的网络环境,当你在地铁上或者火车上被断断续续的网络折磨时,你可能都不知道这一切可能都是TCP协议造成的。本文会分析TCP协议为什么在弱网环......
  • 一文了解CDP
    传统营销模式下,我们越来越缺流量,流量也越来也贵;本质上,不是流量真的变少了,而是触点的碎片化,甚至粉末化;广告触达了一部分目标用户,或者顾客光临了店铺(无论线上或线下),已经产生了兴趣,甚至已有明确的意向,或者已经产生了消费,但是,我们既不知道这些用户具体是茫茫人海中哪一位,更无法主动再次......
  • C# 获取系统DPI缩放比例以及分辨率大小
    一般方法System.Windows.Forms.Screen类 //获取当前主屏幕分辨率 intscreenWidth=Screen.PrimaryScreen.Bounds.Width; intscreenHeight=Screen.PrimaryScreen.Bounds.Height;   //获取指定屏幕分辨率 ScreensecondaryScreen=Screen......
  • xrdp远程登陆服务器配置
    如何使用rdp远程Linux(CentOS)的图形化桌面原创 李德荣 EDA运维 2023-04-2721:57 发表于上海收录于合集#软件11个#服务器15个#电脑41个#IT50个#网络21个概述本篇文章以CentOS7.9和CentOSStream9为例,通过安装xrdp组件实现远程登陆实现方案......
  • SpringBoot自带ThreadPoolTaskScheduler实现数据库管理定时任务
    最近做了一个需求:将定时任务保存到数据库中,并在页面上实现定时任务的开关,以及更新定时任务时间后重新创建定时任务。于是想到了SpringBoot中自带的ThreadPoolTaskScheduler。在SpringBoot中提供的ThreadPoolTaskScheduler这个类,该类提供了一个schedule(Runnabletask,Triggert......
  • Java 网络编程 —— 基于 UDP 的数据报和套接字
    UDP简介UDP(UserDatagramProtocol,用户数据报协议)是传输层的另一种协议,比TCP具有更快的传输速度,但是不可靠。UDP发送的数据单元被称为UDP数据报,当网络传输UDP数据报时,无法保证数据报一定到达目的地,也无法保证各个数据报按发送的顺序到达目的地,例如:当发送方先发送包含字符......
  • 概率期望DP做题记录-Part3
    概率期望DP做题记录-Part3P3750[六省联考2017]分手是祝愿什么题目名称题意给定\(n\)个灯的初始状态,每个灯有两个状态亮和灭,通过操作第\(i\)个开关,所有编号为\(i\)的约数(包括\(1\)和\(i\))的灯的状态都会被改变,即从亮变成灭,或者是从灭变成亮。你的目标是使所有灯都......
  • 如何将CHATGPT 整合到WordPress上使用
    CHATGPT出来有一段时间了,一直想琢磨怎么在我们网站上使用CHATGPT, https://www.3cseller.com/ 使用WordPressAjax请求https://api.openai.com/v1/chat/completions返回openai结果,做一个chatgpt在线问答功能  functionopenai_chat_request(){ $content=$......
  • 矩阵乘法与动态 DP 入门
    矩阵乘法及广义矩阵乘法前置知识:矩阵相关基础概念。记\(A(i,j)\)表示矩阵\(A\)的第\(i\)行第\(j\)列,\(n_A\)为\(A\)的行数,\(m_A\)为\(A\)的列数。定义矩阵加法\(A+B\)为(\(n_A=n_B,m_A=m_B\)):\[\\\\\[A+B](i,j)=A(i,j)+B(i,j)\]矩阵加法有交换律,结合......