bzoj1411 [ZJOI2009]硬币游戏
来源:互联网 发布:nginx 绑定域名访问 编辑:程序博客网 时间:2024/05/17 07:46
题目
我们可以先用O(mn)的模来做一做,之后可以发现每过2^k次方后,每个硬币都有规律的,我们就可以这样相当于拆一下二进制就可以了。
细节还是比较多的。
#include<bits/stdc++.h>#define N 100000using namespace std;long long n;int A[2*N+1];int B[2*N+1];long long T;int main(){ //freopen("in.txt","r",stdin); cin>>n>>T; for(long long i=1;i<=n;i++)scanf("%d",&A[2*i-1]); if(T&1) { for(long long i=1;i<n;i++) A[2*i]=(A[2*i-1]!=A[2*i+1])+1; A[2*n]=(A[1]!=A[2*n-1])+1; for(long long i=1;i<=n;i++)A[2*i-1]=0; T--; } for(long long i=1;i<=62;i++) { if(!((T>>i)&1))continue; for(long long j=1;j<=2*n;j++) { if(!A[j])continue; long long l=(long long)(j-2*((long long)1<<(i-1)))%(2*n); l=(l+i*2*n)%(2*n); if(!l)l=2*n; long long r=(long long)(j+2*((long long)1<<(i-1)))%(2*n); if(!r)r=2*n; B[j]=(A[l]!=A[r])+1; } for(long long j=1;j<=2*n;j++) A[j]=B[j]; } for(long long i=1;i<2*n;i++)printf("%d ",A[i]); printf("%d",A[2*n]); return 0;}
阅读全文
0 0
- bzoj1411: [ZJOI2009]硬币游戏
- bzoj1411: [ZJOI2009]硬币游戏
- bzoj1411 [ZJOI2009]硬币游戏
- bzoj1411: [ZJOI2009]硬币游戏
- bzoj1411: [ZJOI2009]硬币游戏 找规律神题
- bzoj1411 硬币游戏 分治
- BZOJ 1411 ZJOI2009 硬币游戏 递推
- Vijos P1554 硬币游戏(ZJOI2009)题解
- bzoj 1411: [ZJOI2009]硬币游戏 找规律
- 1411: [ZJOI2009]硬币游戏【xjb找规律
- bzoj1411
- 【ZJOI2009】染色游戏
- 硬币游戏
- 硬币游戏
- 硬币游戏
- ★【博弈论】【ZJOI2009】染色游戏
- BZOJ 1434: [ZJOI2009]染色游戏 博弈
- 抛硬币游戏模拟
- 线程--生产者与消费者的案例
- JAVA Integer值比较问题
- CSDN转载操作
- C语言文件读写
- python中画图时x,y轴名称出现中文乱码的解决方法
- bzoj1411 [ZJOI2009]硬币游戏
- JAVA Hibernate工作原理及为什么要用
- Android Studio 调试
- bzoj1833 [ZJOI2010]count 数字计数
- scala函数编程--与Java的区别
- H
- Java文件相关
- bzoj1854 [Scoi2010]游戏
- 【CS 1688】求逆序对(归并排序)