首页 > 其他分享 >AT_arc151_b A < AP

AT_arc151_b A < AP

时间:2024-12-20 16:34:47浏览次数:7  
标签:cnt return fa int leq AP arc151 数组

Tag: 并查集,数学

题目描述

给定一个 \(1\sim N\) 的排列 \(P\),找到符合以下条件的 \(A\) 数组的数量 \(\bmod 998244353\)。

  • 对于 \(1\sim N\) 的每一个 \(i\),\(1\le A_i\le M\)。
  • \(A\) 数组字典序小于 \((A_{P_1},A_{P_2},\cdots,A_{P_n})\) 数组。

制約

  • $ 1\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
  • $ 1\ \leq\ M\ \leq\ 10^9 $
  • $ 1\ \leq\ P_i\ \leq\ N $
  • $ i\ \neq\ j\ \implies\ P_i\ \neq\ P_j $
  • 入力はすべて整数

思路

我们令序列 \(B=A_{p_{1}},A_{p_{2}},\cdots,A_{p_{n}}\),题目要求 \(A<B\),那可以枚举 \(A\) 中第一个比 \(B\) 小的位置。那么问题就可以转化成一个求连通块的问题。用并查集维护连通块。

当前有 \(p\) 个连通块就代表有 \(p\) 个可以填数的位置,
用快速幂就可以求出方案数。由于 \(A < B\),所以 \((A_i,A_{p_i})\) 就有 \(\dfrac{m(m-1)}{2}\) 种方案。

#include<bits/stdc++.h>
#define int long long
#pragma GCC optmize(3)
using namespace std;
const int mod=998244353;
int n,m,ans;
int cnt;
int p[200005],fa[200005];
int find(int x)
{
	if(fa[x]==x) return x;
	return fa[x]=find(fa[x]);
}
int pow(int a,int b,int p)
{
	int cnt=1;
	while(b)
	{
		if(b&1) cnt=cnt*a%p;
		a=a*a%p;
		b>>=1;
	}
	return cnt%p;
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>p[i];
		fa[i]=i;
	}
	cnt=n;
	for(int i=1;i<=n;i++)
	{
		int x=find(i),y=find(p[i]);
		if(x!=y)
		{
			ans=(ans+(pow(m,cnt-2,mod)*(m*(m-1)/2%mod))%mod)%mod;
			cnt--;
			fa[x]=y;
		}
	}
	cout<<ans<<"\n";
	return 0;
}

标签:cnt,return,fa,int,leq,AP,arc151,数组
From: https://www.cnblogs.com/yaaaaaan/p/18619516

相关文章

  • OpenApi 下达指令
    Completions模型将字符串作为输入,模型将返回一个或多个预测的完成项。大多数开发者应该使用的chatCompletionsAPI来使用OpenAI最好和最新的模型。大部分支持传统Completions端点的模型将在2024年1月4日停止服务ChatCompletionsAPlChatCompletions服务是一种特定的Complet......
  • Go使用zap和lumberjack库,实现每小时间轮转日志文件
    创建一个文件夹,命名为 loggerDemo打开这个文件夹打开终端,点击左下角叉和感叹号在弹出的窗口中点击TERMINAL进入终端(也可以使用快捷键CTRL+` 直接打开) 初始化Go的ModulegomodinitloggerDemo点击文件创建图标创建文件创建一个名为main.go的文件,按下回车......
  • WPF StrokeStartLineCap Flat,Square,Round,Triangle
    <Windowx:Class="WpfApp74.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • Web APIs - 第6章笔记
    正则表达式什么是正则表达式?正则表达式(RegularExpression)是一种字符串匹配的模式(规则)使用场景:例如验证表单:手机号表单要求用户只能输入11位的数字(匹配)过滤掉页面内容中的一些敏感词和高亮搜索关键字(替换)从字符串中获取我们想要的特定部分(提取)正则基本......
  • App端合并需求
      用这次的测试版本,去对比上一次的release版本,看数据是否一致马上分期Android?数据看板,这三个去掉新开发的在ors-portal-test,与最新的realse版本进行比对(原生的就和这个对比,向开发确认ctest4是否为最新的),web端与ctest1对比这次是用这个来测试,这个是新开发的要测的链接  ......
  • 微信小程序、H5、Web 和 App 是不同的移动应用开发和部署形式。每种形式都有其特定的
    微信小程序、H5、Web和App是不同的移动应用开发和部署形式。每种形式都有其特定的技术架构、使用场景和优缺点。以下是这些平台的详细对比,按关键因素表格化:对比维度微信小程序H5WebNativeApp平台支持微信平台(需安装微信)任何支持浏览器的设备(手机、PC、平板等)......
  • 六款电脑端简单好用的时间管理app对比推荐
    今天分享六款压箱底的时间管理app,简单且好用,让你从此不再拖延!因为我平时工作用Windows电脑比较多,所以主要介绍可以在Win电脑端使用的,部分app还支持在手机端实时同步!1、微软待办todo微软生态系统集成,“我的一天”可将今日任务展示于首页及Widget小组件。“建议”功能能筛选......
  • scrapy中pipelines文件封装用sqlalchemy写入mysql数据库
    #前提必须安装 pymysql  sqlalchemy  scrapy#scrapy的piplines文件中fromsqlalchemyimportcreate_engine,text,insertimportpymysqlfromscrapy.utils.projectimportget_project_settingsclassMySQLPipeline:defopen_spider(self,spider):settings=......
  • MapperScannerConfigurer 配置出错造成没有读取 db.properties 文件中的数据库连接参
    MyBatis-Spring实现MyBatis和Spring框架集成。问题现象在配置中碰到不能加载MySQLJDBC驱动的问题,报错如下(部分截取):09:59:06.595[C3P0PooledConnectionPoolManager[identityToken->z8kfltb71qnbl7e1cco0kz|23833818]-HelperThread-#2]WARNc.m.v2.c3p0.DriverManager......
  • https://github.com/mvysny/vok-helloworld-app修改内容
    build.gradle.kts:importorg.gradle.api.tasks.testing.logging.TestExceptionFormatimportorg.jetbrains.kotlin.gradle.dsl.JvmTargetimportorg.jetbrains.kotlin.gradle.tasks.KotlinCompileplugins{kotlin("jvm")version"2.1.0"......