[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 ...
随机推荐
- SCI-hub使用技巧(下载外文文献)
下载外文文献方法指南: (1)首先查找需要下载文献的DOI (2)在Sci-Hub主页搜索框输入URL.DOI或者PMID. (3)点击open即可看见下载界面. 参考文献:https://mp.we ...
- hadoop常见问题收集
hadoop 搭建 常用命令记录 快捷键安装在/user/local/bin目录下 nano 文件名 ctrl + k 剪切一行 ctrl + o 保存并重命名,不重命名直接enter ctrl + ...
- Python19之函数和过程
一.函数和过程 函数和过程都是指一段实现特定功能的代码段,如果该代码段有返回值则称为函数,否则称为过程. 注:Python中只有函数而没有过程,就算是函数体内没有return语句返回一个值,Pytho ...
- Java基础IO类之字节数组流
package IODemo; //字节数组流 :内部维护这着一个字节数组,我们可以利用流的读取机制来处理字符串 无需关闭,不会报IO异常 // ByteArrayInputstream ByteAr ...
- Python 命令行模块使用技巧
命令行参数传递 python main.py -H 192.168.1.1 -p 22,23,24 #coding:utf-8 import optparse def PortScan(host,po ...
- 怎样输出Hello World
方法一: 进入python交互模式, 然后使用: print()函数输出 方法二: 新建一个.py文件, 然后写入print()函数, 再使用python命令执行输出:
- [v]Windows下Git安装指南
参考<Git权威指南>安装整理,图书配套网址参见[1] 1. Cygwin下安装配置Git 1. 在Windows下安装配置Git有2种不同的方案 (1)msysGit, (2)Cygwi ...
- Git pull记住密码
在使用https git拉取代码时,每次git pull的时候都会让输入用户名和密码 进入项目目录 命令:git config --global credential.helper store 然后会 ...
- SDcms1.8代码审计
由于工作原因,分析了很多的cms也都写过文章,不过觉得好像没什么骚操作都是网上的基本操作,所以也就没发表在网站上,都保存在本地.最近突然发现自己博客中实战的东西太少了,决定将以前写的一些文章搬过来,由 ...
- unittest管理测试用例
#coding=utf-8 from selenium import webdriver from time import sleep import unittest #导入unittest库 imp ...