[vijos1554&bzoj1411]硬币游戏<快速幂>
题目链接:https://vijos.org/p/1554
http://www.lydsy.com/JudgeOnline/problem.php?id=1411
这题真的淫*QAQ。。。
一看题还以为是啥水题,结果啊,是个规律题
我们先来解释一下样例
20202010101010101020 0
01010201010101010201 1
10102020101010102020 2
01020102010101020102 3
20202020201010202020 4
01010101020102010101 5
10101010202020201010 6
01010102010101020101 7
10101020201010202010 8
01010201020102010201 9
10102020202020202020 10
01020101010101010102 11
这后面的数字表示的是第几次操作
然后可以开始找规律了。。。。。。。。。
盯-----------------------------------------------------------------------------------------------------
这个看起来头有点痛,我们优化一波来看
20202010101010101020 0
10102020101010102020 2
20202020201010202020 4
10101010202020201010 6
10101020201010202010 8
10102020202020202020 10
其实我们就可以发现,这个每两次操作,硬币的位置是不会变的,变的只是正反面
然后我们在把这个图继续变换
20202010101010101020 0
10102020101010102020 2
20202020201010202020 4
10101020201010202010 8
我们只留下了2^k次方这些操作
就可以发现,第2^k次方次操作中,第i个数是由最开始的i-2^k和i+2^k这两个数来决定的
所以对于操作次数T
要把T分解成2^k+2^k-1+···+2^1+1这种形式的
其实吧,这就是快速幂
然后快乐的写一个快速幂模板就过了
只是注意一下T是2^60,要用long long存
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<queue>
#include<cmath>
#define maxn 200005
using namespace std; int n;
long long x,d=;
int a[maxn*],b[maxn*]; int did(int pos,long long dis){
int l=((pos-dis)%n+n)%n,r=(pos+dis)%n;
//pos-dis有可能<-n;
if(l==)l=n;if(r==)r=n;
if(a[l]==)return ;
if(!(a[l]^a[r]))return ;
return ;
} void work(){
while(x){
if(x&){
for(int i=;i<=n;i++)
b[i]=did(i,d);
for(int i=;i<=n;i++)
a[i]=b[i];
}
x>>=;d<<=;
}
} int main(){
scanf("%d%lld",&n,&x);n<<=;
for(int i=;i<=n;i+=){
scanf("%d",&a[i]);
}
work();
for(int i=;i<n;i++){
printf("%d ",a[i]);
}printf("%d",a[n]);
}
【总结】
然后看见我的注释没,我就在那里卡了很久,因为我最开始的L是(pos-dis+n)%n;
然后光荣爆炸,毕竟,我没算到pos-dis的绝对值可能是小于n的啊
所以那个位置的正确写法((pos-dis)%n+n)%n;
[vijos1554&bzoj1411]硬币游戏<快速幂>的更多相关文章
- NOIP 2013提高组day 1 T 1转圈游戏 快速幂
描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推 ...
- NOIP2013T1 转圈游戏 快速幂
描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置, --, 依此 ...
- noip2013提高组day1第一题-转圈游戏——快速幂典型应用
所谓的快速幂: // 计算 m^n % k 的快速幂算法 int quickpow(int m,int n,int k) { ; ) { ) b = (b*m)%k; n = n >> ; ...
- 【NOIP2013】转圈游戏 快速幂
题目大意:给你四个整数$n,m,k,x$,求$(x+m\times 10^k)%n$. 直接一个快速幂就好了,注意开$long\ long$. #include<bits/stdc++.h> ...
- luogu1965 转圈游戏 (快速幂)
求(m*10^k+x)%n即可 #include<cstdio> #include<cstring> #include<algorithm> #define LL ...
- 洛谷 P1965 转圈游戏 —— 快速幂
题目:https://www.luogu.org/problemnew/show/P1965 居然真的就只是 ( x + m * 10k % n ) % n 代码如下: #include<ios ...
- BZOJ 1411&&Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】
1411: [ZJOI2009]硬币游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 897 Solved: 394[Submit][Status ...
- bzoj 3240: [Noi2013]矩阵游戏 矩阵乘法+十进制快速幂+常数优化
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 613 Solved: 256[Submit][Status] ...
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】
黑白图像直方图 发布时间: 2017年7月9日 18:30 最后更新: 2017年7月10日 21:08 时间限制: 1000ms 内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...
随机推荐
- Android html5 控制video currentTime不准确,精确,解决办法。
早在flash时代 我们控制视频播放指定时间位置的画面也会有不准确的情况, 具体情况表现为:video.seek(time) 而实际画面会跳到此时间附近(1-2秒)的画面 而HTML5 我们通过 ...
- 关于毕业五年PHP成长疑惑
1.PHP语法基础是否都会,比如异常捕捉,面向对象,数组操作语法,字符串操作,cookie,session,全局变量,超全局数组,防止sql注入,mysql预处理 2.MYSQL基础语法,字段设计,原 ...
- 峰哥说技术:10-Spring Boot静态资源处理
Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 10 峰哥说技术:Spring Boot静态资源处理 今天我们聊聊关于 Spring Boot 中关于静 ...
- RabbitMQ 消息模式
消息模式实例 视频教程:https://ke.qq.com/course/304104 编写代码前,最好先添加好用户并设置virtual hosts 一.简单模式 1.导入jar包 <depen ...
- HDFS DataNode详解
1. datanode介绍 1.1 datanode datanode是负责当前节点上的数据的管理,具体目录内容是在初始阶段自动创建的,保存的文件夹位置由配置选项{dfs.data.dir}决定 1. ...
- 编写程序实现根据考试成绩将成绩分为A,B,C,D四档。
score = float(input("请输入你的成绩:"))if 90 <= score <= 100: print("你的成绩为A档")eli ...
- 最全Redis基础知识
NoSQL概述 什么是NoSQL NoSQL不仅仅是SQL,它是Not Only SQL 的缩写,也是众多非关系型数据库的统称NoSQL和关系型数据库一样,也是用来存储数据的仓库. 为什么需要NoSQ ...
- MySQL5.7 数据库的my.cnf配置
[client] port socket=/tmp/mysql.sock default-character-set=utf8 [mysql] no-auto-rehash default-chara ...
- iNeuOS工业互联平台,开放设备驱动管理、服务驱动管理、云组态自定义画布等,促进平台开放、赋能和落地。发布:v2.3版本。
目 录 1. 概述... 2 2. iNeuOS平台演示... 2 3. 设备驱动管理... 2 4. 服务驱动管理... 3 5. 云组 ...
- Lucene查询语法汇总
目录 一.单词查询 二.通配符查询 三.模糊查询 四.近似查询 五.范围查询 六.优先级查询 七.逻辑操作 八.括号分组 九.转义特殊字符 Lucene是目前最为流行的开源全文搜索引擎工具包,提供了完 ...