http://acm.hdu.edu.cn/showproblem.php?pid=4642

对于给定的矩阵 操作步数的奇偶性是确定的

奇数步Alice赢 否则Bob赢

从左上角向右下角遍历遇到1就进行一次处理 遍历到 (x,y) 的时候必须保证 所有(x,y)左上方的点都处理完了

可以根据左上方处理时对(x,y)产生的影响 判断(x,y)的状态

代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<string>
  5. #include<cstring>
  6. #include<cmath>
  7. #include<set>
  8. #include<vector>
  9. #include<list>
  10. using namespace std;
  11.  
  12. typedef long long ll;
  13. typedef pair<double,double>ppd;
  14. const double PI = acos(-1.);
  15. const double eps = (1e-9);
  16. const int MOD=10007;
  17. const int N=105;
  18. int a[N][N];
  19. int c[N][N];
  20. int lowbit(int x)
  21. {
  22. return x&(-x);
  23. }
  24. void add(int x,int y)
  25. {
  26. for(int i=x;i<N;i=i+lowbit(i))
  27. for(int j=y;j<N;j=j+lowbit(j))
  28. ++c[i][j];
  29. }
  30. int get(int x,int y)
  31. {
  32. int tmp=0;
  33. for(int i=x;i>=1;i=i-lowbit(i))
  34. for(int j=y;j>=1;j=j-lowbit(j))
  35. tmp+=c[i][j];
  36. return tmp;
  37. }
  38. int main()
  39. {
  40. //freopen("data.in","r",stdin);
  41. int T;
  42. scanf("%d",&T);
  43. for(int ca=1;ca<=T;++ca)
  44. {
  45. memset(c,0,sizeof(c));
  46. memset(a,0,sizeof(a));
  47. int n,m;
  48. scanf("%d %d",&n,&m);
  49. for(int i=1;i<=n;++i)
  50. for(int j=1;j<=m;++j)
  51. scanf("%d",&a[i][j]);
  52. int ans=0;
  53. for(int i=1;i<=n;++i)
  54. {
  55. for(int x=i,y=1;x>=1&&y<=m;--x,++y)
  56. if((a[x][y]+get(x,y))&1)
  57. {
  58. ++ans;
  59. add(x,y);
  60. }
  61. }
  62. for(int j=2;j<=m;++j)
  63. {
  64. for(int x=n,y=j;x>=1&&y<=m;--x,++y)
  65. if((a[x][y]+get(x,y))&1)
  66. {
  67. ++ans;
  68. add(x,y);
  69. }
  70. }
  71. if((ans&1))
  72. printf("Alice\n");
  73. else
  74. printf("Bob\n");
  75. }
  76. return 0;
  77. }

hdu 4642 Fliping game的更多相关文章

  1. hdu 4642 Fliping game(博弈)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4642 题意:给定一个棋盘,0表示向下,1表示向上,选一个x,y, 然后翻转从x,y 到n,m.的所有硬币, ...

  2. HDU 4642 Fliping game (简单博弈)

    Fliping game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  3. HDU 4642 Fliping game (2013多校4 1011 简单博弈)

    Fliping game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  4. 【多校练习4签到题】HDU 4642—— Fliping game

    来源:点击打开链接 看上去很难,比赛的时候光看hehe了,也没有想. 但是仔细想想,是可以想出来的.一个棋盘上每个格子摆放一个硬币,硬币有正面1和反面0之分.现在两个人可以按照规则翻硬币,选择(x,y ...

  5. HDU 4642 (13.08.25)

    Fliping game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  6. hdu 4642 博弈

    思路:不管是Alice,还是Bob,每次操作都会影响最右下角的数,那么如果是1,Alice赢,否则Bob赢 #include<iostream> #include<cstdio> ...

  7. hdu 4642 翻硬币

    在一个n*m的棋盘上 每一个格子都有一枚硬币 1表示正面 0表示反面你每次可以选择一个硬币为正面的点,然后从该点与右下角点形成的矩阵硬币全都反向,直到一个人没有硬币可以选择则输Alice先手 列举了几 ...

  8. 【 2013 Multi-University Training Contest 4 】

    HDU 4632 Palindrome subsequence dp[x][y]表示区间[x,y]构成回文串的方案数. 若str[x]==str[y],dp[x][y]=dp[x+1][y]+dp[x ...

  9. hdu4642 Fliping game ——博弈

    link:http://acm.hdu.edu.cn/showproblem.php?pid=4642 refer to: http://www.cnblogs.com/jackge/archive/ ...

随机推荐

  1. li ul 说明

    复制代码代码如下: <div id="menu">  <ul>  <li><a href="#">首页</ ...

  2. SQL Server数据库性能优化(二)之 索引优化

    参考文献 http://isky000.com/database/mysql-performance-tuning-index 原文作者是做mysql 优化的     但是我觉得  在索引方面    ...

  3. 关于ebox

         看了介绍,觉得挺不错的东西,希望能够一路走下去       老话题STM32编程,新思路,一样是编程,味道却大有不同.这就是STM32之eBox编程.让你提议不一样的编程,让开发快到你意想不 ...

  4. Java多线程编程——进阶篇一

    一.线程栈模型与线程的变量 要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型. 线程栈是指某一时刻内存中线程调度的栈信息,当前调用的方法总是位于栈顶.线程栈的内容是随着程序的运行动态变化的, ...

  5. ES6最具魔力的特性——生成器

    ES6生成器(Generators)简介 我们从一个示例开始: function* quips(name) { yield "你好 " + name + "!" ...

  6. [3] 智能指针std::auto_ptr

    [1]std::auto_ptr 对于编译器来说,智能指针实质是一个栈对象,而并非指针类型. 智能指针通过构造函数获取堆内存的管理所有权,而在其生命期结束时,再通过析构函数释放由它所管理的堆内存. 所 ...

  7. Centos7下Rinetd安装与应用

    Linux下做地址NAT有很多种方法.比如haproxy.nginx的4层代理,linux自带的iptables等都能实现.haproxy.nginx就不说了,配置相对简单:iptables配置复杂, ...

  8. 用代码来理解 C#委托与事件

    C#中委托是什么?事件是委托吗? 1.委托是讲方法作为参数代入另一个方法中, 委托可以理解为指向一个函数的引用. class Program { public delegate void Delega ...

  9. python(九)re模块

    python中re模块提供了正则表达式相关操作. 1. 字符串匹配: .    匹配除换行符以外的任意字符 \w 匹配字符或数字或下划线或汉字 \s  匹配任意空白字符 \d 匹配数字 \b 匹配单词 ...

  10. easyui datagrid 仿ext—右键

    var createGridHeaderContextMenu = function(e, field) { e.preventDefault(); var grid = $(this);/* gri ...