AGC006 C Rabbit Exercise——思路(置换)
题目:https://agc006.contest.atcoder.jp/tasks/agc006_c
选了 i 位置后 x[ i ] = x[ i-1 ] + x[ i+1 ] - x[ i ] 。
从差分序列来看,选 i 位置后就是 swap( a[ i ] , a[ i+1 ] ) 。
一组之后就是一个置换。找一下每个位置所在的环就行了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=1e5+;
int n,a[N],b[N],c[N],tot,sta[N<<],lcm; ll k;
bool vis[N];
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='') ret=ret*+ch-'',ch=getchar();
return fx?ret:-ret;
}
int gcd(int a,int b){return b?gcd(b,a%b):a;}
void dfs(int cr)
{
sta[++tot]=cr;vis[cr]=;
if(!vis[b[cr]])dfs(b[cr]);
}
int main()
{
n=rdn();
for(int i=;i<=n;i++)a[i]=rdn();
for(int i=n;i;i--)a[i]-=a[i-];
for(int i=;i<=n;i++)b[i]=i;
int m;m=rdn(); scanf("%lld",&k);
for(int i=,d;i<=m;i++)
{
d=rdn(); swap(b[d],b[d+]);
}
lcm=;
for(int i=;i<=n;i++)
if(!vis[i])
{
tot=; dfs(i);
for(int j=tot+;j<=tot<<;j++)
sta[j]=sta[j-tot];
int d=k%tot;
for(int j=;j<=tot;j++)
c[sta[j]]=a[sta[j+d]];
}
ll lj=c[];
for(int i=;i<=n;i++,lj+=c[i])
printf("%lld\n",lj);
return ;
}
AGC006 C Rabbit Exercise——思路(置换)的更多相关文章
- AtCoder Grand Contest 006 (AGC006) C - Rabbit Exercise 概率期望
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC006C.html 题目传送门 - AGC006C 题意 有 $n$ 个兔子,从 $1$ 到 $n$ 编号, ...
- 【AtCoder】【思维】【置换】Rabbit Exercise
题意: 有n只兔子,i号兔子开始的时候在a[i]号位置.每一轮操作都将若干只兔子依次进行操作: 加入操作的是b[i]号兔子,就将b[i]号兔子移动到关于b[i]-1号兔子现在所在的位置对称的地方,或者 ...
- AGC600 C Rabbit Exercise —— 置换
题目:https://agc006.contest.atcoder.jp/tasks/agc006_c 考虑 \( i \) 号兔子移动后位置的期望,是 \( x_{i+1} + x_{i-1} - ...
- 【AGC006C】Rabbit Exercise 置换
题目描述 有\(n\)只兔子站在数轴上.为了方便,将这些兔子标号为\(1\ldots n\).第\(i\)只兔子的初始位置为\(a_i\). 现在这些兔子会按照下面的规则做若干套体操.每一套体操由\( ...
- 【AGC006 C】Rabbit Exercise
题意 有 \(n\) 只兔子在数轴上,第 \(i\) 只兔子的初始坐标为整数 \(x_i\). 现在这些兔子会按照下面的规则做体操.每一轮体操都由 \(m\) 次跳跃组成:在第 \(j\) 次跳跃时, ...
- [AT2164] [agc006_c] Rabbit Exercise
题目链接 AtCoder:https://agc006.contest.atcoder.jp/tasks/agc006_c 洛谷:https://www.luogu.org/problemnew/sh ...
- AtCoder Grand Contest 006 C:Rabbit Exercise
题目传送门:https://agc006.contest.atcoder.jp/tasks/agc006_c 题目翻译 数轴上有\(N\)只兔子,从\(1\)到\(N\)编号,每只兔子初始位置是\(x ...
- 【做题】agc006C - Rabbit Exercise——模型转换
原文链接https://www.cnblogs.com/cly-none/p/9745177.html 题意:数轴上有\(n\)个点,从\(1\)到\(n\)编号.有\(m\)个操作,每次操作给出一个 ...
- AGC006C Rabbit Exercise
传送门 设 \(f_{i,j}\) 表示兔子 \(i\) 在当前 \(j\) 轮的期望位置 对于一次操作 \(f_{i,j+1}=\frac{1}{2}(2f_{i-1,j}-f_{i,j})+\fr ...
随机推荐
- Mybatis常见问题
1.#和$的区别和联系 1.1#是占位符,会对Sql进行预编译,相当于?:$是做Sql拼接,有sql注入的隐患 1.2#不需要关注数据类型,Mybatis自动实现类型转换,$必须自己判断数据类型联系 ...
- ls存在的文件,不能操作
bash-4.2# pwd/oracle/product/10.2.0/db_1/network/adminbash-4.2# lssqlnet.ora libnrad ...
- pyspider脚本编写指南
注意,虽然在本文中会涉及调度策略等内容,但实际执行效果取决于具体策略实现. project 脚本分为不同的 project,不同的 project 之间的任务互相独立,建议为不同的站点建立不同的 pr ...
- Pandas数据帧(DataFrame)
数据帧(DataFrame)是二维数据结构,即数据以行和列的表格方式排列. 数据帧(DataFrame)的功能特点: 潜在的列是不同的类型 大小可变 标记轴(行和列) 可以对行和列执行算术运算 结构体 ...
- 运行jar_测试代码
1.Eclipse 将 工程 导出成 jar Eclipse --> Export... --> 界面中树状图形中选择" Java下的'JAR file' "(不知道这 ...
- EntityFramework之领域驱动设计实践
EntityFramework之领域驱动设计实践 - 前言 EntityFramework之领域驱动设计实践 (一):从DataTable到EntityObject EntityFramework之领 ...
- django Models 常用的字段和参数
1.字段 CharField IntegerField floatField DateTimeField DateField DecimalField 2.参数 null default choice ...
- 如何学好C++语言
前段时间写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用.首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言. C++是最 ...
- 最详细的虚拟机安装centos7教程
参考网站:https://jingyan.baidu.com/article/b7001fe1d1d8380e7382dd72.html 安装vmware10,vmware是收费的,作为学习,我介意还 ...
- 【河南省第十届ACM 省赛 A-谍报分析】
题目描述 “八一三”淞沪抗战爆发后,*几次准备去上海前线视察和指挥作战.但都因为宁沪之间的铁路和公路遭到了敌军的严密封锁,狂轰滥炸,一直未能成行. 特科组织,其主要任务是保卫的安全,了解和掌握敌方的动 ...