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 n2)\).对于字符串 \(s\),如果选其 \(b_i\) 前缀和 \(b_i\) 后缀翻转并交换能变成字符串 \(s'\),则 \(s,s'\) 是相等的.求有多少个长度为 \(n\) 的字符串,字符集大小为 \(k\),互不相等.答案 \(\bmod 998244353\). 数据范围:\(…
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\leq1…
E. Side Transmutations http://codeforces.com/contest/1065/problem/E 题意: 长度为n的字符串,字符集为A,问多少不同的字符串.两个字符串相同: 在给定的数组b中,找到一个数b[i],设k=b[i] 将1~k,与n-k+1~n 的字符串翻转,然后交换位置.新形成的字符串与原来的字符串相等. 分析: 考虑只有一个b[i]的影响,那么对于一个字符串,分成了三段,前面k个,后面k个,中间的.中间的部分就是$A^{n-k-k}$,再看两边…
http://codeforces.com/contest/1065/problem/E 数学推导题 #include <bits/stdc++.h> using namespace std; #define ll long long #define minv 1e-6 #define inf 1e9 #define pi 3.1415926536 #define nl 2.7182818284 ; ; ll mul(ll a,ll b) { ll y=; while (b) { ) y=y*…
昨天不该早点走的.... 首先操作限制实际上是一个回文限制 每个$b[i] - b[i - 1]$互不干扰,不妨设这个串关于中心点对称的这么一对区间的串分别为$(S_1, S_2)$ 题目的限制相当与存在$(T_1, T_2)$使得$T_1 = inv(S_2) \;and\;T_2 = inv(S_1)$ 考虑一对串$(S_1, S_2)$被计数多少次,我们分类讨论一下 一个长为$L$的子串的方案数为$S^L$,即为$f(L)$ 一个长为$L$,字符集为$S$的区间,形成回文串的方案数为$S^…
从两端到中间分段,然后累乘即可 #include<bits/stdc++.h> using namespace std; #define mod 998244353 #define maxn 200005 #define ll long long ll n,m,A,b[maxn]; ll Pow(ll a,ll b){ ll res=; while(b){ )res=a*res%mod; b>>=;a=a*a%mod; } return res; } int main(){ cin…
题目链接 A. Vasya and Chocolate 题意 已知钱,价格,赠送规则求最多获得巧克力数 思路常规算即可 代码 #include <bits/stdc++.h> #define DBG(x) cerr << #x << " = " << x << endl; using namespace std; typedef long long LL; LL t,s,a,b,c; int main(){ cin >&…
幸好我没有打这场,我VP的时候在C题就卡死了,我果然还是太菜了. A Vasya and Chocolate 题意:一个巧克力\(c\)元,买\(a\)赠\(b\),一共有\(n\)元,问能买几个巧克力. 小学数学题. B Vasya and Isolated Vertices 题意:\(n\)个点\(m\)条边的无向简单图最多和最少有几个不和任意点联通的点. 最少很好算,让每条边连接两个独立的点,答案就是\(n-2m\). 最多的话,就是让联通的点尽量组成完全图,这样消耗的边数最多,枚举有几个…
A. Vasya and Chocolate 模拟题.数据会爆\(int\),要开\(long\) \(long\) #include <iostream> #include <cstdio> using namespace std; typedef long long LL; int main(){ int T; scanf("%d", &T); while(T--){ LL s, a, b, c; scanf("%lld%lld%lld%l…