[AT2164] [agc006_c] Rabbit Exercise
题目链接
AtCoder:https://agc006.contest.atcoder.jp/tasks/agc006_c
洛谷:https://www.luogu.org/problemnew/show/AT2164
Solution
注意到设第\(i\)个点的期望位置为\(p_i\),由中点公式可知这个点移动一次的期望位置变成了:
\]
考虑这个序列的差分数组\(\Delta p_i=p_i-p_{i-1}\),考虑第\(i\)个位置发生一次变换会发生什么:
\Delta p_{i+1}'=p_{i+1}-p'_i=p_{i}-p_{i-1}=\Delta p_{i}
\]
其中\(\Delta p',p'\)表示变换之后的值,未加上标表示之前的值。
那么可以注意到这次变换实质上就是\({\rm swap}(\Delta p_i,\Delta p_{i+1})\)。
由于每轮操作都是一样的,那么我们可以把每轮操作写成一个置换,然后处理出倍增数组暴力跳就好了。
#include<bits/stdc++.h>
using namespace std;
#define int long long
void read(int &x) {
x=0;int f=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-f;
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';x*=f;
}
void print(int x) {
if(x<0) putchar('-'),x=-x;
if(!x) return ;print(x/10),putchar(x%10+48);
}
void write(int x) {if(!x) putchar('0');else print(x);putchar('\n');}
#define lf double
#define ll long long
const int maxn = 1e5+10;
const int inf = 1e9;
const lf eps = 1e-8;
int p[maxn],d[maxn],n,m,k,fa[maxn][61],a[maxn],b[maxn];
signed main() {
read(n);for(int i=1;i<=n;i++) read(p[i]),d[i]=p[i]-p[i-1],a[i]=i;
for(int i=1;i<=n;i++) b[i]=i;
read(m),read(k);
for(int i=1,x;i<=m;i++) read(x),swap(a[x],a[x+1]);
for(int i=1;i<=n;i++) fa[i][0]=a[i];
for(int i=1;i<=60;i++)
for(int x=1;x<=n;x++)
fa[x][i]=fa[fa[x][i-1]][i-1];
for(int t=k,x=1;x<=n;x++,t=k)
for(int i=60;~i;i--)
if(t>=(1ll<<i)) t-=(1ll<<i),b[x]=fa[b[x]][i];
for(int i=1;i<=n;i++) a[i]=d[b[i]];
for(int i=1;i<=n;i++) a[i]+=a[i-1],printf("%lld.0\n",a[i]);
return 0;
}
[AT2164] [agc006_c] Rabbit Exercise的更多相关文章
- AT2164 [AGC006C] Rabbit Exercise
首先我们可以考虑一下 \(x\) 关于 \(y\) 的对称点的坐标,不难发现就是 \(x + 2 \times (y - x)\),那么期望的增量就会增加 \(2 \times (y - x)\).不 ...
- AT2164 Rabbit Exercise
传送门 解题思路 首先考虑k=1的情况,对于每一个a[i],它可能会到a[i-1]*2-a[i] 与 a[i+1]*2-a[i]两个位置,概率都为%50,那么它的期望位置为 (a[i-1]*2-a[i ...
- [Atcoder Grand 006 C] Rabbit Exercise 解题报告 (期望)
题目链接:https://www.luogu.org/problemnew/show/AT2164 https://agc006.contest.atcoder.jp/tasks/agc006_c 题 ...
- 【AtCoder】【思维】【置换】Rabbit Exercise
题意: 有n只兔子,i号兔子开始的时候在a[i]号位置.每一轮操作都将若干只兔子依次进行操作: 加入操作的是b[i]号兔子,就将b[i]号兔子移动到关于b[i]-1号兔子现在所在的位置对称的地方,或者 ...
- AGC006 C Rabbit Exercise——思路(置换)
题目:https://agc006.contest.atcoder.jp/tasks/agc006_c 选了 i 位置后 x[ i ] = x[ i-1 ] + x[ i+1 ] - x[ i ] . ...
- AGC600 C Rabbit Exercise —— 置换
题目:https://agc006.contest.atcoder.jp/tasks/agc006_c 考虑 \( i \) 号兔子移动后位置的期望,是 \( x_{i+1} + x_{i-1} - ...
- AtCoder Grand Contest 006 C:Rabbit Exercise
题目传送门:https://agc006.contest.atcoder.jp/tasks/agc006_c 题目翻译 数轴上有\(N\)只兔子,从\(1\)到\(N\)编号,每只兔子初始位置是\(x ...
- AT2164-[AGC006C]Rabbit Exercise【差分,倍增,数学期望】
正题 题目链接:https://www.luogu.com.cn/problem/AT2164 题目大意 \(n\)只兔子编号为\(1\sim n\),第\(i\)只在坐标轴\(x_i\)处.然后\( ...
- 【AGC006C】Rabbit Exercise 置换
题目描述 有\(n\)只兔子站在数轴上.为了方便,将这些兔子标号为\(1\ldots n\).第\(i\)只兔子的初始位置为\(a_i\). 现在这些兔子会按照下面的规则做若干套体操.每一套体操由\( ...
随机推荐
- 深入解析UUID及其应用(转载)
UUID 编辑 UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Founda ...
- MVC下的Area区域知识点
新建area区域 1.如果与根目录下的url相同,那么需要在RouteConfig.cs中 public static void RegisterRoutes(RouteCollection rout ...
- 2019年猪年海报PSD模板-第八部分
11套精美猪年海报,免费猪年海报,下载地址:百度网盘,https://pan.baidu.com/s/1Y3wc_r7O-Dp0mLCihJ9mtQ
- 「国庆训练」Kingdom of Obsession(HDU-5943)
题意 给定\(s,n\),把\(s+1,s+2,...,s+n\)这\(n\)个数填到\(1,2,...,n\)里,要求\(x\)只能填到\(x\)的因子的位置(即题目中\(x\%y=0\)那么x才能 ...
- UniMelb Comp30022 IT Project (Capstone) - 2.Vuforia in Unity
2 Vuforia in Unity Tutorial: https://www.youtube.com/watch?v=X6djed8e4n0&t=213s Preparation: Dow ...
- 使用es6总结笔记
1. let.const 和 block 作用域 在ES6以前,var关键字声明变量.无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部). let 关键词声明的变量不具备 ...
- lintcode671 循环单词
循环单词 The words are same rotate words if rotate the word to the right by loop, and get another. Cou ...
- LeetCode 386——字典序排数
1. 题目 2. 解答 2.1 方法一 假设返回 118 以内数的字典顺序,则为 1,10,100,101,102,...,109,11,110,111,112,...,118,12,13,....根 ...
- LeetCode - 463. Island Perimeter - O(MN)- (C++) - 解题报告
原题 原题链接 You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 ...
- STM32串口通信UART使用
STM32串口通信UART使用 uart使用的过程为: 1. 使能GPIO口和UART对应的总线时钟 2. 配置GPIO口的输出模式 3. 配置uart口相关的基本信息 4. 使能uart口的相关的中 ...