I - Wish I Knew How to Sort
I - Wish I Knew How to Sort
题意
每次随机选择下标
思路
dp,同样也是期望 dp,先考虑暴力,可以状态压缩,那么
这三种,然后我们发现,其实只有
这个时候式子就没问题了,直接 dp 算即可
注:
距离:这里设距离为最少需要几次交换才能变成目标串
code
点击查看代码
#include <iostream> #include <iomanip> using namespace std; using ll = long long; const int MaxN = 200010, mod = 998244353; ll a[MaxN], t, n, cnt, sum; ll dp[MaxN]; ll qpow(ll a, ll b) { ll res = 1; for (ll i = 1; i <= b; i <<= 1) { (b & i) && (res = res * a % mod); a = a * a % mod; } return res; } int main() { for (cin >> t; t; t--) { cin >> n, cnt = sum = 0; for (ll i = 1; i <= n; i++) { cin >> a[i], sum += a[i] == 0; } for (ll i = 1; i <= n; i++) { if (i <= sum) { cnt += a[i] != 0; } else if (i > sum) { cnt += a[i] != 1; } } cnt /= 2; for (ll i = 1; i <= cnt; i++) { ll a = n * (n - 1) % mod * qpow(2, mod - 2) % mod; dp[i] = ((1 + dp[i - 1] * (i * i % mod * qpow(a, mod - 2) % mod) % mod) * qpow(((1 - ((a - i * i % mod) + mod) % mod * qpow(a, mod - 2) % mod) % mod + mod) % mod, mod - 2) % mod + mod) % mod; } cout << (dp[cnt] % mod + mod) % mod << endl; } return 0; }
本文作者:yabnto
本文链接:https://www.cnblogs.com/ybtarr/p/17600449.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步