题目大意:
一条街上有很多个餐厅,现在要在n个餐厅中选取m个作为仓库。
使得其他的餐厅到这些仓库的距离的和最小。
思路分析:
状态方程: dp [i] [j] 表示 前 j 个餐厅已经建了 i 个仓库。
转移方程: dp[i] [j] = min ( dp[i-1] [k] + cost[k+1][j] ) ...cost[ p ][ q ] 表示在p q 之间建立一个仓库...
分类:
其他好文 时间:
2014-08-11 15:05:12
阅读次数:
216
题目大意:
给出完成n门功课的所需要的时间和n门功课上交时间的deadline。
如果比deadline 晚交一天就要扣一分。
安排出完成顺序使得扣分最少。
思路分析:
dp[s] 表示完成了s 状态下的功课所扣分的最优解。
对于每一个状态,我们转移的时候将每一门没有完成的功课加入其中,这样就保证了逐一完成。
需要注意的是字典序最小的问题,开始的时候对输入的字...
分类:
其他好文 时间:
2014-08-10 18:48:20
阅读次数:
210
题目大意:
给出的矩阵每一列之间可以任意交换。
求出交换后得到的最大的子矩阵和。
思路分析:
height[i][j] 表示 位置 i j 往下有多少深度。
然后我们枚举每一行。
可以将所有的height 排序。
得到最大的矩阵和就一遍递推过去。
n*n*lgn。。。
#include
#include
#include
#include
#define ...
分类:
移动开发 时间:
2014-08-10 10:29:10
阅读次数:
230
思路分析:
dp[i][j] 表示选取到第 i 个 组成了 j 对的最优答案。
当然排序之后 选取相邻两个是更优的。
if(i==j*2) dp[i][j] = dp[i-2][j-1] + w[i]-w[i-2]^2..
else if( i> j*2 ) dp[i][j] = min (dp[i-2][j-1] + ...^2 , dp[i-1][j]).......
分类:
其他好文 时间:
2014-08-10 10:26:00
阅读次数:
253
题目大意:
两个人往一个空的字符串里填单词,每一次只能填一个,而且填完之后要是给出的N个字符串的前缀。
思路分析:
先用给出的所有单词建字典树。
然后从根节点开始dfs。
win [x] 表示踩在x节点上是否有必胜策略
lose [x] 表示踩在x节点上是否有必败策略。
然后是博弈的过程。
如果先手有必胜和必败的策略,那么他可以一直输到k-1
如果只有必胜策略。那么只有当...
分类:
其他好文 时间:
2014-08-09 21:32:19
阅读次数:
255
【题意描述】就是给定n个星星的x,y坐标,y坐标按照从小到大的顺序进行排列,x坐标随机排列。下面求对于每个星星而言,其它星星的x,y的坐标都小于等于该星星的数目,然后输出所有的情况。【思路分析】我们这道题可以采用树状数组求解,将x+1作为树状数组的底标。【AC代码】#include #includ....
分类:
其他好文 时间:
2014-08-08 12:29:55
阅读次数:
182
题目大意:
给出一个A串和很多个B串,求出A中有多少个子串,是所有的B中没有出现的。
思路分析:
后缀数组的作用很容易的求出来整个串中不同的子串个数。
现在要求的是A中不同的,且在B中没有出现过的。
先把AB 串全部连接,跑一遍suffix array。然后求出有多少个不同的子串。
然后再单独用B 串跑 suffix array。再求出单独在B 中有多少个不同的 子串。...
分类:
其他好文 时间:
2014-08-07 23:16:25
阅读次数:
257
题目大意:
是男人就下一般层。。。没什么可以多说的吧。
注意只能垂直下落。
思路分析:
后面求最大值的过程很容易想到是一个dp的过程 。
因为每一个plane 都只能从左边 从右边下两种状态。
然后我们所需要处理的问题就是 ,你如何能快速知道往左边下到哪里,往右边下到哪里。
这就是线段树的预处理。
讲线段按照高度排序。
然后按照高度从小到大加入到树中。
然后去寻找左端点...
分类:
其他好文 时间:
2014-08-06 23:06:22
阅读次数:
314
题目大意:
一个序列中有左括号和右括号,还有问号,问号可以任意转换成左右括号。
问这个序列有多少种情况的转变使得这个序列变成合法的括号匹配序列。
思路分析:
首先我们分析一下,如何使得一个序列是合法的括号匹配序列。
我们很容易想到的是用栈模拟匹配过程。
当遇到左括号就进栈,当遇到右括号就让栈顶的左括号出栈。
那么在模拟的过程中,造成这个序列的不合法的原因只有当右括号来的时候,...
分类:
其他好文 时间:
2014-08-06 14:47:11
阅读次数:
199
【题意描述】给定一串数据,划分成m段,并把每段内的数据相加,使得m段数据中的最大值最小。【思路分析】这里很多人可能考虑用DP,但是会超时。那么根据DP与分治的联系,我们可以联想到运用二分法,对所求最大值进行二分,直到所划分区间的数目等于m段即停止。这里在确定二分的区间有点技巧,首先low肯定是整个数...
分类:
其他好文 时间:
2014-08-05 13:29:59
阅读次数:
217