$UVA10559\ Blocks\ $区间$dp$
\(Des\)
• 有一排数量为N的方块,每次可以把连续的相同颜色的区间消除,得到分数为 区间长度的平方,然后左右两边连在一起,问最大分数为多少。
• n<=1
\(Sol\)
正解状态设得奇奇怪怪巧巧妙妙.
\(f[i][j][k]\)表示区间\([i,j]\)且\(j\)右边还有\(k\)个和\(j\)同色的方块,消除所有这些的最大分数.转移分为两种:
1.将右端点和多出的\(k\)个一起消掉,分数为\(f[i][j-1]+(k+1)^2\).
2.选一个与右端点同色的点\(p\),消掉\([p+1,j-1]\)使得\(p,j\)相邻,分数为\(f[i][p][k+1]+f[p+1][j-1][0]\).
那怎么样想到这个巧巧妙妙的状态呢:
首先这个题是有合并顺序的,可以考虑区间\(dp\),考虑对于区间\([l,r]\)能不能通过枚举中间点\(k\),用\([l,k],[k+1][r]\)转移.稍加思考就可以知道,这个亚子是不行的.这个题是"消消乐",可能中间的某个点会和边界一起消掉更优.于是就发现,这题并不是规规矩矩的区间$dp $,看能不能通过多记一维状态来解决这个问题...于是就聪聪明明地设出了这个状态强行.
这题好好写,瞎写一下就过了.
\(Code\)
Code
```cpp
#include
#include
#include
#define il inline
#define Ri register int
#define go(i,a,b) for(Ri i=a;i=b;--i)
#define e(i,u) for(Ri i=b[u];i;i=a[i].nt)
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define db double
#define inf 2147483647
using namespace std;
il int read()
{
Ri x=0,y=1;char c=getchar();
while(c'9'){if(c=='-')y=-1;c=getchar();}
while(c>='0'&&c
随机推荐
- YUI css reset
*{ margin:0; padding:0; } 以前写CSS都会在会在样式的开头部分添加上述的内容,今天才发现这种写法很不友好,会导致很多样式显示问题,所以并不适合所有的浏览器. 下面的是雅虎的c ...
- laravel 中使用tinker 验证驱动加载是否成功
在验证laravel 中 InvalidArgumentException Driver [WeiBo] not supported. public function weibo() { retu ...
- python----操作Memcache、redis、RabbitMQ、SQLAlchemy
操作本质都是通过socket发送命令 Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次 ...
- Python基础:25文件
一:文件对象 文件对象不仅可以用来访问普通的磁盘文件, 而且也可以访问任何其它类型抽象层面上的"文件". 一旦设置了合适的"钩子", 你就可以访问具有文件类型接 ...
- php实现第三方登录
1. oAuth2.0原理 网站为了方便用户快速的登录系统,都会提供使用知名的第三方平台账号进行快速登录的功能,第三方登录都是基于oAuth2.0标准来实现的.下面详细分析[基于账号密码授权]和[基于 ...
- 在SQL中number(16,5)中的16和5 及number( 5,-2)中的5和-2是什么意思?
在SQL中number(16,5)中的16和5 及number( 5,-2)中的5和-2是什么意思? 2018-06-04 19:23:24 xiaonan_IT 阅读数 3672 版权声明:本文 ...
- hdu 3339 In Action(迪杰斯特拉+01背包)
In Action Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- H3C 帧中继配置示例
- H3C 配置帧中继交换
- java表达式和三目运算符
是由数字.运算符.数字分组符号(括号)等以能求得数值的有意义排列的序列; a + b 3.14 + a (x + y) * z + 100 boolean b= i < 10 && ...