传送门

解题思路

首先考虑k=1的情况,对于每一个a[i],它可能会到a[i-1]*2-a[i] 与 a[i+1]*2-a[i]两个位置,概率都为%50,那么它的期望位置为 (a[i-1]*2-a[i]+a[i+2]*2-a[i])/2 即为 a[i+1]+a[i-1]-a[i]

对于以后的位置,可以把这个位置的期望位置视作它的变化,所以也可以直接算。做出差分数组,对于i与i+1,diff[i]=a[i]-a[i-1] ,diff[i+1]=a[i+1]-a[i],如果让i这个位置跳,diff[i]=a[i+1]-a[i] ,diff[i+1]=a[i]-a[i-1], 相当于交换了位置。对于k>1 其实就是找出每个位置的循环节,然后k%(循环节-1)即为最终的位置。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib> using namespace std;
const int MAXN = 100005;
typedef long long LL; inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?-1:1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return x*f;
} struct Data{
LL diff;
int id;
}data[MAXN]; int n,m,a[MAXN];
int fa[MAXN],num;
LL now[MAXN<<1],ans[MAXN],sum[MAXN];
bool vis[MAXN];
LL k; int get(int x){
if(vis[x]) return 0;
now[++num]=x;
vis[x]=1;
return get(fa[x])+1;
} int main(){
// freopen("data.txt","r",stdin);
// freopen("wrong.txt","w",stdout);
n=rd();
for(register int i=1;i<=n;i++){
a[i]=rd();
data[i].diff=a[i]-a[i-1],data[i].id=i;
}
m=rd();scanf("%lld",&k);
for(register int i=1;i<=m;i++){
int x=rd();
swap(data[x],data[x+1]);
}
for(register int i=1;i<=n;i++) {
if(data[i].id==i) continue;
fa[i]=data[i].id;
}
for(register int i=1;i<=n;i++){
if(data[i].id==i) {
ans[i]=data[i].diff;
continue;
}
if(vis[i]) continue;
int siz=get(i);
for(register int j=1;j<=siz;j++) now[j+siz]=now[j];
LL to=(k-1ll)%(LL)siz;
for(register int j=1;j<=siz;j++)
ans[now[j]]=data[now[j+to]].diff;
num=0;
}
// for(register int i=1;i<=n;i++) cout<<ans[i]<<" ";cout<<endl;
for(register int i=1;i<=n;i++)
ans[i]+=ans[i-1],printf("%lld.0\n",ans[i]);
return 0;
}

AT2164 Rabbit Exercise的更多相关文章

  1. [AT2164] [agc006_c] Rabbit Exercise

    题目链接 AtCoder:https://agc006.contest.atcoder.jp/tasks/agc006_c 洛谷:https://www.luogu.org/problemnew/sh ...

  2. AT2164 [AGC006C] Rabbit Exercise

    首先我们可以考虑一下 \(x\) 关于 \(y\) 的对称点的坐标,不难发现就是 \(x + 2 \times (y - x)\),那么期望的增量就会增加 \(2 \times (y - x)\).不 ...

  3. 【AtCoder】【思维】【置换】Rabbit Exercise

    题意: 有n只兔子,i号兔子开始的时候在a[i]号位置.每一轮操作都将若干只兔子依次进行操作: 加入操作的是b[i]号兔子,就将b[i]号兔子移动到关于b[i]-1号兔子现在所在的位置对称的地方,或者 ...

  4. [Atcoder Grand 006 C] Rabbit Exercise 解题报告 (期望)

    题目链接:https://www.luogu.org/problemnew/show/AT2164 https://agc006.contest.atcoder.jp/tasks/agc006_c 题 ...

  5. AT2164-[AGC006C]Rabbit Exercise【差分,倍增,数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/AT2164 题目大意 \(n\)只兔子编号为\(1\sim n\),第\(i\)只在坐标轴\(x_i\)处.然后\( ...

  6. 【AGC006C】Rabbit Exercise 置换

    题目描述 有\(n\)只兔子站在数轴上.为了方便,将这些兔子标号为\(1\ldots n\).第\(i\)只兔子的初始位置为\(a_i\). 现在这些兔子会按照下面的规则做若干套体操.每一套体操由\( ...

  7. 题解-AtCoder-agc006C Rabbit Exercise

    Problem AtCoder & bzoj 题意:数轴上有\(n\)个点(初始坐标均为整数),编号为\(1\)~\(n\).给出\(m\)个操作. 每个操作会选定点\(a\),然后随机在点\ ...

  8. AtCoder Grand Contest 006 (AGC006) C - Rabbit Exercise 概率期望

    原文链接https://www.cnblogs.com/zhouzhendong/p/AGC006C.html 题目传送门 - AGC006C 题意 有 $n$ 个兔子,从 $1$ 到 $n$ 编号, ...

  9. 【做题】agc006C - Rabbit Exercise——模型转换

    原文链接https://www.cnblogs.com/cly-none/p/9745177.html 题意:数轴上有\(n\)个点,从\(1\)到\(n\)编号.有\(m\)个操作,每次操作给出一个 ...

随机推荐

  1. Hibernate的一对一映射

    一.创建Java工程,新建Lib文件夹,加入Hibernate和数据库(如MySql.Oracle.SqlServer等)的Jar包,创建 hibernate.cfg.xml 文件,并配置,配置项如下 ...

  2. openSUSE 安装compass,mkmf.rb can't find,checking for ffi.h...extconf.rb failed

    安装compass时,提示 Fetching: sass-.gem (%) Successfully installed sass- Fetching: ffi-.gem (%) Building n ...

  3. python随机数(转载)

    随机生成 0 到 1 之间的浮点数 random.random() 方法会返回 [0.0, 1.0) 之间的浮点数,注意,这是一个左闭右开的区间,随机数可能会是 0 但不可能为 1 . 随机生成 a ...

  4. 菜鸟nginx源码剖析数据结构篇(三) 单向链表 ngx_list_t[转]

    菜鸟nginx源码剖析数据结构篇(三) 单向链表 ngx_list_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

  5. iOS之UIGraphics.h方法简介

    // // UIGraphics.h // UIKit // // Copyright (c) 2005-2017 Apple Inc. All rights reserved. // #import ...

  6. SpringBoot使用注解方式整合Redis

    1.首先导入使用Maven导入jar包 <dependency> <groupId>org.springframework.boot</groupId> <a ...

  7. 转载:python操作excel表格(xlrd/xlwt)

    python操作excel表格(xlrd/xlwt)   最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而 ...

  8. 关于Server.MapPath和HostingEnvironment.MapPath

    最近做的项目需要在Controller里重写一个static的方法,在方法内用常用的Server.MapPath会报一个错误:An object reference is required for t ...

  9. 如何给Apache Pig自定义UDF函数?

    近日由于工作所需,需要使用到Pig来分析线上的搜索日志数据,散仙本打算使用hive来分析的,但由于种种原因,没有用成,而Pig(pig0.12-cdh)散仙一直没有接触过,所以只能临阵磨枪了,花了两天 ...

  10. elasticsearch 中文API facets(⑩)

    facets Elasticsearch提供完整的java API用来支持facets.在查询的过程中,将需要计数的facets添加到FacetBuilders中.然后将该FacetBuilders条 ...