思路: 区间dp。添加和删除本质相同。 实现: ...
分类:
其他好文 时间:
2017-03-18 22:57:40
阅读次数:
198
描述 zgx给了你一个n边的多边形,这个多边形每个顶点赋予一个值,每条边都被标上运算符号+或*,对于这个多边形有一个游戏,游戏的步骤如下:(1)第一步,删掉一条边;(2)接下来n-1步,每步对剩下的边中的一条进行操作,用一个新的顶点取代这条边。将这条被取代的边两端的顶点的整数值通过边上的运算得到的结 ...
分类:
其他好文 时间:
2017-03-15 18:40:48
阅读次数:
210
Problem Description The TV shows such as You Are the One has been very popular. In order to meet the need of boys who are still single, TJUT hold the ...
分类:
其他好文 时间:
2017-03-14 13:11:17
阅读次数:
258
背景 小K攒足了路费来到了教主所在的宫殿门前,但是当小K要进去的时候,却发现了要与教主守护者进行一个特殊的游戏,只有取到了最大值才能进去Orz教主…… 描述 守护者拿出被划分为n个格子的一个圆环,每个格子上都有一个正整数,并且定义两个格子的距离为两个格子之间的格子数的最小值。环的圆心处固定了一个指针 ...
分类:
其他好文 时间:
2017-03-11 18:33:48
阅读次数:
257
$dp$。 设$dp[i][j]$为到$i$位置,切成了$j$段的最大收益,然后枚举一下$f$,$dp[i][j]=max(dp[f][j-1]+v[f+1][i])$。一段区间的价值可以用区间$dp$求得。 ...
分类:
其他好文 时间:
2017-03-08 13:45:29
阅读次数:
154
很明显的区间DP,设dp[l][r]表示[l,r]区间的字符串折叠后的最小长度。 可以通过两种方向转移,dp[l][r]=min(dp[l][i]+dp[i+1][r]). 另一种是折叠,dp[l][r]=min(dp[l][l+k-1]+cal((r-l+1)/k)+2).其中k是能整除(r-l+ ...
分类:
其他好文 时间:
2017-03-07 19:22:02
阅读次数:
167
很显然的区间DP,定义dp[i][j][k], 如果dp[i][j][k]=1表示字符串[i,j]可以组成k字符。 # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <v ...
分类:
其他好文 时间:
2017-03-04 17:23:08
阅读次数:
196
加分二叉树 (binary) 【问题描述】 设一个 n 个节点的二叉树 tree 的中序遍历为( l,2,3,…,n ),其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数(均为正整数),记第 j 个节点的分数为 di , tree 及它的每个子树都有一个加分,任一棵子树 subtree ...
分类:
其他好文 时间:
2017-03-02 19:22:30
阅读次数:
203
http://poj.org/problem?id=2955 区间dp的写法还是dfs的好写。 设dp[i][j]表示[i, j]这个区间的合法情况的最大值。 然后想要求[i, j]合法情况的最大值,有两种。 1、如果i和j的搭配的括号,那么dp[i][j] = dp[i + 1][j - 1] + ...
分类:
其他好文 时间:
2017-02-28 00:47:00
阅读次数:
166
http://acm.hdu.edu.cn/showproblem.php?pid=4283 题意:有n个数字,不操作的情况下从左到右按顺序输出,但是可以先让前面的数字进栈,让后面的数字输出,然后栈里的数字再输出。执行完各种操作后,第i个数字输出的代价是w[i] * (i-1)。问如何弄才能使得代价 ...
分类:
其他好文 时间:
2017-02-27 19:18:13
阅读次数:
243