UVA10559 Blocks】的更多相关文章

有n个带有颜色的方块,没消除一段长度为x的连续的相同颜色的方块可以得到x^2的分数,让你用一种最优的顺序消除所有方块使得得分最多. 输入格式 第一行包含测试的次数t(1≤t≤15) 每个案例包含两行.第一行包含整数n(1≤n≤200),即框数.第二行包含n个数,代表每个盒子的颜色.数字的大小1~n内. Solution n比较小,所以我们要用n^3的dp. 我们设dp[i][j][k]表示从i缩到j,j要和j后面的k个格子缩到一起能获得的最大分数. 转移的话枚举断点,如果有一个点和j相等,就把k…
玄学东西,毒瘤状态,死也想不出 设f[l][r][i]表示[l,r]区间,右边再加上i个颜色和r颜色相同的块,消掉这些的最大收益 两种转移方式: 把r和后面i个一起销毁,\(f[l][r-1][0]+(i+1)^2\): 选择一个位置p使得p,r位置上的颜色相同,消掉p,r中间这段,再把r和后面i个接上去转移.\(f[l][p][i+1]+f[p+1][r-1]\) 我™怎么知道为什么 #include<bits/stdc++.h> #define il inline #define vd v…
\(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\),消掉\(…
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noip前的杂题训练,我也很无奈啊 做完了的扔最后,欢迎好题推荐 这么多题肯定是完不成了,能多做一道是一道吧 DP yyb真是强得不要不要的辣:http://www.cnblogs.com/cjyyb/category/1036536.html [ ] [SDOI2010]地精部落 https://www…
Online Judge:P2135 方块消除(这题不用预处理) Label:区间Dp 题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域).为简化题目,将连起来的同一颜色方块的数目用一个数表示. 例如,9 122233331表示为 4 1 2 3 1 1 3 4 1 游戏时,你可以任选一个区域消去.设这个区域包含的方块数为x,则将得到\(x^2\)个分值.方块消去之后,其余的…
Description 题意:有一排数量为N的方块,每次可以把连续的相同颜色的区间消除,得到分数为区间长度的平方,然后左右两边连在一起,问最大分数为多少. \(1\leq N\leq200\) Solution 区间DP,对于一个连续的同色区间,可以直接消掉,或者从左边或者右边搞到和它同色的区间和在一起再一起消掉. 读入序列时预处理一下,将各个连续同色区间处理为一个点,记录它的颜色和长度,便于处理 然后就是区间DP啦,虽然要表示左边和右边,但是左边状态也可以表示为左边序列的右边,就只要开3维就行…
题目传送门:http://poj.org/problem?id=1390 题意:给出一个长为$N$的串,可以每次消除颜色相同的一段并获得其长度平方的分数,求最大分数.数据组数$\leq 15$,$N \leq 200$ DP好题,状态转移方程可能这辈子都不会想出来$qwq$看完题就知道是区间DP,设状态为$f_{i,j}$,然后考虑转移的时候发现:中间可能有一部分零散的和两端相同颜色的块,转移十分麻烦于是考虑神仙状态:$f_{i,j,k}$,其中$i,j$同上,$k$表示 在块$j$之后有且仅有…
一道区间dp好题,在GZY的ppt里,同时在洛谷题解里看见了Itst orz. 题目大意 有n个带有颜色的方块,没消除一段长度为 \(x\) 的连续的相同颜色的方块可以得到 \(x^2\) 的分数,用一种最优的顺序消除所有方块使得得分最多. Solution 一开始用的常规操作,设 \(f_{i,j}\) 表示区间 \([i,j]\) 的最大得分,然后发现转移的时候很麻烦,此时瞄了一下题解,发现神奇的设状态方法: \(f_{i,j,k}\) 表示区间 \([i,j]\) 且右边有 \(k\) 个…
设g[i][j][k]为消去区间[i,j]中的方块,只留下k个与a[i]颜色相同的方块的最大价值,f[i][j]为将[i,j]中所有方块消去的价值,转移自己yy一下即可. 为什么这样是对的?因为对于一段区间[i,j]一定存在一种最优方案使得i位置上的方块被最后一次消去,确定了最后一次消去的那k个方块的位置就可以把问题转换成若干个子区间上的子问题来解决. 复杂度是\(O(n^4)\)的,但是能过. 具体见代码: #include<bits/stdc++.h> using namespace st…
传送门 Luogu 解题思路 考虑区间 \(\text{DP}\). 设 \(f[i][j][k]\) 表示 \([i,j]\) 这段区间接上后面 \(k\) 个与 \(j\) 颜色相同的块得到的答案. 转移就是: \(f[i][j][k] = \max\left\{f[i][j][0]+(k+1)^2\right\}\) \(f[i][j][k] = \max\left\{f[i][p][k+1]+f[p+1][j-1][0]\right\}(p\in[i, j]\text{且}c_p=c_j…