link

题意:

给你一个长为m的序列$b_i$,定义两个字符串a,b相同当前仅当a执行以下操作后能变成b:($\rm{prefix}(x,y)$及$\rm{suffix}(x,y)$定义为串x的前/后y位组成的串)

  • 选择一个$k=b_i$;
  • 将$s1=\rm{prefix}(a,k)$和$s2=\rm{suffix}(a,k)$取出;
  • 将s2翻转后接到头部,s1翻转后接到头部;
  • 退出或重复上述操作。

求长为n,字符集大小为x的不相同串个数。

$m\leq2\times10^5,n,x\leq10^9.$

题解:

不太懂题解那个神奇的组合做法。。问到一种polya推法,重新复习了一遍polya定理。

polya定理:在一个置换群F中用t种颜色染色,第i个置换有$k_i$个循环,本质不同的染色数为

$$\begin{equation}\frac{\sum_{i=0}^{|F|}t^{k_i}}{|F|}\end{equation}$$

那么这题里的翻转就是F,可以看做是一些交换操作,如选择$k=b_1$就是交换$(1,n)(2,n-1)...(b_1,n-b_1+1)$这些数对。不难发现一个置换交换了x对数对,就有n-x个循环。

我们可以对b做差分记为c,这样每一个$c_i$对应的是一些互不相交的交换操作,同时通过$2^m$种组合可以组合出任意一种对应原序列b的方案,也就是c和b是等价的。

记$cnt_i$为$n-c_i$也就是$c_i$对应置换的循环个数,由于互不相交,任意一些$c_i$组合后的循环个数可以直接相加。所以最终答案的式子应该是:

$$\begin{equation}\frac{1}{|F|}\sum_{s\subseteq c}x^{n-\sum s}\end{equation}$$

提出$x^n$,此题有$|F|=2^m$。那个枚举c的子集求$x^{\sum s}$部分,用生成函数的思想转化,写成$\prod_{s\in c} (1+x^s)$即可。这样就可以直接算了。

由于指数上有$n-\sum s$,相当于要除法,其实可以提一个$x^{\sum c}$出来,那么后面的指数就变正了。

复杂度一个log。

code:

 #include<bits/stdc++.h>
#define rep(i,x,y) for (int i=(x);i<=(y);i++)
#define ll long long
using namespace std;
const int N=2e5+,mod=,inv2=(mod+)/;
int n,m,x,a[N],ans;
int ksm(int x,int y){
int s=;
for (;y;y>>=,x=(ll)x*x%mod) if (y&) s=(ll)s*x%mod;
return s;
}
int main(){
scanf("%d%d%d",&n,&m,&x);
rep (i,,m) scanf("%d",&a[i]);
ans=ksm(x,n-a[m]);
for (int i=m;i;i--) a[i]-=a[i-],ans=(ll)ans*inv2%mod;
rep (i,,m) ans=(ll)ans*(+ksm(x,a[i]))%mod;
printf("%d\n",ans);
return ;
}

CF1065E Side Transmutations的更多相关文章

  1. 题解-CF1065E Side Transmutations

    CF1065E Side Transmutations \(n\) 和 \(m\) 和 \(k\) 和序列 \(b_i(1\le i\le m,1\le b_i\le b_{i+1}\le \frac ...

  2. CF 1065 E. Side Transmutations

    E. Side Transmutations http://codeforces.com/contest/1065/problem/E 题意: 长度为n的字符串,字符集为A,问多少不同的字符串.两个字 ...

  3. Educational Codeforces Round 52 (Rated for Div. 2) E. Side Transmutations

    http://codeforces.com/contest/1065/problem/E 数学推导题 #include <bits/stdc++.h> using namespace st ...

  4. CodeForces 1065E. Side Transmutations 计数

    昨天不该早点走的.... 首先操作限制实际上是一个回文限制 每个$b[i] - b[i - 1]$互不干扰,不妨设这个串关于中心点对称的这么一对区间的串分别为$(S_1, S_2)$ 题目的限制相当与 ...

  5. 组合数学——cf1065E

    从两端到中间分段,然后累乘即可 #include<bits/stdc++.h> using namespace std; #define mod 998244353 #define max ...

  6. Educational Codeforces Round 52 (Rated for Div. 2)

    题目链接 A. Vasya and Chocolate 题意 已知钱,价格,赠送规则求最多获得巧克力数 思路常规算即可 代码 #include <bits/stdc++.h> #defin ...

  7. [CodeForces]Educational Round 52

    幸好我没有打这场,我VP的时候在C题就卡死了,我果然还是太菜了. A Vasya and Chocolate 题意:一个巧克力\(c\)元,买\(a\)赠\(b\),一共有\(n\)元,问能买几个巧克 ...

  8. Codeforces Edu Round 52 A-E

    A. Vasya and Chocolate 模拟题.数据会爆\(int\),要开\(long\) \(long\) #include <iostream> #include <cs ...

随机推荐

  1. 小贾漫谈——Java反射

    一.Class的API 二.测试使用的JavaBean class Admin{ //字段 public String userName; public String pwd; private int ...

  2. 转:Xcode打印堆栈信息

    2#   分享于 14-11-26 19:15:36 Chrome 39.0.2171.71 Mac OS X 10.10.1 如果只是看调用栈的话,可以使用 lldb 的功能.在你的代码里面打上一个 ...

  3. bzoj千题计划224:bzoj1023: [SHOI2008]cactus仙人掌图

    又写了一遍,发出来做个记录 #include<cstdio> #include<algorithm> #include<iostream> using namesp ...

  4. bzoj千题计划193:bzoj2460: [BeiJing2011]元素

    http://www.lydsy.com/JudgeOnline/problem.php?id=2460 按魔力值从小到大排序构造线性基 #include<cstdio> #include ...

  5. Java入门系列(九)Java API

    String,StringBuilder,StringBuffer三者的区别 1.首先说运行速度,或者说是执行速度 在这方面运行速度快慢为:StringBuilder > StringBuffe ...

  6. MongoDB探索之路(二)——系统设计之CRUD

    1.构造实体类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  7. 第13月第25天 ios11 uitableview reloaddata contentsize

    1. [tableView reloadData]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_ ...

  8. perl6 中将 字符串 转成十六进制

    say Blob.new('abcde'.encode('utf8')).unpack("H*"); say '0x'~'abcde'.encode('utf8').unpack( ...

  9. 【linux kernel】 中断处理-中断下半部【转】

    转自:http://www.cnblogs.com/embedded-tzp/p/4453987.html 欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地 ...

  10. Linux中断(interrupt)子系统之一:中断系统基本原理【转】

    转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于AR ...