首页 > 其他分享 >CF1744F MEX vs MED 题解

CF1744F MEX vs MED 题解

时间:2024-04-08 16:57:07浏览次数:19  
标签:MED ch CF1744F 题解 len int operatorname sim getchar

题目传送门

题目大意

给定一个数列,求满足 \(\operatorname{mex}(a_l\sim a_r)>\operatorname{med}(a_l\sim a_r)\) 的区间 \([l,r]\) 的个数。

解题思路

记 \(p_i\) 为 \(i\) 出现的位置。

我们可以枚举 \(d\),先确定 \(\operatorname{mex}(a_l\sim a_r)>d\) 的区间。由于数列是 \(0\sim n-1\) 的排列,所以这个区间必须包含 \(0\sim d\)。用 \(l\) 记录区间最大左端点,\(r\) 记录区间最小左端点。可以在线维护 \(l,r\),即 \(l = \min\{l,p_d\},r = \max\{r,p_d\}\)。

接下来在考虑 \(\operatorname{med}(a_l\sim a_r)=d\)。由于这个区间已经包含了 \(0\sim d\),所以长度就是 \(2\times d+2\) 和 \(2\times d+1\)。知道长度后,就可以 \(O(1)\) 统计答案了。

时间复杂度为 \(O(n)\),可以通过本题。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
template <typename T> inline void read(T &x) {
    x = 0; char ch = getchar(); int f = 1;
    while (!isdigit(ch) && ch ^ '-') ch = getchar();
    if (ch == '-') f = -1, ch = getchar();
    while (isdigit(ch)) x = x * 10 + ch - 48, ch = getchar(); x *= f;
}
const int N = 1e7+5,mod = 41719;
int ans,n,a[N],l = N+1,r,p[N];
void work(int len)
{
	if(r-l+1>len) return;
	int _l = max(1ll,r-len+1),_r = min(l,n-len+1);
	ans+=max(0ll,_r-_l+1);
}
signed main()
{
	read(n);
	for(int i = 1;i<=n;i++)
		read(a[i]),p[a[i]] = i;
	for(int i = 0;i<n;i++)
	{
		l = min(l,p[i]),r = max(r,p[i]);
		int len = i*2+2;
		work(len),work(len-1);
	}
	cout<<((n+1)*n/2-ans)%mod;
	return 0;
}

标签:MED,ch,CF1744F,题解,len,int,operatorname,sim,getchar
From: https://www.cnblogs.com/pyy51316/p/18121689

相关文章

  • CF1951E No Palindromes 题解
    题目大意给出一个字符串sss,要求将sss分为若干个非回文子串,输出......
  • 谢启鸿高等代数第四版习题7.7部分习题解析part2.以及部分第7章复习题
    7.7部分定理:以为特征值的K阶若当块个数为11.设n阶矩阵A的特征值全为1,求证:对任意的正整数K,与A相似。证明:=(易证故此处不再证明)而且的特征值全为1。的特征值为1的k阶若当块的个数为接下来只需证明相似于即可;即证明两者有相同的约当标准型.由书上7.8节的数学归纳可以知道......
  • Unity编辑器中运行正常,发布后报shader为null异常问题解决方案
    在Unity中,Shader是从代码中进行加载的,编辑器中并没有引用。在编辑器中运行项目没有问题,但当项目发布到移动平台,如ios、android、UWP之后,游戏中并不能找到对应的shader。因为Shader在场景中并未被引用,所以没有被打包。解决办法1在ProjectSettings里面的Graphics,添加上修改的打包......
  • P4462 题解
    题目传送门请确保您接触过莫队再阅读此文:对于所有询问,和普通莫队一样的分块然后排序。在这里只讨论add和del操作的具体实现。题目中需要求一段区间的异或值,所以我们可以预处理序列\(a\)的“前缀异或值”pre_xor,题目中的\(a_x\bigoplusa_{x+1}\bigoplus\dots\bigopl......
  • 布署到centos7.9时,ModuleNotFoundError No module named ‘_sqlite3‘
    先下载编译sqlite3wgethttp://www.sqlite.org/sqlite-3.5.6.tar.gzcdsqlite-3.5.6./configure--disable-tclmake&&makeinstall注意addLIBDIRtothe‘LD_LIBRARY_PATH’environmentvariable,这是sqlite建议添加环境变量。所以:echoexportLD_LIBRARY_PATH=/usr/......
  • ABC348G题解
    令\(f_i\)为当\(k=i\)时的答案。令\(g_i\)为\(f_i+\max\limits_{j\inS}b_j\)。也就是不减去\(b\)的最大值的结果。直接做是\(O(n^2)\)的,考虑分治,令两个子问题的\(f,g\)分别为\(fl,gl\)和\(fr,gr\)。合并的时候做一个\[f_i=\max(\max\limits_{c+d=i}(gl_c+fr......
  • 蓝桥杯嵌入式2023年第十四届省赛主观题解析
    1 题目2 代码/*Includes------------------------------------------------------------------*/#include"main.h"#include"adc.h"#include"rtc.h"#include"tim.h"#include"gpio.h"/*Privateinclud......
  • Hetao P1178 冒险者 题解 [ 绿 ][ 最短路 ][ 线性 dp ]
    原题题解本蒟蒻采用的和大部分人解法不同,是根据当前标记值的总和跑最短路的一种解法。思路30min,调代码2h的我太蒻了首先观察题面可以发现本题求的是最少操作数,由于要求最小且有变化的过程,所以可以使用dp求解,也可以使用最短路算法求解,本篇先介绍最短路的算法。其实......
  • ABC218E Destruction题解
    ABC218EDestruction题解题意给你一个\(n\)个点\(m\)条边的带权无向联通图,你可以删去任意条边,要求保证图联通的情况下删去边的权值和最大。\((n\le2\cdot10^5\,\m\le2\cdot10^5\,\-10^9\lee_i\le10^9)\)(\(e_i\)为边权)分析首先我们考虑边权全为正的情况,那么我们删......
  • 【解题报告】RbOI Round 1,A&D题解
    【RbOIR1】A&D题解其他题题解请移步B、C点击图片跳转比赛:A.AnxiousRobin从左到右扫一遍,按照题意模拟即可。这里解释一下我的代码:因为只判断了六种字母,所以遇到-会直接过滤,无需特判。展开代码#include<bits/stdc++.h>#definelllonglong#defineMyWifeCrista......