首页 > 其他分享 >ARC 187 C

ARC 187 C

时间:2024-11-18 15:07:54浏览次数:1  
标签:const int max ll ARC 187 答案 sim

首先扔出一个结论,如果 \(Q\) 中没有 \(-1\),那么答案是 \(2^k\),其中 \(k=\sum_{i=2}^n [Q_i=\max(P_{1\sim i})]\)。考虑证明。

设 \(Q_i=\max(P_{1\sim i})\) 的位置(包含 \(i=1\))是 \(a_1\sim a_{k+1}\)。那么设 \(f_i\) 为 \(1\sim a_i\) 的答案,显然 \(f_1=1\)。考虑 \(Q_{a_i}\) 放哪。我们发现可以插在前面一个前缀最大值 \(a_j\) 的正后方,而 \(a_j+1\sim a_i\) 是啥都固定了,并且 \(1\sim a_j\) 是 \(f_j\)。那么得出 \(f_i=\sum_{j=1}^{i-1}f_j\),则 \(f_1=1,f_2=1,f_3=1+1=2,f_4=1+1+2=4,\cdots, f_{k+1}=2^k\)。

因此设 \(f_{i,j}\) 为前 \(i\) 位,现在 \(\max\) 是 \(j\) 的答案即可。为了方便,设 \(Q_0=0\),最后答案是 \(\frac{f_{n,n}}{2}\)。

#include <bits/stdc++.h>

using namespace std;

using ll = long long;

const int N = 5e3+3;
const ll mod = 998244353;
const ll i2 = (mod+1)/2;

int n,m,a[N],vis[N],t[N];
ll f[N],s[N];

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);

	cin>>n;
	for (int i=1; i<=n; i++){
		cin>>a[i];
		if (a[i]!=-1) vis[a[i]]=1;
	}
	for (int i=1; i<=n; i++){
		t[i]=t[i-1]+(vis[i]==0);
	}
	f[0]=1;
	for (int i=1,c=0; i<=n; i++){
		if (a[i]!=-1){
			for (int j=1; j<=a[i]; j++){
				f[j]=(f[j]+f[j-1])%mod;
				f[j-1]=0;
			}
			f[a[i]]=(f[a[i]]+f[a[i]])%mod;
		}
		else{
			s[0]=f[0];
			for (int j=1; j<=n; j++){
				s[j]=(f[j]+s[j-1])%mod;
			}
			f[0]=0;
			for (int j=1; j<=n; j++){
				f[j]=(f[j]*(t[j]-c)%mod+s[j-1]*2*(!vis[j]))%mod;
			}
			c++;
		}
		if (i!=n) f[n]=0;
	}
	cout<<f[n]*i2%mod<<"\n";
	return 0;
}

标签:const,int,max,ll,ARC,187,答案,sim
From: https://www.cnblogs.com/SFlyer/p/18552729

相关文章

  • 什么是SMARC?模块电脑(核心板)规范标准简介三
    1. 概念SMARC(Smart Mobility ARChitecture,智能移动架构)是一种通用的小型计算机模块定义,基于ARM和X86技术的模块化计算机低功耗嵌入式架构平台,旨在满足低功耗、低成本和高性能的应用需求。这些模块通常使用与平板电脑和智能手机中相似的ARM SOC,或其他低功耗SOC和CPU。  图......
  • [ARC187B] Sum of CC 题解
    若\(i\)与\(j\)有边,也就是\(a_i<a_j\),那么对于一个\(i<k<j\),会发现\(a_k>a_i\)和\(a_k<a_j\)至少满足一个。也就是说\(k\)也一定和\(i,j\)联通。于是我们发现了一个关键性质:所有联通块都为一个区间。那我们考虑\(i\)和\(i+1\)什么时候不联通:\(i\)之前的任......
  • Elasticsearch 在Linux下的安装部署和配置
    环境CentOS-7-x86_64-DVD-2009.isohttps://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.isoelasticsearch-7.10.0-linux-x86_64.tar.gzhttps://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-10-0https://artifacts.elastic.co/downl......
  • A Message to Garcia
    《AMessagetoGarcia》(《致加西亚的信》)讲述了这样一个故事:1898年4月美国与西班牙之间爆发了争夺殖民地的战争。美国总统麦金利急需一名合适的特使去完成一项重要的任务——将信送给古巴的加西亚将军,因为要与加西亚将军合作对美国赢得战争胜利至关重要。美国陆军一位年轻的中......
  • ElasticSearch常用查询(一)
    一、前言​ 以前做的某个项目中包含了大量的查询聚合,现在有时间整理一番,记录一下ES常用查询聚合语法。二、常用查询语法2.1match查询​ match查询,模糊匹配(自动分词),在进行分词的模糊匹配时,要求该字段的类型是text..keyword类型。GETarticle/_search{"query":{"ma......
  • Manjaro/Arch用怎么安装天翼云电脑(Ctyun-cloud-desk)?感谢信创,感谢国家
    最近微信出了linux版,用vmware装linux不过瘾,把一台闲置的笔记本装上了ManjaroKDEPlasma,经过一段时间的发展,Linux桌面可用性大大提高。Kindle->KindleMate->Anki这条路在linux下我用Kindle->KindleVocab->Anki这么代替了之后,其他软件都能凑合用,加之用了电信的天翼云电脑后......
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细
    续上篇博客(长期更新)《零基础入门ArcGIS(ArcMap)》实验一(上)----空间数据的编辑与处理(超超超详细!!!)-CSDN博客继续更新        本篇博客内容为道路拓扑检查与修正,有对本实验实验目的、实验介绍有不了解的,可以看下上篇博客。        上篇博客有宝子私信我下载......
  • Jarvis March算法详解及Python实现(附设计模式案例)
    目录JarvisMarch算法详解及Python实现(附设计模式案例)第一部分:JarvisMarch算法概述与原理1.1什么是JarvisMarch算法?1.2算法原理1.3算法流程1.4时间复杂度第二部分:JarvisMarch算法的Python实现(面向对象设计)2.1面向对象设计2.2代码实现2.3代......
  • ARC178B
    [ARC178B]1+6=7题面翻译统计满足X+Y=ZX+Y=Z......
  • ARC100D/F Colorful Sequences
    题意定义一个长度为\(n\)的序列为k好序列当且仅当该序列存在一个长度为\(k\)的连续子序列构成\(1\simk\)的排列。定义一个k好序列的权值为特殊序列序列\(\{b_i\}\)在该序列中的出现次数。序列值域为\([1,k]\),求所有k好序列的权值之和。\(n\le2.5\times10^4,k......