Educational Codeforces Round 52: E. Side Transmutations(burnside引理)

 

E. Side Transmutations

 

题意:

给一个字符集A,考虑所有长度为n的字符串S,里面所有的字符都来自于字符集A,再给出m个参数b[1]~b[m],定义一种改变字符串S的操作为按顺序执行如下内容:

  1. 从b[]里选一个当k
  2. 把S的前k个字符和后k个字符分别倒置,然后交换位置

定义两个字符串等价,当且仅当一个字符串能经过若干次上述操作后变成另一个字符串

统计有多少个本质不同的字符串,答案模998244353

 

思路:

考虑进行5次上述操作的操作序列为{b[1], b[4], b[5], b[6], b[4]},可以手推发现它和操作序列{b[1], b[5], b[6]} 等价,也就是说操作序列中如果同一个bi出现两次,那么这两次操作可以抵消,除此之外还会发现操作与顺序无关

那么根据Bunside引理

可以得出|G| = 2^m,也就是b[]的所有不同集合都是一个置换

然后上面公式求就可以了,可以依次算出每个b[i]对不动点的个数的贡献,具体见代码

 

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<string>
#include<math.h>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
#define LL long long
#define mod 998244353
LL b[200005];
LL Pow(LL a, LL b)
{
	LL ans = 1;
	while(b)
	{
		if(b%2)
			ans = ans*a%mod;
		a = a*a%mod;
		b /= 2;
	}
	return ans;
}
int main(void)
{
	int k, i;
	LL n, m, ans;
	scanf("%lld%d%lld", &n, &k, &m);
	for(i=1;i<=k;i++)
		scanf("%lld", &b[i]);
	ans = 1;
	for(i=1;i<=k;i++)
		ans = ans*(Pow(m, b[i]-b[i-1])+Pow(m, 2*(b[i]-b[i-1])))%mod;
	ans = ans*Pow(m, n-b[k]*2)%mod;
	ans = ans*Pow(Pow(2, k), mod-2)%mod;
	printf("%lld\n", ans);
	return 0;
}

 

 

根据提供的引用内容,Codeforces Round 511 (Div. 1)是一个比赛的名称。然而,引用内容中没有提供与这个比赛相关的具体信息或问题。因此,我无法回答关于Codeforces Round 511 (Div. 1)的问题。如果您有关于这个比赛的具体问题,请提供更多的信息,我将尽力回答。 #### 引用[.reference_title] - *1* [Codeforces Round 860 (Div. 2)题解](https://blog.csdn.net/qq_60653991/article/details/129802687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Codeforces Round 867 (Div. 3)(A题到E题)](https://blog.csdn.net/wdgkd/article/details/130370975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Codeforces Round 872 (Div. 2)(前三道](https://blog.csdn.net/qq_68286180/article/details/130570952)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值