2023-03-10

题目

题目传送门

翻译

翻译

难度&重要性(1~10):7

题目来源

AtCoder

题目算法

数学,贪心

解题思路

显然 \(C_i\) 越小的位越早被修改越好。所以我们将 \(C_i\) 从小到大排序。对于任意的 \(S\),答案都是一样的。我们依次考虑 \(S\) 和 \(T\) 的每一位是否相同。设我们考虑到第 \(i\) 位。

若相同,则这一位对答案的贡献为 \(0\)。

若不同,则根据上面的贪心,第 \(i\) 位之前的位置已被修改完毕。所以在 \(T\) 中第 \(i\) 位之前的位置可以任意选数,对第 \(i\) 位的贡献不影响。

对于第 \(i\) 位之后的位置,我们枚举有多少个不相同的位置。

则答案为:

\(2^n\left(\sum\limits_{i=1}^n2^{i-1}\cdot C_i\cdot\sum\limits_{j=0}^{n-i}\dbinom{n-i}{j}(j+1)\right)\)

考虑化简:

\(\sum\limits_{j=0}^{n-i}\dbinom{n-i}{j}(j+1)=\sum\limits_{j=0}^{n-i}\dbinom{n-1}{j}+\sum\limits_{j=0}^{n-i}\dbinom{n-i}{j}j=2^{n-i}+\sum\limits_{j=0}^{n-i}\dbinom{n-i}{j}j\)

考虑吸收恒等式

\(∵\begin{aligned}\dfrac{r}{k}\dbinom{r-1}{k-1}&=\dfrac{r}{k}\times \dfrac{(r-1)^{\underline{k-1}}}{(k-1)!}=\dbinom{r}{k}\end{aligned}\)

\(∴r\dbinom{r-1}{k-1}=k\dbinom{r}{k}\)



\(\begin{aligned}2^{n-i}+\sum_{j=0}^{n-i} \dbinom{n-i}{j}j =2^{n-i}+\sum_{j=0}^{n-i}\dbinom{n-i-1}{j-1}(n-i)=2^{n-i}+(n-i)\sum_{j=0}^{n-i-1}\dbinom{n-i-1}{j}=2^{n-i}+(n-i)2^{n-i-1}\end{aligned}\)

完成状态

已完成

[ABC150E] Change a Little Bit的更多相关文章

  1. 代码的坏味道(10)——发散式变化(Divergent Change)

    坏味道--发散式变化(Divergent Change) 发散式变化(Divergent Change) 类似于 霰弹式修改(Shotgun Surgery) ,但实际上完全不同.发散式变化(Dive ...

  2. [LeetCode] Coin Change 硬币找零

    You are given coins of different denominations and a total amount of money amount. Write a function ...

  3. input事件与change事件

    输入框的change事件: 必须等到输入框失去焦点的时候才会触发,鼠标在空白的地方点一下: 输入框的input事件: 在输入内容变化的同时,实时的触发,不需要等到失去焦点.

  4. Change the Target Recovery Time of a Database (SQL Server) 间接-checkpoints flushcache flushcache-message

    Change the Target Recovery Time of a Database (SQL Server) 间接checkpoints   flushcache flushcache-mes ...

  5. Change Line Type in OpenCascade

    Change Line Type in OpenCascade eryar@163.com 关键字KeyWords:OpenCascade,Line Aspect, Line Type 在OpenCa ...

  6. 华硕笔记本U盘启动系统/WinPE报错。Windows failed to start. A Recent hardware or software change might be the cause.

    最近在整一台华硕笔记本,大概有5年寿命了吧,质量还行,由于系统出了问题,打算用自制U盘WinPE进去修复一下.按照个人经验,在主板设置里启用了USB启动选项,并且设置USB启动顺序为第一个,可是进系统 ...

  7. You cannot change a partition into an extended one or vice versa Delete it first

    在Linux扩展LVM时,使用fdisk创建分区时,在磁盘上新建扩展分区(逻辑分区),修改分区格式,指定分区类型为8e时,报错"You cannot change a partition i ...

  8. [WPF系列]基础 Listening to Dependency Property change notifications of a given Element

    I want to share this great post from Anoop that shows a easy way to add a notification system to dep ...

  9. 鼠标的change事件

    原本想着在<input>输入输入框中添加change事件,来实现对输入内容的限定. 当人们在使用时跟多的会直接去点击完成.所以完成按钮的点击事件会和change事件产生 冲突,所以我把验证 ...

  10. Fold Change和t分布

    基因表达谱数据 基因表达谱可以用一个矩阵来表示,每一行代表一个基因,每一列代表一个样本(如图1).所有基因的表达谱数据在“gene_exp.txt”文件中存储,第一列为基因的entrez geneid ...

随机推荐

  1. 2021-04-15:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中,字典序最小的结果。

    2021-04-15:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中,字典序最小的结果. 福大大 答案2021-04-15: "b"和&q ...

  2. 在 Transformers 中使用对比搜索生成可媲美人类水平的文本 🤗

    1. 引言 自然语言生成 (即文本生成) 是自然语言处理 (NLP) 的核心任务之一.本文将介绍神经网络文本生成领域当前最先进的解码方法 对比搜索 (Contrastive Search).提出该方法 ...

  3. DOS系统中EXE程序加载过程

    1.在内存区中寻找一段容量足够的空闲内存区. 2.这段内存区的前256字节中,创建一个称为程序段前缀(PSP)的数据区. 3.这段内存区256字节之后,将程序装入,程序的地址被设为SA+10H : 0 ...

  4. k8s~RKE的方式升级Rancher集群

    kubectl安装 在主机或者远程访问的笔记本上安装kubectl命令行工具 rancher-cluster.yml(RKE配置文件) 通过RKE创建kubernetes集群,需要预先设置ranche ...

  5. Helm实战案例二:在Kubernetes(k8s)上使用helm安装部署日志管理系统EFK

    目录 一.系统环境 二.前言 三.日志管理系统EFK简介 四.helm安装EFK 4.1 helm在线安装EFK 4.2 helm离线安装EFK(推荐) 五.访问kibana 5.1 数据分片 六.卸 ...

  6. 【Java学习】 Spring的基础理解 IOC、AOP以及事务

    一.简介     官网: https://spring.io/projects/spring-framework#overview     官方下载工具: https://repo.spring.io ...

  7. ModifyAjaxResponse,修改ajax请求返回值,前后端调试之利器

    一.概要 先看图 京豆多的离谱,你的第一想法肯定是:按F12修改了网页元素 没那么简单,你看支持刷新的 肯定还是假的,通过 Fiddler 或 Wireshark 等抓包工具修改了响应包:或者干脆改了 ...

  8. Kubernetes(k8s)服务账号Service Accounts

    目录 一.系统环境 二.前言 三.服务账号Service Accounts简介 四.用户账号与服务账号区别 五.服务账号(Service Accounts) 5.1 创建服务账号(Service Ac ...

  9. Java杂记————object.getClass()和object.class以及Java中的toString()方法的的区别

    不说废话,直接上干货: (注意大小写:object为对象,Object为类) 1,object.getClass()它是Object类的实例方法,返回一个对象运行时的类的Class对象,换句话说,它返 ...

  10. 查看C语言程序对应的汇编代码

    在终端输入 gcc -S main.c 命令的意思是 编译不汇编 mian.c 可以换成想要汇编的C语言程序 然后生成 main.s 使用文本编辑器查看即可