KIJamesQi的博客

大神养成中。

LightOJ 1061 N Queen Again(搜索+状压DP)

题目 给出一张8*8的图,上面有8个皇后,现在每次只能移动一个皇后往同一个方向走任意步,总共有8个方向;问最少需要多少步使得所有皇后相互不会攻击对方? 思路 单纯的暴搜是不行的,时空都会炸。 假如我们知道最终每个皇后应该在的位置,然后再来计算最少步数就会简单不少,这里可以用状压来做;...

2017-02-17 19:02:29

阅读数 371

评论数 0

LightOJ 1057 Collecting Gold(状压DP)

题目 n∗m,(n,m)<(20,20)n*m,(n,m) < (20,20)的格子图上有一个人,和不超过15个的金矿;求这个人从当前位置出发获取所有金矿然后再回到这个位置需要走的最少路程?每次只能往邻近的四个方向走; 思路 因为没有障碍物,所以算两个格子间的距离很方便; ...

2017-02-14 15:25:21

阅读数 293

评论数 0

lightoj1038 - Race to 1 Again(期望DP)

题意 给出一个1≤N≤1051 \leq N \leq 10^5,每次选其一个约数相除,知道得到结果为1为止,求期望次数; 思路 期望dp,求x平均除多少次得到1;假设x有c个因子(含1和本身),E[x]表示结果; 那么E[x] = (E[1] + E[a1] + E[a2] + …...

2017-02-05 23:41:25

阅读数 147

评论数 0

lightoj1037 状压DP(入门级)

题意 简单 思路 dp[sta]表示状态为sta时需要打的最少次数,dp[0] = 0; /***************************************** Author :Crazy_AC(JamesQi) Time :2016 File Nam...

2017-02-05 23:29:20

阅读数 177

评论数 0

Gym 100543A Parades

题目链接 一颗有n个点的树,然后上面有m条关系链[u, v](就是u到v的路径),选出x条链,相互没有边重合,但是点是可以重合的。求x的最大值。 思路:树形dp+状压dp。 对于以u为根的子树,dp[u]表示这棵子树能有的最大x的值(也就是被选中的x条链满足题目条件且每条链的所有边...

2016-09-24 22:13:50

阅读数 303

评论数 0

CodeForces 547B (单调栈)

题意 一个有n个元素的序列,没连续l个元素的最小值为这个串的strength值,求所有连续l个元素的strength是的最大值。 分析 a[i]如果是其所在串的strength值,那么必然它是最小值,往前和往后找小于它的第一个位置l、r,显然[l + 1, r + 1]区间的strengt...

2016-08-17 17:18:36

阅读数 310

评论数 0

Gym 100851F Froggy Ford(dijkstra)

题意有条宽为w的河流,两岸分别在x = 0, x = w处,河中间有n个石板。在河的一岸有一只青蛙想通过石板跳到对岸去。现在可以在河 中间某个位置多加一块石板,使得在单步跳跃中的最大值最小。 思路Dijkstra变形,用两维来表示是否路径中使用过额外的石板。dis[0][u]表示没使用额外石板的最...

2016-08-15 21:35:54

阅读数 525

评论数 0

hdu5409 CRB and Graph(bcc)

题目中critical的定义:对于边e<u,v>e<u, v>成为critical边的充要条件是删除这条边之后u、v不连通了,由于这图是无向图,所以显然是桥边。然后针对桥边构造一条边,使得删除边e<u,v>e<u,v>之后,u、v还是连通的。要求u ...

2016-07-18 22:38:00

阅读数 331

评论数 0

hdu3191 How Many Paths Are There(次短路计数dp)

次短路好算,这题多了个计数; dp[u][1],dis[u][1]分别表示到u最短的路径条数和最短路的长度; dp[u][2],dis[u][2]分别表示到u次短的路径条数和次短路的长度; if (dis[u][kind] + cost[u][v] < dis[v][1]) 表示可以...

2016-07-08 12:14:05

阅读数 425

评论数 0

uva10003 Cutting Sticks

题目链接题目大意一根长为len的木棍,上面有n个点需要切割,切割完之后有n+1根木棍。没切一根木棍时的费用等于木棍的长度,求最小的费用和。 思路记忆化搜索。solve(l, r) = min(solve(l,k) + solve(k,r)) + a[r] - a[l]。l < k < ...

2016-05-24 12:01:38

阅读数 197

评论数 0

uva10651 Pebble Solitaire(记忆化搜索)

题意:给定一个长12的由o-组成的字符串,有两种操作。 1."oo-"可以变成"--o". 2."-oo"可以变成"o--". 问通过有限次上述操作后,此符串中最少有几个'o'剩下。 思路:采取记忆化搜索,因为每个位置...

2016-05-14 21:27:20

阅读数 241

评论数 0

uva 1169 Robotruck(简单区间dp)

一个二位平面上有n个垃圾,现在用一个机器人去捡起来,且是按照输入顺序捡,放回位于原点处的垃圾桶中,两点之间的距离算曼哈顿距离,机器人的最大承重量为C,求捡完所有垃圾机器人走动的最小距离。 sumdis[i], sum weight[i]都表示前缀和。 dp[i]表示第i个捡完时的最小距离。 ...

2016-03-20 20:37:40

阅读数 352

评论数 0

codeforces587B Duff in Beach

题意就是两个数组A,B其中B[i] = A[i%n],B有l个元素,A有n个元素。 从B中选取x个元素,相邻元素在B中的下标满足Ij/n + 1 == I[j+1]/n。 可以用dp[i][j]表示第i个数选的是j,那么dp[i][j] = ∑dp[i-1][t] && t ...

2016-02-23 15:39:38

阅读数 291

评论数 0

hdu4081 Qin Shi Huang's National Road System

题目大意就是说,n个城市,修成一棵树,其中有一条边是可以用魔法的,这条边是不需要计费的,每个城市有住人,问修完所有的边的总路程是B,那条魔法修建边链接的两个城市的人口是A,求A/B的最大值。 分析:一开始就能想到的是B小、A大。因为是修成树,所以B开始就直接是最小生成树的值了,同时记录两点路径上...

2016-01-29 14:06:30

阅读数 185

评论数 0

poj1679 The Unique MST

先推荐下次下生成树的相关概念问题的描述。 http://blog.csdn.net/jarily/article/details/8883858 这个懂了次小生成树的解法就是判断次小是否等于最小。。。。。。。就是模版! /*********************************...

2016-01-27 23:23:28

阅读数 197

评论数 0

codeforces616D Longest k-Good Segment

滑动窗口,维护[l,r]。mp记录前面出现过的数的种数和每个数出现的次数。 对于a[r]而言,能加入到当前的序列中的条件就是出现过或者是前面的种数小于k。 否则就是l右移同时该数的数目减一,为0的话就种类减一。 /***************************************...

2016-01-27 11:10:32

阅读数 279

评论数 0

lightoj 1018 - Brush (IV)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1018 题意分析:二分平面上有N个点,现在有一把可沿着任何方向走的刷子可以刷去这些点,问最少需要刷出多少条直线可以把点刷完? 解题思路:这个是个比较典型的状压dp问题,首先N不大,可...

2016-01-17 21:53:27

阅读数 566

评论数 0

lightoj 1017 - Brush (III)

而为坐标平面上给出n个点,问一把款w的刷子,横着刷k次最多能够刷掉多少个点。 因为是横着刷,所以只考虑纵坐标。 dp[i][k]表示前i个点刷k次最多能够刷的点数。。。然后就是枚举,不过要先处理完所有dp[i][1]的情况。。。 开始想的是dp[i][j][k]表示区间[i,j]刷k次能够刷...

2016-01-16 17:13:37

阅读数 430

评论数 0

lightoj 1013 - Love Calculator

先求个最长公共子序列的长度,dp1[i][j]表示装下X[1...i],Y[1...j]这两个串需要的最小长度。 X[i] == Y[j],dp[i][j] = dp[i-1][j-1] + 1; X[i] != Y[j],   dp[i][j] = min(dp[i-1][j],dp[i][...

2016-01-16 14:13:54

阅读数 205

评论数 0

Dynamic Programming--Longest Common Subsequence

问题描述:给定两个序列:X[1...m],Y[1...n],求在两个序列中同时出现的最长序列的长度。(不必是连续的) 穷举法:x中的子序列有2^m个。 检查是否存在于Y中--O(n)。 时间显然是不能接受的。。。 动态规划: 设C[i,j] = |LCS(X[1...i],Y[1...j...

2016-01-16 13:57:10

阅读数 211

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭