1778D Flexible String Revisit

题目大意:

给你两个长度均为\(n\)二进制数列:\(S,T\) 每次可以把\(S\)中的一位取反,问你\(S \to T\)的期望方案数。

做法:

dp

我们考虑\(dp_i\)表示\(i\)个不一样的位置\(\to i - 1\)个不一样的位置的期望方案数

每次有\(\dfrac{i}{n}\)的概率翻转一个未匹配字符,\(\dfrac{n - i}{n}\)的概率翻转一个已匹配字符。翻转到已匹配字符需要 \(f_{i + 1}\)期望次数才能回到当前状态,然后又需要\(f_i\)期望次数才能翻转一个未匹配字符。于是有方程:

\(f_i = 1 + \dfrac{n - i}{n} * (f_{i + 1} + f_i)\)

化简一下:

\(f_i = \dfrac{n + (n - i) * f_{i + 1}}{i}\)

注意

当所有字符未匹配时随意翻一个都是未匹配字符,所以\(f_n = 1\)

设初始状态有\(k\)个字符需要匹配,那么\(ans = \sum_{i = 1}^{x}\)

code

#include<bits/stdc++.h>
using namespace std;
const long long mod = 998244353;
const int N = 1e6 + 5;
int n;
char s[N] , t[N];
long long fac[N + 5] , inv[N + 5] , ans , f[N] , p;
long long ksm (long long x , long long y) {
if(!y)
return 1;
long long z = ksm (x , y / 2);
z = z * z % mod;
if (y & 1)
z = z * x % mod;
return z;
}
void pre () {
fac[0] = 1;
for (int i = 1 ; i <= N ; i ++) {
fac[i] = fac[i - 1] * i % mod;
}
inv[N] = ksm(fac[N] , mod - 2);
for (int i = N - 1 ; i >= 0 ; i --) {
inv[i] = inv[i + 1] * (i + 1) % mod;
}
}
int main () {
int T , dif;
pre ();
scanf ("%d" , &T);
while(T --) {
scanf ("%d" , &n);
scanf("%s%s",s+1,t+1);
dif = 0;
for (int i = 1 ; i <= n ; i++) {
if (s[i] != t[i]) {
dif ++;
}
}
inv[n] = ksm(n , mod - 2);
f[n] = 1;
for (int i = n - 1 ; i >= 1 ; i--) {
f[i] = (n + (n - i) * f[i + 1] % mod) * ksm (i , mod - 2) % mod;
}
ans = 0;
for (int i = 1 ; i <= dif ; i++) {
ans = (ans + f[i]) % mod;
}
printf("%lld\n" , ans);
}
return 0;
}

1778D Flexible String Revisit的更多相关文章

  1. python3.3 unicode(encode&decode)

    最近在用python写多语言的一个插件时,涉及到python3.x中的unicode和编码操作,本文就是针对编码问题研究的汇总,目前已开源至github.以下内容来自项目中的README. 1 ASC ...

  2. Basic Tutorials of Redis(2) - String

    This post is mainly about how to use the commands to handle the Strings of Redis.And I will show you ...

  3. 移动端自适应:flexible.js可伸缩布局使用

    http://caibaojian.com/flexible-js.html 阿里团队开源的一个库.flexible.js,主要是实现在各种不同的移动端界面实现一稿搞定所有的设备兼容自适应问题. 实现 ...

  4. 移动端适配--flexible.js

    引言: H5适配一直是一个比较普遍的问题,很多文章都会讲,最近开发了一个H5的项目使用了一下淘宝的 flexible.js,写一篇文章自己总结一下. 一.背景介绍: Flexible.js是淘宝公开的 ...

  5. C99标准的柔性数组 (Flexible Array)

    [什么是柔性数组(Fliexible Array)] 柔性数组在C99中的定义是: 6.7.2.1 Structure and union specifiers As a special case, ...

  6. 移动端适配方案 flexible.js

    前言 移动端适配一直以来都是前端开发中不可或缺的重要组成部分,如果没有了它,那么你做出来的页面极有可能会出现各种意外(写出来的页面与设计稿之间的差别).所有我们得找到一种相对来说让人比较满意的解决方案 ...

  7. Apache Kudu as a More Flexible And Reliable Kafka-style Queue

    Howdy friends! In this blog post, I show how Kudu, a new random-access datastore, can be made to fun ...

  8. 手淘移动适配方案flexible.js兼容bug处理

    什么是flexible.js 移动端自适应方案 https://www.jianshu.com/p/04efb4a1d2f8 什么是rem 这个单位代表根元素的 font-size 大小(例如 元素的 ...

  9. reset.css 和 flexible.js

    重置css默认样式(淘宝): body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, f ...

  10. 手淘H5移动端适配方案flexible源码分析

    移动端适配一直是一个值得探讨的问题,在业余时间我找了一些页面,查看了一些厂商对于移动端H5页面的适配方案,看到了几个典型的例子,今天就来记录一下我看到的第一个典型的例子,也是我们公司目前普通H5项目正 ...

随机推荐

  1. 盒子模型和CSS背景和列表

    盒子模型(1)宽度-width:长度值 | 百分比 | auto-max-width:长度值 | 百分比 | auto-min-width:长度值 | 百分比 | auto(2)高度-height:长 ...

  2. Flink学习系列——简介

    Flink起源 德国柏林 Flink的目标 低延迟 高吞吐 较高的准确性(乱序数据的处理) 良好的容错性(容错性差的表现:一个节点挂了,全部回滚重新做计算,这对实时性要求高的场景非常致命)

  3. 一些狗J8稳定性测试

    1.CTS 2.NTS 3.高温老化 4.DDR 稳定度 5.一些HW 指标

  4. python3判断ip类型

    利用socket库附带的校验功能实现校验.

  5. Windows下fmt库的链接与使用

    下载源码. 使用mingw编译源码.注意设置cmake文件的产生路径.pkgconfig文件的产生路径(windows下用不到产生的pc文件).库的安装路径. make -j8 install. 新建 ...

  6. StoneDB 子查询优化

    StoneDB 子查询优化 摘要: 说明如何优化 exists 的 join 查询优化器的处理 核心函数: TwoDimensionalJoiner::ChooseJoinAlgorithm Join ...

  7. bash中的basename与dirname以及${}

    var=/dir1/dir2/file.tar.gz basename $var        #获取文件名 file.tar.gz dirname $var            #获取目录名称 / ...

  8. springboot脱包部署

    <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactI ...

  9. Java笔记第六弹

    字符缓冲流 //构造方法 BufferedWriter(Writer out); BufferedReader(Reader in); 相关应用: import java.io.*; public c ...

  10. Fiddler一些用法学习记录

    最近项目中用Fiddler较多,只会之前掌握的一些最简单的用法显得有点不太够.记录一下学习到的新用法. 一.需要mock.打开AutoResponder,Add Rule,填上需要mock的网址,需要 ...