首页 > 其他分享 >[Codeforces] CF1817A Almost Increasing Subsequence

[Codeforces] CF1817A Almost Increasing Subsequence

时间:2023-12-21 19:12:40浏览次数:39  
标签:geq Almost int Subsequence Maxn 序列 Increasing CF1817A

CF1817A Almost Increasing Subsequence

题意

给定长度为 \(n\) 一个序列 \(a\) 以及 \(q\) 次询问,每次询问给出 \(l\) 和 \(r\),找出序列 \(a\) 在 \([l,r]\) 内最长的几乎递增子序列。

对于几乎递增的定义:如果一个序列中不存在连续的三个数 \(x\),\(y\),\(z\),使得 \(x \ge y \ge \ z\),则这个序列是几乎递增的。

思路

注意到,当有连续的\(x\geq y\geq z\)时,只需要拿走一个\(y\),即可破坏这个三元组,将序列变为“几乎递增”的

所以,可以用一个前缀和\(f_i\)表示\(a_3\)到\(a_i\)之间满足\(a_{i-2}\geq a_{i-1}\geq a_i\),那么最终的答案就是\(r-l+1-(f_r-f_{l+1})\)

简单解释一下,因为在\([l,r]\)这段区间里,我们每遇到一个三元组不满足题目要求都可以通过删除一个元素使其满足题目要求,所以最少删除的元素就是\(f_r-f_{l+1}\)个

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int Maxn=2e5+10;
int a[Maxn],f[Maxn];
int n,q,l,r;
void run()
{
	cin>>n>>q;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=3;i<=n;i++)
	{
		if(a[i-2]>=a[i-1] && a[i-1]>=a[i]) f[i]=1;
		else f[i]=0;
		f[i]+=f[i-1];
	}
	while(q--)
	{
		cin>>l>>r;
		cout<<r-l+1-(r-l+1<=2?0:(f[r]-f[l+1]))<<endl;
	}
}
signed main()
{
	run(); 
	return 0;
}

标签:geq,Almost,int,Subsequence,Maxn,序列,Increasing,CF1817A
From: https://www.cnblogs.com/lyk2010/p/17919918.html

相关文章

  • [ARC133B] Dividing Subsequence
    DividingSubsequence这道题与最长公共子序列类似,可以先去水一水那道题。题意本题就是让你从\(p\)里面选出一个子序列\(b_i\)和\(q\)里面选出一个子序列\(a_i\),我们要使\(b_i\)是\(a_i\)的倍数。解法本题直接用动态规划,是\(O(n^2)\)做法,会超时,因此我们用树状数......
  • [CF83E] Two Subsequences 题解
    [CF83E]TwoSubsequences题解思路定义\(overlap(a,b)\)为字符串\(a\)的后缀与\(b\)的前缀的最大相等的长度,有\(|f(a,b)|=|a|+|b|-overlap(a,b)\),下文称匹配为相邻两串的\(overlap\)。观察到每次操作之后,一定有一个序列是以\(a_i\)为结尾的。所以根据这个......
  • D2. Xor-Subsequence (hard version)
    D2.Xor-Subsequence(hardversion)Itisthehardversionoftheproblem.Theonlydifferenceisthatinthisversion$a_i\le10^9$.Youaregivenanarrayof$n$integers$a_0,a_1,a_2,\ldotsa_{n-1}$.Bryapwantstofindthelongestbeautifulsub......
  • 【刷题笔记】115. Distinct Subsequences
    题目Giventwostrings s and t,return thenumberofdistinctsubsequencesof s whichequals t.Astring's subsequence isanewstringformedfromtheoriginalstringbydeletingsome(canbenone)ofthecharacterswithoutdisturbingtheremainingch......
  • [USACO22OPEN] Up Down Subsequence P
    [USACO22OPEN]UpDownSubsequenceP注意到这个问题是不弱于直接求LIS的,因此考虑dp。设\(f_i\)表示以\(i\)结尾的最长这个什么串的长度,显然没办法直接转移,那么暴力的想法就是多设一维,这样自然就寄了。我们考虑到这样一件事情:如果我们假装对于所有的\(j\),\(j<f_i\)时......
  • [ARC122E] Increasing LCMs
    ProblemStatementWehaveasequenceof$N$positiveintegers:$A_1,A_2,\cdots,A_N$.Youaretorearrangetheseintegersintoanothersequence$x_1,x_2,\cdots,x_N$,where$x$mustsatisfythefollowingcondition:Letusdefine$y_i=\operatorname{LCM}(x......
  • CodeForces 946F Fibonacci String Subsequences
    洛谷传送门CF传送门duel的时候差点不会2400了。套路地,考虑每个\(F(x)\)中与\(s\)相同的子序列的贡献。设这个子序列为\(F(x)_{p_1},F(x)_{p_2},F(x)_{p_3},\ldots,F(x)_{p_n}\)。我们想要它成为一个子序列的子串,那么\(F(x)_{[p_1,p_n]}\)中除了\(p_1\simp_......
  • Almost Tight Multi-User Security under Adaptive Corruptions from LWE in the Stan
    Abstract.Inthiswork,weconstructthefirstdigitalsignature(SIG)andpublic-keyencryption(PKE)schemeswithalmosttightmulti-usersecurityunderadaptivecorruptionsbasedonthelearning-with-errors(LWE)assumptioninthestandardmodel.OurP......
  • PAT 甲级【1007 Maximum Subsequence Sum】
    本题是考察动态规划与java的快速输入:max[i]表示第i个结尾的最大的连续子串和。bbegin[i]表示第[begin[i],i]为最大和的开始位置超时代码:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassMain{@Suppres......
  • CF568E Longest Increasing Subsequence 题解
    LongestIncreasingSubsequenceLIS问题有两种主流\(O(n\logn)\)解法,最常见的树状数组法,以及不那么常见的二分法。然后考虑本题,发现一个神奇的思路就是求出LIS后倒序复原出数组。进一步思考后发现,因为本题是LIS(LongestIncreasingSubsequence)而非LNDS(LongestNon-Decr......