区间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 ;
}

最新文章

  1. busybox rootfs 启动脚本分析(二)
  2. 一张图片说明MII
  3. iOS 9 使用HTTP的方法
  4. Atitit. 异常的使用总结最佳实践java .net php Vo8f
  5. GetMenu返回0解决方法
  6. BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排
  7. .net之DateTime
  8. 自动化测试(—)Web自动化测试理解
  9. 芝麻HTTP: Scrapy小技巧-MySQL存储
  10. 生成透视列之for xml path
  11. selenium新手常遇到的坑
  12. 『Python』为什么调用函数会令引用计数+2
  13. OSS阿里云上传文件 前端js下载url跨域问题
  14. select SCOPE_IDENTITY()用法
  15. hdu 2612
  16. Java实现最基本的集中排序
  17. UBIFS学习笔记
  18. adt-bundle-windows不显示ADK Manage和其它图标的解决方法?
  19. stl之list双向链表容器应用基础
  20. 第一次打开Pycharm如何操作?

热门文章

  1. oracle-统计员工x
  2. PR物料KFF弹出LOV - WHERE条件重写
  3. ps --sort排序功能
  4. 天下文章一大抄 之 修改excel 创建时间
  5. 转:某运维DBA的mysql学习心得
  6. [Cypress] install, configure, and script Cypress for JavaScript web applications -- part2
  7. 哈理工2015 暑假训练赛 zoj 2976 Light Bulbs
  8. python实现QQ机器人(自己主动登录,获取群消息,发送群消息)
  9. react map 遍历
  10. 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq