首页 > 其他分享 >【题解】CF1817 合集

【题解】CF1817 合集

时间:2023-09-19 21:22:58浏览次数:49  
标签:pre ck cnt NN int 题解 CF1817 合集

CF1817A Almost Increasing Subsequence

考虑几乎上升的序列的长度,就是我们的区间长度减去 \(a_{i-2} \geq a_{i-1} \geq a_i\) 的对数,然后维护即可,当然个人感觉自己的代码有点长,可以考虑看洛谷题解代码

code:

#include<bits/stdc++.h>
using namespace std;
const int NN = 2e5 + 8;
int n,q;
int a[NN];
int pre[NN],cnt[NN],ck[NN];
int main(){
//	freopen("1.out","w",stdout);
	scanf("%d%d",&n,&q);
	for(int i = 1; i <= n; ++i) scanf("%d",&a[i]);
	for(int i = 1; i <= n; ++i){
		if(i < n && a[i] >= a[i+1]) pre[i] = 1,ck[i] = 1;
		if(i < n && a[i] >= a[i+1] && a[i-1] < a[i]) cnt[i] = 1;
		pre[i] += pre[i-1];
		cnt[i] += cnt[i-1];
	}
//	for(int i = 1; i <= n; ++i) printf("%d ",pre[i]);puts("");
//	for(int i = 1; i <= n; ++i) printf("%d ",cnt[i]);puts("");
	while(q--){
		int l,r;
		scanf("%d%d",&l,&r);
		if(l == r){puts("1");continue;}
		if(l == r-1){puts("2");continue;}
		printf("%d\n",(r-l+1) - (pre[r-1] - pre[l-1]) + (cnt[r-1] - cnt[l] + ck[l]));
	}
}

标签:pre,ck,cnt,NN,int,题解,CF1817,合集
From: https://www.cnblogs.com/rickylin/p/17715842.html

相关文章

  • CF840C 题解
    一、题目描述:给你一个长度为$n$的序列$a_1\sima_n$,$0\lea_i\le1\times10^9$。求有多少种$1\simn$的全排列$b$,使得对于$i\in[2,n],a_{b_i}\timesa_{b_{i-1}}$不是完全平方数。本题中完全平方数的定义:若存在某个整数$k$,使得$k^2=x$,则$x$是一个......
  • 9.18CF1817题解
    9.18CF1817题解A.AlmostIncreasingSubsequence题意给定长度为\(n\)一个序列\(a\)以及\(q\)次询问,每次询问给出\(l\)和\(r\),找出序列\(a\)在\([l,r]\)内最长的几乎递增子序列。对于几乎递增的定义:如果一个序列中不存在连续的三个数\(x\),\(y\),\(z\),使得\(x\g......
  • 题解 AGC058B 【Adjacent Chmax】
    postedon2022-08-1500:08:56|under题解|sourceproblem一个长为\(n\)的排列\(P\),每次可以选择一个\(i\),令\(v=\max(P_i,P_{i+1})\),使\(P_i=P_{i+1}=v\),求若干次操作后有多少种不同的序列。\(1\leqn\leq5000\)。solution显然地,对于一个\(P_i\),它要么被完全覆盖......
  • AT_arc165_d 题解
    AT_arc165_d[ARC165D]SubstringComparison题解Links洛谷AtCoderDescription给定正整数\(n,m\)和\(m\)个形如\((A_{i},B_{i},C_{i},D_{i})\)的限制条件。判断是否存在一个长度为\(n\)的序列\(P\)满足\(\foralli\in[1,m]\),\(P_{A_{i}\dotsB_{i}}\)字典序......
  • AT_arc165_b 题解
    AT_arc165_b[ARC165B]SlidingWindowSort2题解Links洛谷AtCoderDescription给定正整数\(n,k\)和一个长度为\(n\)的整数\(P\),你需要选择一个长度为\(k\)的区间\([l,l+k-1]\),将这个区间从小到大排序。找到操作后最终字典序最大的排列。\(1\leqk\leqn\l......
  • 【Android】折叠效果CoordinatorLayout+AppBarLayout首页效果&& CoordinatorLayout抖
    亲测效果如下:布局结构<?xmlversion="1.0"encoding="utf-8"?><android.support.constraint.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto&qu......
  • Azamon Web Services 题解
    AzamonWebServices看到目前题解都是\(O(n^2)\)的复杂度,来一发\(O(nlogn)\)的贪心题解。思路很简单,先求经过至多一次的交换后,最小的字符串\(S\)。再和\(T\)比较,如果小于就输出,否则无解。问题转化成了两个子问题:求经过至多一次的交换后,最小的字符串\(S\)。和\(T\)......
  • CF762C Two strings 题解
    洛谷传送门CF传送门题意给你两个字符串\(a\)和\(b\),你可以在\(b\)中删去尽量短的子段,使得\(b\)是\(a\)的子序列。求出最后的\(b\)。思路真是奇了怪了,这种题洛谷题解里竟然没有双指针的做法?首先考虑判断一个字符串\(b\)是否是另一个字符串\(a\)的子序列。这......
  • Alice and Hairdresser题解
    AliceandHairdresser第一眼线段树,第二眼好像可以直接用数组模拟。当一根头发长于\(l\),它再长多长其实都一样,所以不用开longlong。如果一根新的头发长到比\(l\)长,那可以分成以下几种情况:如果它左侧和右侧只有一个元素大于\(l\),那答案不变。如果左侧和右侧都大于......
  • c# winform打开外部程序异常问题解决方案
    c#winform中打开外部程序的常规操作是使用Process类,此时,如果外部程序没有对路径的操作或其他路径文件的操作时,通常不会出现报错或异常;反之,会出现找不到路径或者直接抛出异常。此种情况主要是因为外部程序和当前程序不在一个路径下导致的,以下是解决方案:System.IO.Directory.Set......