题目链接:https://www.luogu.org/problemnew/show/P4363

分析:

首先博弈,然后考虑棋盘的规则,因为一个子在落下时它的上面和左面都已经没有空位了,所以棋子的右下的轮廓线一定是个凸包,更具体地,从棋盘的左下沿着棋盘边界或棋子轮廓线走到棋盘右上,所走的路径一定只有向上和向右两种。

代码:

#include<cstdio>
using namespace std;
const int maxn=25,N=1<<20,INF=0x3f3f3f3f;
int f[N],n,m,nm,c[2][maxn][maxn];bool vis[N];
void Max(int &x,int y)
{
if(x<y)
x=y; }
int Run(int now,bool rt)
{
if(vis[now])
return -f[now];
vis[now]=true;
int &ans=f[now],k=0,i,j,cur=now,cnt=0;
ans=-INF;
for(k=0;now&&(k<nm);k++,cnt+=i)
{
i=now&1,now>>=1,j=now&1;
if(i&&!j)
Max(ans,Run(cur^(3<<k),!rt)+c[rt][k+1-cnt][m-cnt]);
}
return -ans;
}
int main()
{
int i,j;
scanf("%d%d",&n,&m),nm=n+m-1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&c[0][i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&c[1][i][j]);
vis[((1<<m)-1)<<n]=true,printf("%d\n",-Run((1<<m)-1,0));
return 0;
}

最新文章

  1. 练习1-21:编写程序entab,将空格串替换为最少数量的制表符和空格。。。(C程序设计语言 第2版)
  2. nginx反向代理、根据浏览器分离访问
  3. Zabbix汉化方法
  4. [luogu P2170] 选学霸(并查集+dp)
  5. 01.C语言关于结构体的学习笔记
  6. 哈希表的C++实现(转)
  7. 不实名认证去除新浪云SEA的实名认证提示的方法
  8. HDU3400+三分
  9. 2014 HDU多校弟五场A题 【归并排序求逆序对】
  10. Spring MVC CORS 跨域
  11. python 3.x 爬虫基础---常用第三方库(requests,BeautifulSoup4,selenium,lxml )
  12. H5与APP混合开发相关知识点总结
  13. vue_vuex
  14. Linux学习笔记之六————Linux常用命令之系统管理
  15. 【手记】解决excel无法设置单元格颜色且界面怪异+桌面图标文字老有色块等问题
  16. JavaScript: The Good Parts
  17. Cannot retrieve the latest commit at this time.
  18. mac下升级terminal/终端的subversion版本方法
  19. C#学习笔记(十一):类和对象
  20. 启动apache时,出现httpd: Could not reliably determine the server\&#39;s fully qualified domain name, using 127.0.0.1 for ServerName

热门文章

  1. ThreadPoolExecutor的一点理解 专题
  2. 网站运行编译器错误CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default
  3. 进程间通信 - 动态链接库中共享内存(利用DLL的2~3G的地址段空间)
  4. Qt使用com组件的一点小心得(使用Qt自带的工具dumpcpp生成.h和.cpp文件)
  5. 关于qtcreator+vs2008+CDB调试太卡的问题研究(载入符号表,以及VS调试器的注册表信息)
  6. QT+OpenCV+OpenGL安装
  7. 使用 acl 编写 UDP 网络程序(UDP 重传及可靠性机制)
  8. Kafka基本概念介绍
  9. 18 HTML标签以及属性全
  10. SpringBoot系列——加载自定义配置文件