博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HNOI2010]合唱队 区间DP
阅读量:5060 次
发布时间:2019-06-12

本文共 1609 字,大约阅读时间需要 5 分钟。

题解:

  偶然翻到这道题,,,就写了。

  观察到一个数被插在哪里只受前一个数的影响,如果明确了前一个数是哪个,那么我们就可以确定大小关系,就可以知道当前这个数插在哪里,而上一个插入的数就是上一个数,所以根据这个来设DP状态。  

  f[i][j]表示满足理想数列的i ~ j,且i是最后一个插入的方案数,g[i][j]表示满足理想数列的i ~ j,且j是最后一个插入的方案数。

  那么转移就比较明显了。

  根据最后一个插入的是i或j可以知道是从哪个区间转移而来,然后只需要枚举一下是否可以从f数组或者g数组转移即可。判断条件就是上一个插入的数与当前数的大小关系是否可以使得当前数插入到正确的位置(前面or后面)

1 #include
2 using namespace std; 3 #define R register int 4 #define AC 1100 5 #define mod 19650827 6 7 int n, ans; 8 int s[AC], f[AC][AC], g[AC][AC]; 9 10 inline int read()11 {12 int x = 0;char c = getchar();13 while(c > '9' || c < '0') c = getchar();14 while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();15 return x;16 }17 18 inline void up(int &a, int b)19 {20 a += b;21 if(a > mod) a -= mod;22 }23 24 void pre()25 {26 n = read();27 for(R i = 1; i <= n; i ++) s[i] = read();28 }29 30 void work()31 {32 for(R i = 1; i <= n; i ++)//枚举长度33 {34 int b = n - i + 1;35 for(R j = 1; j <= b; j ++)36 {37 int l = j + i - 1;//获取右端点38 if(j == l){f[j][l] = 1; continue;}39 if(s[j] < s[j + 1]) up(f[j][l], f[j + 1][l]);40 if(s[j] < s[l]) up(f[j][l], g[j + 1][l]);41 if(s[l] > s[j]) up(g[j][l], f[j][l - 1]);42 if(s[l] > s[l - 1]) up(g[j][l], g[j][l - 1]);43 }44 }45 up(ans, f[1][n]), up(ans, g[1][n]);46 printf("%d\n", ans);47 }48 49 int main()50 {51 // freopen("in.in", "r", stdin);52 pre();53 work();54 // fclose(stdin);55 return 0;56 }
View Code

 

转载于:https://www.cnblogs.com/ww3113306/p/9827717.html

你可能感兴趣的文章
C#中的IEnumerable<T>知识点
查看>>
android访问链接时候报java.net.MalformedURLException: Protocol not found
查看>>
dwz ie10一直提示数据加载中
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Windows Phone Marketplace 发布软件全攻略
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
语义web基础知识学习
查看>>
hexo个人博客添加宠物/鼠标点击效果/博客管理
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
关于WPF的2000件事 02--WPF界面是如何渲染的?
查看>>
单元测试、、、
查看>>
SVN使用教程总结
查看>>
JS 浏览器对象
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
虚拟中没有eth0
查看>>
Unity 3D游戏开发学习路线(方法篇)
查看>>
BZOJ2049[Sdoi2008]Cave 洞穴勘测(LCT模板)
查看>>
vuex插件
查看>>
2011年12月09日
查看>>