首页 > 其他分享 >CF1788D Moving Dots 题解

CF1788D Moving Dots 题解

时间:2023-03-13 21:24:06浏览次数:50  
标签:Dots CF1788D 题目 int 题解 maxn

可能更好的阅读体验

题目传送门
题目翻译

题目解析

考虑怎样才能产生贡献,显然对于留下的相邻的 \(l,r\),需要让 \(l\) 向右,\(r\) 向左即可产生 \(1\) 的贡献。
接下来就是考虑如何计算 \(l\) 向右 \(r\) 向左的方案数,其实就是计算左右两边最多可以留下的个数 \(x\),方案数就是 \(2^x\)。
考虑把左右两边的分开计算。

我们发现,如果我们要让 \(l\) 向右,枚举右边的 \(l+1\) 到 \(n\) 作为 \(l\) 右边相邻的数,那么最左边可以留下的个数是单调不增的,所以枚举每一个 \(l\),我们用双指针扫一次就好了。
另一边同理。时间复杂度就是 \(\Theta(n^2)\)。

int n,a[maxn],le[maxn][maxn],ri[maxn][maxn]; ll ans,pw[maxn];
int main(){
#ifdef LOCAL
	freopen("1.in","r",stdin);
#endif
	n=read(); int i,j,k; pw[0]=1;
	for(i=1;i<=n;i++) a[i]=read(),pw[i]=pw[i-1]*2%MOD;
	for(i=1;i<n;i++){
		k=i-1;
		for(j=i+1;j<=n;j++){
			while(a[i]-a[k]<=a[j]-a[i]&&k) k--;
			ri[i][j]=k;
		}
	}
	for(i=2;i<=n;i++){
		k=i+1;
		for(j=i-1;j>=1;j--){
			while(a[i]-a[j]>a[k]-a[i]&&k<=n) k++;
			le[i][j]=n-k+1;
		}
	}
	for(i=1;i<n;i++) for(j=i+1;j<=n;j++)
		ans+=pw[ri[i][j]+le[j][i]],ans%=MOD;
	print(ans); return 0;
}

标签:Dots,CF1788D,题目,int,题解,maxn
From: https://www.cnblogs.com/jiangtaizhe001/p/17212916.html

相关文章

  • [整理]NOIP2021 题解
    T1秒了,直接写一个线性筛一样的东西即可。constintN=10000010;intT,x;boolok[N];intnxt[N];ilvoidInit(){for(inti=1;i<N;i++){if(ok[i])continue;......
  • 【题解】P6071 『MdOI R1』Treequery
    题目描述给定一棵\(n\)个点的无根树,边有边权。令\(E(x,y)\)表示树上\(x,y\)之间的简单路径上的所有边的集合,特别地,当\(x=y\)时,\(E(x,y)=\varnothing\)。你需......
  • docker安装笔记及常见问题解决
    1.yum安装gcc相关环境yum-yinstallgccyum-yinstallgcc-c++2.卸载旧版本(非必要)yumremovedocker\docker-client\docker-client-latest\doc......
  • 由于找不到 visa32.dll问题解决办法
    由于找不到visa32.dll,无法继续执行代码。重新安装程序可能会解决此问题。 金山官网下载https://www.ijinshan.com/filerepair/visa32.dll.shtml由于找不到NiViSv32.d......
  • 【题解】[HEOI2013]Segment(李超树)
    [HEOI2013]Segment题目分析:是李超线段树的板子题,在这里就稍微提一嘴李超线段树吧。其实李超线段树就是用来解决插入线段,查询\(x=k\)时纵坐标的最大值的。对于李超线......
  • P7728 旧神归来 题解
    日常生活:写多项式——写多项式题解——颓——写多项式——写多项式题解——颓——……最近真的降智。大水题切不动。#查询gtm1514精神状态题解好像挺清新的。首先我......
  • [转]mysql问题解决SELECT list is not in GROUP BY clause and contains nonaggregate
    原文地址:mysql问题解决SELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn-慕尘-博客园(cnblogs.com)今天在Ubuntu下的部署项目,发现一些好......
  • 【Pytorch】RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED 问题解决
    问题起因:在运行论文代码时出现了RuntimeError:cuDNNerror:CUDNN_STATUS_NOT_INITIALIZED报错。 解决方法:如果不是cuda、cudnn配置的问题,那有可能是电脑的线......
  • 【磁盘空间不足问题解决】Docker 日志清理、
    问题描述:1、系统无法访问,提示“无法访问此网站”2、启动Docker镜像提示错误信息,如下:“Errorresponsefromdaemon:Cannotrestartcontainer7f812bfba45f:write/v......
  • 群晖提示无法安装此文件问题解决
    安装群晖的时候你可能会碰到如下情况:群晖安装DSM的时候提示:“无法安装此文件,文件可能已经毁损。(13)”还是讨厌的红色其实是U盘引导没有修改VID所致,用ChipGenius芯片精灵......