【AGC006C】Rabbit Exercise
来源:互联网 发布:肠道益生菌 知乎 编辑:程序博客网 时间:2024/06/11 21:02
题目描述
有
现在这些兔子会按照下面的规则做若干套体操。每一套体操由
这些兔子会按顺序做
题解
每次操作
可以发现这是一个线性变换,可以直接计算。
那么有什么规律吗?
假设有三个数
变换后会得到
我们差分一下:
相当于把
所以可以直接把
时间复杂度:
代码
#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<ctime>#include<utility>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> pii;ll a[100010];int c[100010];int b[100010];int d[100010];ll ans[100010];int main(){#ifdef DEBUG freopen("b.in","r",stdin); freopen("b.out","w",stdout);#endif int n; scanf("%d",&n); int i; ll sum=0; for(i=1;i<=n;i++) { scanf("%lld",&a[i]); a[i]-=sum; sum+=a[i]; c[i]=i; } int m; ll k; scanf("%d%lld",&m,&k); int x; for(i=1;i<=m;i++) { scanf("%d",&x); swap(c[x],c[x+1]); } for(i=1;i<=n;i++) if(!b[i]) { int cnt=0; int j; for(j=i;!b[j];j=c[j]) { b[j]=1; d[++cnt]=j; } for(j=1;j<=cnt;j++) ans[d[j]]=a[d[(j+k-1)%cnt+1]]; } for(i=1;i<=n;i++) { ans[i]+=ans[i-1]; printf("%lld.0\n",ans[i]); } return 0;}
阅读全文
0 0
- [agc006c]Rabbit Exercise
- 【AGC006C】Rabbit Exercise
- AtCode:Rabbit Exercise(思维)
- Rabbit
- Rabbit
- rabbit
- rabbit
- Exercise
- exercise
- Exercise
- exercise
- RabbIT logoWeb代理服务器 RabbIT
- Exercise 4.2 Exercise 4.3
- 1029. Rabbit
- 1029. Rabbit
- Rabbit Farms
- sicily1029 Rabbit
- 1029. Rabbit
- [Java]Socket和ServerSocket学习笔记
- tomcat跟mysql(解压版安装)
- mariadb数据库管理系统
- 利用spring打印mybatis执行的sql
- 根据Powerdesigner 创建数据库中的表
- 【AGC006C】Rabbit Exercise
- springboot部署到centos访问不成功
- Java之DateFormatUtils格式化24小时制-yellowcong
- 命令模式
- Android 活动的启动模式
- Ionic 三级目录乃至多级目录隐藏tabs
- Java IO流 ---字节流 案例分析
- VRTK插件官方示例分析-040_Controls_PanelMenu
- 微信小程序固定表头