bzoj 1411 [ZJOI2009]硬币游戏
2016-03-15 17:31
232 查看
【题目链接】
http://www.lydsy.com/JudgeOnline/problem.php?id=1411
【题意】
N个硬币放在一个有2*N个位置的圆桌上,求T次操作后的情况。对于一个操作,如果两边都是正或都是负,则在中间放一个负,否则放一个正。
【思路】
把正设为0,负设为1,则一个硬币的状态为两边硬币的抑或。
把两次操作看作一次,则一次操作后硬币只有状态发生改变而位置不会改变。
通过数学归纳法得到:一个硬币的状态在操作2^k后是其左右两边与其相距2^k的硬币的抑或。直观的看,就是中间的项都被抑或消掉了。
将T/2进行二进制拆分,不断进行操作即可。最后考虑T的奇偶性。
【代码】
![](http://images2015.cnblogs.com/blog/790791/201603/790791-20160315173207521-1695689762.png)
还能再任性点么 =-=
http://www.lydsy.com/JudgeOnline/problem.php?id=1411
【题意】
N个硬币放在一个有2*N个位置的圆桌上,求T次操作后的情况。对于一个操作,如果两边都是正或都是负,则在中间放一个负,否则放一个正。
【思路】
把正设为0,负设为1,则一个硬币的状态为两边硬币的抑或。
把两次操作看作一次,则一次操作后硬币只有状态发生改变而位置不会改变。
通过数学归纳法得到:一个硬币的状态在操作2^k后是其左右两边与其相距2^k的硬币的抑或。直观的看,就是中间的项都被抑或消掉了。
将T/2进行二进制拆分,不断进行操作即可。最后考虑T的奇偶性。
【代码】
#include<cmath> #include<queue> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define FOR(a,b,c) for(int a=(b);a<=(c);a++) using namespace std; typedef long long ll; const int N = 5e5+10; ll read() { char c=getchar(); ll f=1,x=0; while(!isdigit(c)) { if(c=='-') f=-1; c=getchar(); } while(isdigit(c)) x=x*10+c-'0',c=getchar(); return x*f; } int n; ll m; int a ,ans ; int main() { //freopen("in.in","r",stdin); //freopen("out.out","w",stdout); n=read(),m=read(); FOR(i,1,n) ans[i]=read(),ans[i]--; ll x=m/2; for(ll p=1;p<=x;p<<=1) if(x&p) { memcpy(a,ans,sizeof(int)*(n+1)); ll k=p%n; for(int i=1;i<=n;i++) { ll l=(i-1-k+n)%n+1,r=(i-1+k)%n+1; ans[i]=a[l]^a[r]; } } ans[0]=ans ,ans[n+1]=ans[1]; if(m&1) FOR(i,1,n-1) printf("0 %d ",(ans[i]^ans[i+1])+1); else FOR(i,1,n-1) printf("%d 0 ",ans[i]+1); if(m&1) printf("0 %d",(ans ^ans[n+1])+1); else printf("%d 0",ans +1); return 0; }
![](http://images2015.cnblogs.com/blog/790791/201603/790791-20160315173207521-1695689762.png)
还能再任性点么 =-=
相关文章推荐
- 新手引导插件intro.js的使用示例
- 学校Android客户端共享上网的原理
- Android Gesture
- iOS 8 中UIAlertController使用
- 自定义控件-宽度固定 高度随宽度变化的图片
- ibatis: ibatis 初探
- 3.15交作业
- Matlab中的color 画线的多种颜色
- javascript笔记
- nodejs一些比较实用的命令
- DevExpress控件的GridControl控件小结
- RT-Thread常见问题
- ubuntu sourceinsight 下smb挂载和gvfs的不同表现。
- xib中关于拖拽手势的潜在错误
- PHP 快速排序法
- LintCode 433. 岛屿的个数
- 4_View的工作原理
- React setState更新数组中的某个元素Element item
- 套接字函数及其理解
- web.xml文件中的一般配置格式