Alice和Bob轮流在n*m的棋盘上放棋子

a[i][j]表示Alice放在这的收益,b[i][j]表示Bob放在这的收益

一个地方没有棋子且它的左边上边都有棋子才能放棋子,边界外视为有一圈棋子

n,m<=10,求两人都用最优方案时,Alice可以赢多少

sol:上次用的轮廓线dp,现在已然不会写了...真是个sb

写了上次口胡出来的方法,考虑棋子放出来的形状,显然,每行棋子小于等于上一行放的棋子

那状态也不多嘛,可以哈希出来然后对抗搜索

mask[i]表示第i行已经放了多少棋子

对抗搜索的时候,每一步更换游戏者,游戏者A要让ret尽量大,游戏者B要让ret尽量小

不卡自然溢出好评

#include<bits/stdc++.h>
#define LL unsigned long long
using namespace std;
inline LL read()
{LL x = 0,f = 1;char ch = getchar();for(;!isdigit(ch);ch = getchar())if(ch == '-')f = -f;for(;isdigit(ch);ch = getchar())x = 10 * x + ch - '0';return x * f;
}
int n,m;
int a[2][15][15];
int mask[15];
map<LL,int> hsh;
const LL base = 137;
inline LL getmask()
{LL ans = 0;for(int i=1;i<=n;i++)ans = ans * base + mask[i];return ans;
}
inline int dfs(LL curmask,int opt)
{if(hsh.count(curmask))return hsh[curmask];int ret = opt ? 1e9 : -1e9;for(int i=1;i<=n;i++)if(mask[i] + 1 <= mask[i - 1]){mask[i]++;if(opt)ret = min(ret,dfs(getmask(),opt ^ 1) - a[1][i][mask[i]]);else ret = max(ret,dfs(getmask(),opt ^ 1) + a[0][i][mask[i]]);mask[i]--;}return hsh[curmask] = ret;
}
int main()
{n = read(),m = read();for(int k=0;k<=1;k++)for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[k][i][j] = read();for(int i=1;i<=n;i++)mask[i] = m;hsh[getmask()] = 0;memset(mask,0,sizeof(mask));mask[0] = m;cout<<dfs(getmask(),0);
}

View Code

转载于:https://www.cnblogs.com/Kong-Ruo/p/9760029.html

九省联考2018 D1T1 一双木棋相关推荐

  1. 「九省联考 2018」一双木棋

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

  2. [博弈] LOJ#2471. 「九省联考 2018」一双木棋

    考虑暴力. 每次枚举放哪个位置,设已经放了棋子的位置集合为 SSS,fS" role="presentation">fSfSf_S 表示当前放置情况为 SSS 时, ...

  3. 【九省联考 2018】 一双木棋 chess

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

  4. 【九省联考2018】一双木棋

    题面 https://www.luogu.org/problem/P4363 题解 很套路的$hash$状态$+dp$. 可知棋子形成的形状一定是一个连续的倒楼梯形(楼梯向右延伸的长度可以不连续,但一 ...

  5. 「Luogu4363/BZOJ5248」[九省联考2018]一双木棋chess

    「Luogu4363/BZOJ5248」[九省联考2018]一双木棋chess 学校省选模拟居然拿九省联考来考 然而我还是\(too\space young\),搞不懂什么叫最优 让二者的答案最接近可 ...

  6. 【洛谷】【博弈搜索】P4363 [九省联考2018]一双木棋chess

    洛谷 P4363 [九省联考2018]一双木棋chess 题目大意 ◇题目传送门◆ 分析 根据题目所给定的规则,可以发现对于每一行,其下面一行上放的棋子数目不可能多于上面的一行. 所以我们可以将每行上 ...

  7. 九省联考2018总结

    前言 我作为一名ZJOI2018day1凉凉选手,为获得更多的省选体验,去上海参加了九省联考2018,当然,是属于外省选手参加的(所以实际并测的时候出现了一些问题也得不到解决),做完两天的题,深有感触 ...

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

    传送门 分析 我们用0表示向右,1表示向上 于是可以得到一条江棋盘分为两块的线 直接dp即可 代码 #include<iostream> #include<cstdio> #i ...

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

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

最新文章

  1. 企业怎样管理员工才会更有效?
  2. elasticsearch v6.5.4配置
  3. Windows To Ghost系统封装之必备软件集 - 好压
  4. 生成awr报告时报ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  5. 力扣112. 路径总和(JavaScript)
  6. TCP/IP参考模型、五层参考模型
  7. 合肥师范学院2020年专业计算机是多少分,合肥师范学院2020年安徽省一本、二本各专业录取分数统计...
  8. 法勒二维码读头数据读写测试
  9. Ceph新建monitor或者osd报错:use --overwrite-conf to overwrite
  10. ThreadLocal使用场景
  11. 开始防破解--该死的杀毒软件
  12. 2021年美容师(高级)考试及美容师(高级)考试题
  13. sql简介香气和sql简介_香气和SQL简介
  14. 和女友一起学技术,她去了字节,我去了华为
  15. 计算机控制面板包含的管理类别有什么,如何设置控制面板分类
  16. springboot整合阿里云视频点播服务Vod——实现视频上传、删除、播放
  17. redis的zset为什么用跳表不用红黑树
  18. 互联网快讯:中国石化与隆基达成战略合作;极米多款投影产品持续热销;百度网盘青春版正式上线
  19. Matplotlib多子图绘图后保存单个子图
  20. 【区块链论文整理】ICDE 篇

热门文章

  1. jzoj P1592 音乐节拍
  2. OCR技术简介——人工智能爆发前的技术
  3. Vue 导出Excel表格,并实现合并单元格方法
  4. python来写打飞机
  5. 自然语言处理(NLP)简介
  6. 图隐私论文速递:A graph modification approach for k‑anonymity in social networks using the genetic algorith
  7. 【Python】pandas获取全省人口数据并作可视化分析
  8. 随心所语之容器(C++ Container)
  9. 力谱宿云秦鹏:MaxLeap云服务基础架构演进之路-CSDN公开课-专题视频课程
  10. TCP协议中的核心知识点,SYN Flood?ISN?滑动窗口?数据重传?拆包粘包?单tcp连接多请求?拥塞管理?(个人收藏学习笔记)