洛谷 P4363 [九省联考2018]一双木棋chess 题解
2024-10-19 17:30:15
题目链接: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-21:编写程序entab,将空格串替换为最少数量的制表符和空格。。。(C程序设计语言 第2版)
- nginx反向代理、根据浏览器分离访问
- Zabbix汉化方法
- [luogu P2170] 选学霸(并查集+dp)
- 01.C语言关于结构体的学习笔记
- 哈希表的C++实现(转)
- 不实名认证去除新浪云SEA的实名认证提示的方法
- HDU3400+三分
- 2014 HDU多校弟五场A题 【归并排序求逆序对】
- Spring MVC CORS 跨域
- python 3.x 爬虫基础---常用第三方库(requests,BeautifulSoup4,selenium,lxml )
- H5与APP混合开发相关知识点总结
- vue_vuex
- Linux学习笔记之六————Linux常用命令之系统管理
- 【手记】解决excel无法设置单元格颜色且界面怪异+桌面图标文字老有色块等问题
- JavaScript: The Good Parts
- Cannot retrieve the latest commit at this time.
- mac下升级terminal/终端的subversion版本方法
- C#学习笔记(十一):类和对象
- 启动apache时,出现httpd: Could not reliably determine the server\&#39;s fully qualified domain name, using 127.0.0.1 for ServerName
热门文章
- ThreadPoolExecutor的一点理解 专题
- 网站运行编译器错误CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default
- 进程间通信 - 动态链接库中共享内存(利用DLL的2~3G的地址段空间)
- Qt使用com组件的一点小心得(使用Qt自带的工具dumpcpp生成.h和.cpp文件)
- 关于qtcreator+vs2008+CDB调试太卡的问题研究(载入符号表,以及VS调试器的注册表信息)
- QT+OpenCV+OpenGL安装
- 使用 acl 编写 UDP 网络程序(UDP 重传及可靠性机制)
- Kafka基本概念介绍
- 18 HTML标签以及属性全
- SpringBoot系列——加载自定义配置文件