[ZJOI2009] 硬币游戏(找规律)
题目
题解
把1/21/21/2转化成0/10/10/1,所以直接可以异或。
对于长度为nnn的0/10/10/1数列,发现每变换2k(k>1)2^k(k>1)2k(k>1)时,且每个数的值就是往左和往右各走2^(k-1)步的值异或起来。
那么把mmm二进制分解一下,最后如果是奇数就多做一次。
CODE
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN = 100005;
const int LOG = 65;
LL pw[LOG], m;
int n, a[2][MAXN];
int main () {
pw[0] = 1; for(int i = 1; i <= 60; ++i) pw[i] = pw[i-1] * 2;
scanf("%d%lld", &n, &m);
for(int i = 0; i < n; ++i) scanf("%d", &a[0][i]), --a[0][i];
int cur = 0;
for(int i = 60; i >= 1; --i)
if(m>>i&1) {
cur ^= 1;
for(int j = 0; j < n; ++j)
a[cur][j] = a[cur^1][(j-pw[i-1]%n+n)%n] ^ a[cur^1][(j+pw[i-1]%n)%n];
}
if(m&1) {
cur ^= 1;
for(int j = 0; j < n; ++j)
a[cur][j] = a[cur^1][j] ^ a[cur^1][(j+1)%n];
for(int i = 0; i < n; ++i)
printf("0 %d%c", a[cur][i]+1, " \n"[i==n-1]);
}
else {
for(int i = 0; i < n; ++i)
printf("%d 0%c", a[cur][i]+1, " \n"[i==n-1]);
}
}
[ZJOI2009] 硬币游戏(找规律)的更多相关文章
- BZOJ 1411&&Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】
1411: [ZJOI2009]硬币游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 897 Solved: 394[Submit][Status ...
- 【BZOJ1432】[ZJOI2009]Function(找规律)
[BZOJ1432][ZJOI2009]Function(找规律) 题面 BZOJ 洛谷 题解 这...找找规律吧. #include<iostream> using namespace ...
- bzoj1411: [ZJOI2009]硬币游戏
1411: [ZJOI2009]硬币游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 965 Solved: 420[Submit][Status ...
- [ZJOI2009]硬币游戏
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 920 Solved: 406[Submit][Status][Discuss] Descriptio ...
- hdu 2147 kiki's game 组合游戏 找规律
题目链接 题意 两人轮流将硬币从\((n,m)\)移动到\((1,1)\),每次只能向下或向左或向左下移动一格,最后无法移动者输.问先手会赢还是会输. 思路 找规律 -- P N P N P N P ...
- bzoj 1432 [ZJOI2009]Function(找规律)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1432 [思路] 找(cha)规(ti)律(jie) 分析戳这儿 click here ...
- bzoj 1411 [ZJOI2009]硬币游戏
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1411 [题意] N个硬币放在一个有2*N个位置的圆桌上,求T次操作后的情况.对于一个操 ...
- hdu 1847 Good Luck in CET-4 Everybody! 组合游戏 找规律
题目链接 题意 有\(n\)张牌,两人依次摸牌,每次摸的张数只能是\(2\)的幂次,最后没牌可摸的人为负.问先手会赢还是会输? 思路 0 1 2 3 4 5 6 7 8 9 10 11 -- P N ...
- vijos 1004 伊甸园日历游戏 博弈+打表找规律
描述 Adam和Eve玩一个游戏,他们先从1900.1.1到2001.11.4这个日期之间随意抽取一个日期出来.然后他们轮流对这个日期进行操作: 1 : 把日期的天数加1,例如1900.1.1变到19 ...
随机推荐
- 【算法】js实现最短时间走完不同速度的路程
题目: 现在有一条公路,起点是0公里,终点是100公里.这条公路被划分为N段,每一段有不同的限速.现在他们从A公里处开始,到B公里处结束.请帮他们计算在不超过限速的情况下,最少需要多少时间完成这段路程 ...
- PAT(B) 1043 输出PATest(Java)统计
题目链接:1043 输出PATest (20 point(s)) 题目描述 给定一个长度不超过 104 的.仅由英文字母构成的字符串.请将字符重新调整顺序,按 PATestPATest- 这样的 ...
- Scratch(一)为什么你要学Scratch儿童编程
因为人工智能和机器人学科的崛起,似乎一夜之间未来就变成了程序员的天下,尤其是在知乎上,不会编程都没办法和这群程序员好好说话了.我已经搬了一辈子砖了,难道我的孩子也还要接着搬?这就是现在大部分家长的焦虑 ...
- 第4章 JIT编译器
4.1 JIT概览 语言根据执行的方式不同分为编译型语言和解释型语言.以C++为代表的编译型语言在执行前需要编译成机器码,不同的CPU需要不同的编译器,编译成功后在同一台机器不需再次编译.以Pytho ...
- C#基础之结构和类
大家在平时的工作中对类的使用应该是比较多的,但是在结构使用方面可能稍微少点,这里我就总结一下结构和类的一些异同之处,如有错误之处,还请指正. 结构是值类型,类是引用类型,结构通常用来封装小型相关变量组 ...
- "多层感知器"--MLP神经网络算法
提到人工智能(Artificial Intelligence,AI),大家都不会陌生,在现今行业领起风潮,各行各业无不趋之若鹜,作为技术使用者,到底什么是AI,我们要有自己的理解. 目前,在人工智能中 ...
- java开发中常用语(词汇)含义
DAO:Data Access Objects(数据存取对象): DTO:Data Transfer Object: AR:active record:
- iOS - OC 使用运行时来获取并修改类
前言: Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表.属性列表.变量列表,修改方法.属性,增加方法,属性等等,本文对相 ...
- 【转载】 C#中日期类型DateTime的日期加减操作
在C#开发过程中,DateTime数据类型用于表示日期类型,可以通过DateTime.Now获取当前服务器时间,同时日期也可以像数字一样进行加减操作,如AddDay方法可以对日期进行加减几天的操作,A ...
- 关于Vue-elementUI中,给input手动赋值之后无法修改的问题解决
方案一:在data中给input的值赋一个初始值 方案二:在给input赋值时,使用this.$set