AtCoder Grand Contest 006 (AGC006) C - Rabbit Exercise 概率期望
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC006C.html
题目传送门 - AGC006C
题意
有 $n$ 个兔子,从 $1$ 到 $n$ 编号,第 $i$ 个兔子的初始位置为 $x_i$ ,有 $K$ 次操作,每次操作分 $m$ 步,其中第 $j$ 步用一个数 $a_j$ 描述,这一步的效果是:等概率在 $a_j-1$ 和 $a_j +1$ 中选择一个(假设选择的那个是 $x$),并让兔子 $a_j$ 跳到以兔子 $x$ 为对称中心时,兔子 $a_j$ 的对称位置。求最终所有兔子的位置的期望。
$n,m\leq 10^5, K\leq 10^{18}, |x_i|\leq 10^9$
题解
废话1:我好久没写有质量的博客了,现在写一篇。
废话2:置换方向写反,写成了逆置换,被续走 15 分钟。
又是一道 AC 之后再证明的题。
假设兔子 $i$ 跳一步,则:(假设 $E(i)$ 表示兔子 $i$ 的位置这时的期望)
$$E(i) = \frac 12 (2x_{i-1}-x_i) + \frac 12 (2x_{i+1}-x_i) = x_{i-1}+x_{i+1}-x_{i}$$
于是,可以归纳证明,在跳了若干次之后,满足:
$$E^\prime(i) = \frac 12 (2E(i-1)-E(i)) + \frac 12 (2E(i+1)-E(i)) = E(i-1)+E(i+1)-E(i)$$
于是每次跳,相当于使
$$x_i^\prime = x_{i-1}+x_{i+1}-x_i$$
记 $d_i = x_{i+1}-x{i}$ ,可以发现,上述操作的实质就是
$${\rm swap}(d_{i-1},d_i)$$
于是,我们只需要处理出一组操作的效果,得到一个 $n-1$ 个数的置换,然后做 $K$ 次置换即可。
这个只需要把置换分解成多个轮换就好了。
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=100005;
int n,m,x[N],a[N];
int b[N],vis[N],tmp[N],t;
int ans[N];
LL K;
int main(){
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&x[i]);
scanf("%d%lld",&m,&K);
for (int i=1;i<n;i++)
b[i]=i;
for (int i=1;i<=m;i++){
scanf("%d",&a[i]);
swap(b[a[i]-1],b[a[i]]);
}
memset(vis,0,sizeof vis);
for (int i=1;i<n;i++){
if (vis[i])
continue;
vis[i]=1;
tmp[t=1]=i;
for (int j=b[i];j!=i;j=b[j])
vis[tmp[++t]=j]=1;
int d=K%t;
for (int j=1;j<=t;j++)
ans[tmp[j]]=tmp[(j-1+d)%t+1];
}
LL tot=x[1];
printf("%lld\n",tot);
for (int i=1;i<n;i++)
printf("%lld\n",tot+=x[ans[i]+1]-x[ans[i]]);
return 0;
}
AtCoder Grand Contest 006 (AGC006) C - Rabbit Exercise 概率期望的更多相关文章
- AtCoder Grand Contest 006 C:Rabbit Exercise
题目传送门:https://agc006.contest.atcoder.jp/tasks/agc006_c 题目翻译 数轴上有\(N\)只兔子,从\(1\)到\(N\)编号,每只兔子初始位置是\(x ...
- AtCoder Grand Contest 006
AtCoder Grand Contest 006 吐槽 这套题要改个名字,叫神仙结论题大赛 A - Prefix and Suffix 翻译 给定两个串,求满足前缀是\(S\),后缀是\(T\),并 ...
- Atcoder Grand Contest 006 D - Median Pyramid Hard(二分+思维)
Atcoder 题面传送门 & 洛谷题面传送门 u1s1 Atcoder 不少思维题是真的想不出来,尽管在 Atcoder 上难度并不高 二分答案(这我倒是想到了),检验最上面一层的数是否 \ ...
- AtCoder Grand Contest 006 F - Blackout
Description 在 \(n*n\) 的棋盘上给出 \(m\) 个黑点,若 \((x,y)\),\((y,z)\) 都是黑点,那么 \((z,x)\) 也会变成黑点,求最后黑点的数量 题面 So ...
- [Atcoder Grand Contest 006 F][AGC006F] Blackout [染色]
题面 传送门 思路 首先,这个涂黑的方法我们来优化一下模型(毕竟当前这个放到矩形里面,你并看不出来什么规律qwq) 我们令每个行/列编号为一个点,令边(x,y)表示一条从x到y的有向边 那么显然只要有 ...
- AtCoder Grand Contest 006 题解
传送门 \(A\) 咕咕 const int N=105; char s[N],t[N];int n; inline bool eq(R int k){fp(i,1,k)if(s[n-k+i]!=t[ ...
- AtCoder Grand Contest 012
AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大 ...
- AtCoder Grand Contest 011
AtCoder Grand Contest 011 upd:这篇咕了好久,前面几题是三周以前写的... AtCoder Grand Contest 011 A - Airport Bus 翻译 有\( ...
- AtCoder Grand Contest 031 简要题解
AtCoder Grand Contest 031 Atcoder A - Colorful Subsequence description 求\(s\)中本质不同子序列的个数模\(10^9+7\). ...
随机推荐
- python pip下载速度慢的解决方法
pip是python内置的非常好用的下载工具,基本可以下载全部的python库.它还有一个非常好的特点,当你安装一个库的时候,它会自动帮你安装所有这个库的依赖库.完全一键式操作.非常方便.但是由于pi ...
- 基于注解的Dubbo服务配置
基于注解的Dubbo服务配置可以大大减少dubbo xml配置文件中的Service配置量,主要步骤如下: 一.服务提供方 1. Dubbo配置文件中增加Dubbo注解扫描 <!-- ...
- [原著]java或者Js 代码逻辑来处理 突破 oracle sql “IN”长度的极限的问题
注:本文出自:博主自己研究验证可行 [原著]java或者Js 代码逻辑来处理 突破 oracle sql "IN"长度的极限的问题 在很多的时候 使用 select ...
- elementui上传图片到七牛云服务器
注册七牛云 首先,注册七牛云,并且完成实名认证,完成后会在个人中心->秘钥管理中看到两个秘钥AccessKey/SecretKey 创建存储空间(必须要实名认证) 生成上传凭证 为了实现上传,我 ...
- 对于stark(curd)插件的使用简单介绍
一.创建表 from django.db import models from django.db import models class Department(models.Model): &quo ...
- 1709: Fire or Retreat(zzuli)
水题,哎,可是第一次是因为编译错了,vs不知咋了,无奈: 后面几次又因为类型用了int错了,痛苦: 题目描述 在与科技水平远胜于我们的外星人的战斗最后,我们能够用来对外星装甲造成伤害的武器只剩下了…… ...
- Question Of AI Model Training
1 模型训练基本步骤 准备原始数据,定义神经网络结构及前向传播算法 定义loss,选择反向传播优化算法 生成Session,在训练数据进行迭代训练,使loss到达最小 在测试集或者验证集上对准确率进行 ...
- poj2116 模拟题
不知道错在哪里 /* 给定两个斐波那契表示数,要求用标准化表达方式表达 然后将这两个数加起来,和也用标准化方式表达 思路:显然要将这两个数先用十进制表示,和也用十进制表示 然后在转化成二进制即可 1 ...
- Fiddler抓包6-get请求(url详解)
前言 上一篇介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行.有些get请求会带有参数,本篇详细介绍url地址格式. 一. ...
- tomcat启动报错 关键字:java.lang.NoClassDefFoundError和 java.lang.ClassNotFoundExceeption
启动tomcat时报错情况如下图所示:实际上就是依赖的bean出错,百度上很多方法都说是tomcat没有部署正确,项目-->右键----->proterties----->Targe ...