bzoj1411: [ZJOI2009]硬币游戏
来源:互联网 发布:飞行器设计的人工智能 编辑:程序博客网 时间:2024/06/06 00:12
传送门
手玩样例发现发现2^k变换之后,第i个位置的硬币情况只与它左右的第k+1个硬币有关。
如k=0,第3位硬币情况只与2和4位硬币有关。因为t可以拆成若干个2^k的和,于是对每个2^k进行O(n)的变换,总复杂度O(nlogt)。
#include<cstring>#include<cmath> #include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm>#define ll long longusing namespace std;ll a[200005],b[200005],n,t;ll f(ll b,ll q){ ll x=((b-q)%(2*n)+2*n-1)%(2*n)+1; ll y=(b+q-1)%(2*n)+1; if (!q) return a[x]; if (!a[x]) return 0; if (a[x]!=a[y]) return 2; return 1;}void work(ll k,ll q){ if (k==0) return; work(k/2,q*2); if (k%2){ memset(b,0,sizeof(b)); for (ll j=1;j<=n*2;j++) b[j]=f(j,q); swap(a,b); }}int main(){ scanf("%lld%lld",&n,&t); for (int i=1;i<=n;i++) scanf("%lld",&a[i*2-1]); work(t,1); for (int i=1;i<2*n;i++) printf("%lld ",a[i]); printf("%lld",a[n*2]);}
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]染色游戏 博弈
- 抛硬币游戏模拟
- 关于springmvc的静态资源映射问题
- 记录自已学习之单链表(逆序)
- 维克兹的进制转换
- 设置手机联网状态
- MySQL 官方 Docker 镜像的使用
- bzoj1411: [ZJOI2009]硬币游戏
- Setup Factory使用——安装包进行安装时模块选择的实现
- HttpServletResponse中获取PrintWriter需要注意的一个小问题
- 火狐两款接口测试工具RESTClient和HttpRequester发送post请求
- python——使用seaborn画直方图
- eclipse web module版本问题:Cannot change version of project facet Dynamic Web Module to 2.5.
- 模拟实现vector
- JAVA WEB从入门到精通 day26 基础加强
- NYOJ 210 Fire Station