[BZOJ5428][九省联考2018]双木棋
2024-08-27 14:47:03
去年觉得高不可攀的题啊...
貌似就很沙茶了QAQ
直接状压每一行是多少然后合法状态是LIS状态数极少所以随便dp一下就好了啊...
注意初值啥的得赋对才行QAQ
我菜死了
//Love and Freedom.
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<map>
#define ll long long
#define inf 2002122500
using namespace std;
int a[][],b[][],n,m;
map<ll,int> f[]; map<ll,bool> vis[];
ll mm[];
int dp(ll w,int hd)
{
if(vis[hd][w]) return f[hd][w];
vis[hd][w]=; ll rem=w; int ans=(hd==?-inf:inf); int tmp=m,nt=; bool qaq=;
for(int i=;i<=n;i++)
{
nt=w%(m+); w/=(m+);
if(tmp>=nt+)
{
qaq=;
if(hd==) ans=max(ans,a[i][nt+]+dp(rem+mm[i],hd^));
else ans=min(ans,dp(rem+mm[i],hd^)-b[i][nt+]);
}
tmp=nt;
}
if(!qaq) return ; return f[hd][rem]=ans;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) for(int j=;j<=m;j++)
scanf("%d",&a[i][j]);
for(int i=;i<=n;i++) for(int j=;j<=m;j++)
scanf("%d",&b[i][j]);
mm[]=;
for(int i=;i<=n;i++) mm[i]=mm[i-]*(m+);
printf("%d\n",dp(,));
return ;
}
最新文章
- 谢欣伦 - 原创软件 - 游戏专题 - 操蛋的小鸟Fucking Bird
- 【转】App架构设计经验谈:接口的设计
- Qt做动画旋转旋转图片
- 圆内,求离圆心最远的整数点 hiho一下第111周 Farthest Point
- python seq
- ThinkPHP 3 的输出
- 汉诺塔 python版
- git 代理设置
- iOS Learning
- 使用pillow生成分享图片
- Snapde电子表格支持的文件格式
- [jzoj]3506.【NOIP2013模拟11.4A组】善良的精灵(fairy)(深度优先生成树)
- PKUWC 2017 Day 2 简要题解
- ES6学习之变量的解构赋值
- Ionic下的Jpush消息推送与内容显示
- JS的call方法的作用解释,简单易懂
- 构造函数new执行与直接执行的区别
- iOS应用之间的跳转
- matlab入门笔记(六):编程基础之M文件
- 静态分析工具PMD使用说明
热门文章
- POJ 1797 Heavy Transprotation ( 最短路变形 || 最小生成树 )
- win7下redis开机自启动设置
- “The creator of this fault did not specify a Reason” Exception
- mysql主从架构,IO、SQL线程运行为YES,从库没有同步数据
- Java多线程,实现卖电影票的业务
- Java连接MySql数据库之JDBC
- Linux学习篇(三)-Linux操作系统及常用命令
- Failed to load resource: the server responsed with a status of 400 (Bad Request)
- CET-6 分频周计划生词筛选(番外篇:百词斩)
- 网络流强化-HDU 3338-上下界限制最大流