题解:

水题吧

首先很显然的是状压或者搜索

考虑一下能不能状压吧

这个东西一定是长成三角形的样子的

所以是可以状压的

相邻两位之间有几个0代表他们差几

这样最多会有2n

然后就可以转移了

由于之前对博弈dp的理解非常傻逼

刚开始正着dp以为可能是一样的然后就挂了

当然是要,倒着dp才对。。

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define INF 1e9
  4. int dp[<<],dp2[<<],a1[][],b1[][];
  5. int n,m,f[];
  6. void maxa(int &a,int b)
  7. {
  8. a=max(a,b);
  9. }
  10. int cl(int x,int y1)
  11. {
  12. int l=,l1=,tmp=x,y=y1-;
  13. while (y)
  14. {
  15. if (x%==) y--;
  16. x/=;
  17. l++;
  18. }
  19. tmp=tmp-(x<<l);
  20. x>>=;
  21. if (y1!=n)
  22. {
  23. while (x%==) l1++,x/=;
  24. x=(x-)<<; x+=;
  25. x<<=l1;
  26. }
  27. x<<=l;
  28. return(tmp+x);
  29. }
  30. int main()
  31. {
  32. freopen("noip.in","r",stdin);
  33. freopen("noip.out","w",stdout);
  34. std::ios::sync_with_stdio(false);
  35. cin>>n>>m;
  36. for (int i=;i<=n;i++)
  37. for (int j=;j<=m;j++)
  38. cin>>a1[i][j];
  39. for (int i=;i<=n;i++)
  40. for (int j=;j<=m;j++)
  41. cin>>b1[i][j];
  42. for (int j=;j<<<;j++) dp[j]=-INF;
  43. int maxn=(<<n)-;
  44. maxn<<=m;
  45. /*if (n*m%2==0) dp[maxn]=b1[n][m];
  46. else dp[maxn]=a1[n][m];*/
  47. dp[maxn]=;
  48. for (int k=;k<=n*m;k++)
  49. {
  50. for (int j=;j<<<;j++) dp2[j]=-INF;
  51. for (int i=;i<=maxn;i++)
  52. if (dp[i]!=-INF)
  53. {
  54. int l=,x=i,tmp;
  55. for (int j=;j<=n;j++)
  56. {
  57. while (x%==) x/=,l++;
  58. f[j]=l;
  59. x/=;
  60. }
  61. tmp=((n*m-k)%+)%; x=i;
  62. for (int j=n;j;j--)
  63. {
  64. if (f[j]>f[j-])
  65. {
  66. int y=cl(x,j);
  67. if (tmp==) maxa(dp2[y],-dp[i]+a1[n-j+][f[j]]);
  68. if (tmp==) maxa(dp2[y],-dp[i]+b1[n-j+][f[j]]);
  69. }
  70. }
  71. }
  72. memcpy(dp,dp2,sizeof(dp2));
  73. }
  74. maxn=(<<(n-))-;
  75. maxn+=<<n;
  76. cout<<-dp[maxn]+a1[][];
  77. return ;
  78. }

[九省联考2018]一双木棋chess的更多相关文章

  1. 洛谷 P4363 [九省联考2018]一双木棋chess 解题报告

    P4363 [九省联考2018]一双木棋chess 题目描述 菲菲和牛牛在一块\(n\)行\(m\)列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手. 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落 ...

  2. Luogu4363 [九省联考2018]一双木棋chess 【状压DP】【进制转换】

    题目分析: 首先跑个暴力,求一下有多少种状态,发现只有18xxxx种,然后每个状态有10的转移,所以复杂度大约是200w,然后利用进制转换的技巧求一下每个状态的十进制码就行了. 代码: #includ ...

  3. luogu P4363 [九省联考2018]一双木棋chess

    传送门 对抗搜索都不会,我真是菜死了qwq 首先根据题目条件,可以发现从上到下每一行的棋子数是单调不增的,然后n m都比较小,如果把状态搜出来,可以发现合法状态并不多,所以可以用一个11进制数表示状态 ...

  4. 【题解】Luogu P4363 [九省联考2018]一双木棋chess

    原题传送门 这道题珂以轮廓线dp解决 经过推导,我们珂以发现下一行的棋子比上一行的棋子少(或等于),而且每一行中的棋子都是从左向右依次排列(从头开始,中间没有空隙) 所以每下完一步棋,棋盘的一部分是有 ...

  5. P4363 [九省联考2018]一双木棋chess

    思路 容易发现只能在轮廓线的拐点处落子,所以棋盘的状态可以用一个n+m长度的二进制数表示 转移就是10变成01 代码 #include <cstdio> #include <algo ...

  6. [九省联考2018] 一双木棋 chess

    Description 菲菲和牛牛在一块n 行m 列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手. 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结束. 落子的规则是:一个格子可 ...

  7. BZOJ.5248.[九省联考2018]一双木棋chess(对抗搜索 记忆化)

    BZOJ 洛谷P4363 [Update] 19.2.9 重做了遍,感觉之前写的有点扯= = 首先棋子的放置情况是阶梯状的. 其次,无论已经放棋子的格子上哪些是黑棋子哪些是白棋子,之前得分如何,两人在 ...

  8. [九省联考 2018]一双木棋chess

    Description 题库链接 给出一个 \(n\times m\) 的棋盘,棋盘的每个格子有两个权值 \(A,B\) . Alice 和 Bob 轮流操作在棋盘上放棋子,一个格子能放棋子的前提条件 ...

  9. Luogu 4363 [九省联考2018]一双木棋chess

    发现数据范围很小,想到状压dp,然后就愣住不会了. 表示太菜了并没有接触过轮廓线dp这种操作. 首先发现合法的操作过程中一定是这样子的: 按照行来看发现每一行单调不递增. 我们用$1$来表示竖着的轮廓 ...

随机推荐

  1. 去除inline-block出现间距的几种方法

    display:inline-block,简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现,之后的内联对象会排列在同一行 比如两个input,默认中间会产生一些间距 &l ...

  2. A+ B

    题目描述 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. 输入描述: 测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B ...

  3. WINFROM窗体实现圆角

    首先我们先看看效果图 接下来我们看看怎么实现 先把窗体的FromBorderStyle属性改成None. 接下来登录窗体代码代码: 添加一个窗体Paint事件,引用using System.Drawi ...

  4. Nginx Server 配置

    http { include mime.types; // 主模块:实现对配置文件包含的文件设定,可以减少主配置文件的复杂度: default_type application/octet-strea ...

  5. 【通信】Jave代码中生成url http请求

    /** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求参数,请求参数应该是 name1=value1& ...

  6. Java垃圾回收机制复习

    一.如何确定某个对象是“垃圾” 二.典型的垃圾收集算法 三.典型的垃圾收集器 JVM(HotSpot) 7种垃圾收集器的特点及使用场景 https://www.cnblogs.com/chengxuy ...

  7. XML解析技术简介——(一)

  8. 算法时间复杂度和NP问题简介

    这里主要简单说一下算法的时间复杂度和NP问题简介,毕竟分析算法的时间复杂度上界有助于分析算法的好坏,分析算法好坏也有助于分析是否还有更好的算法: 一.时间复杂度: 一般关心的还有递归问题中的时间复杂度 ...

  9. SCons: 替代 make 和 makefile 及 javac 的极好用的c、c++、java 构建工具

    http://scons.org/ https://www.ibm.com/developerworks/cn/linux/l-cn-scons/index.html 后附:另外,WAF是一个基于sc ...

  10. vmware添加磁盘后linux无需重启识别的方法

    cd /sys/class/scsi_host/ [root@centos4 scsi_host]# ls host0 host1 host2 有几个host就刷几次 [root@centos4 sc ...