bzoj1996
2024-09-07 11:08:04
区间dp
其实我们发现对于一段区间我们是这样构造的,每次我们会向两端放数,这样就有四种情况,且必须满足题意,初值是dp[i][i][0]=1,因为第一个人只有一种放法,不分左右。其实看见dp[i][i][0/1]=1时答案是16就改初值
#include<bits/stdc++.h>
using namespace std;
const int N = , mod = ;
int n;
int h[N], dp[N][N][];
void up(int &x, int d)
{
x = (x + d) % mod;
}
int dfs(int l, int r, int f)
{
if(l == r) return f;
if(dp[l][r][f] != -) return dp[l][r][f];
int &ret = (dp[l][r][f] = );
if(f == )
{
if(h[l] < h[l + ]) up(ret, dfs(l + , r, f));
if(h[l] < h[r]) up(ret, dfs(l + , r, f ^ ));
}
else
{
if(h[r] > h[r - ]) up(ret, dfs(l, r - , f));
if(h[r] > h[l]) up(ret, dfs(l, r - , f ^ ));
}
return ret;
}
int main()
{
memset(dp, -, sizeof(dp));
scanf("%d", &n);
for(int i = ; i <= n; ++i) scanf("%d", &h[i]);
printf("%d\n", (dfs(, n, ) + dfs(, n, )) % mod);
return ;
}
最新文章
- busybox rootfs 启动脚本分析(二)
- 一张图片说明MII
- iOS 9 使用HTTP的方法
- Atitit. 异常的使用总结最佳实践java .net php Vo8f
- GetMenu返回0解决方法
- BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排
- .net之DateTime
- 自动化测试(—)Web自动化测试理解
- 芝麻HTTP: Scrapy小技巧-MySQL存储
- 生成透视列之for xml path
- selenium新手常遇到的坑
- 『Python』为什么调用函数会令引用计数+2
- OSS阿里云上传文件 前端js下载url跨域问题
- select SCOPE_IDENTITY()用法
- hdu 2612
- Java实现最基本的集中排序
- UBIFS学习笔记
- adt-bundle-windows不显示ADK Manage和其它图标的解决方法?
- stl之list双向链表容器应用基础
- 第一次打开Pycharm如何操作?
热门文章
- oracle-统计员工x
- PR物料KFF弹出LOV - WHERE条件重写
- ps --sort排序功能
- 天下文章一大抄 之 修改excel 创建时间
- 转:某运维DBA的mysql学习心得
- [Cypress] install, configure, and script Cypress for JavaScript web applications -- part2
- 哈理工2015 暑假训练赛 zoj 2976 Light Bulbs
- python实现QQ机器人(自己主动登录,获取群消息,发送群消息)
- react map 遍历
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq