• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
dwtfukgv
博客园    首页    新随笔    联系   管理    订阅  订阅

随笔分类 -  数据结构

上一页 1 2 3 4 5 6 7 8 9 10 11 下一页
HDU 5242 Game (贪心)

摘要:题意:给定一棵树,要求从根结点1走k次,每次都是到叶子结点结束,把走过的所有的结点权值加起来,最大是多少。 析:先把每个结点到根结点的路径之和求出来,然后按权值从大到小排序,然后每次把路径中的权值求出来,最后求前k个值的和即可。 代码如下: 阅读全文
posted @ 2017-04-29 19:47 dwtfukgv 阅读(114) 评论(0) 推荐(0)
HDU 1890 Robotic Sort (Splay)

摘要:题意:将一列数字排序 排序规则是 每次找到最小值的位置loc 将1~loc所有数字颠倒 然后删掉第一位 直到排好序 排序要求是稳定的。 析:直接用splay来维护最小值,然后插入删除即可。 代码如下: 阅读全文
posted @ 2017-04-28 21:47 dwtfukgv 阅读(162) 评论(0) 推荐(0)
BZOJ 1500 [NOI2005]维修数列 (splay)

摘要:1500: [NOI2005]维修数列 Description Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目。第2行包含N个数字,描述初始时的数列。以下M行,每行一条命令,格式参见问题描述中的表格。任何时刻数列中最多含有50 阅读全文
posted @ 2017-04-28 16:57 dwtfukgv 阅读(176) 评论(0) 推荐(0)
POJ 3690 Constellations (哈希)

摘要:题意:给定上一n*m的矩阵,然后的t个p*q的小矩阵,问你匹配不上的有多少个。 析:可以直接用哈希,也可以用AC自动机解决。 代码如下: 阅读全文
posted @ 2017-04-27 20:10 dwtfukgv 阅读(236) 评论(0) 推荐(0)
POJ 3691 DNA repair (DP+字符串)

摘要:题意:给出nn(1≤n≤50,1≤n≤50) 个病毒DNA序列,长度均不超过20。现在给出一个长度不超过1000的字符串,求至少要更换多少个字符, 才能使这个字符串不包含这些DNA序列。 析:利用前缀来做好状态转移。 代码如下: 阅读全文
posted @ 2017-04-26 17:22 dwtfukgv 阅读(201) 评论(0) 推荐(0)
SPOJ QTREE Query on a tree (树链剖分+线段树)

摘要:题意:给定一棵树,然后有一些操作,有两种,一种是改变某条边的权值,第二种是询问从u->v的路径中,边权最大的是多少。 析:就一个树链剖分,然后用线段树维护即可。 代码如下: 阅读全文
posted @ 2017-04-23 10:48 dwtfukgv 阅读(156) 评论(0) 推荐(0)
HDU 3966 Aragorn's Story (简单树链剖分)

摘要:题意:给一棵树,并给定各个点权的值,然后有3种操作: I C1 C2 K: 把C1与C2的路径上的所有点权值加上K D C1 C2 K:把C1与C2的路径上的所有点权值减去K Q C:查询节点编号为C的权值 析:就是简单的树链剖分,可以用树状数组来维护,然后就OK了。 代码如下: 阅读全文
posted @ 2017-04-22 21:59 dwtfukgv 阅读(170) 评论(0) 推荐(0)
UVaLive 11525 Permutation (线段树)

摘要:题意:有一个由1到k组成的序列,最小是1 2 … k,最大是 k k-1 … 1,给出n的计算方式,n = s0 * (k - 1)! + s1 * (k - 2)! +… + sk-1 * 0!, 给出s1…sk,输出序列里第n大的序列。 析:我们先看第一数,如果第一个数是2,那么它前面至少有(k 阅读全文
posted @ 2017-04-21 20:18 dwtfukgv 阅读(125) 评论(0) 推荐(0)
UVaLive 5031 Graph and Queries (Treap)

摘要:题意:初始时给出一个图,每个点有一个权值,三种操作:(1)删除某个边;(2)修改每个点的权值;(3)询问与节点x在一个连通分量中所有点的第K大的权值。 析:首先是要先离线,然后再倒着做,第一个操作就成了加边操作,很容易实现,第二操作,就是分成两个操作,先把x结点删掉,然后再插入一个新结点, 最后一个 阅读全文
posted @ 2017-04-21 19:54 dwtfukgv 阅读(128) 评论(0) 推荐(0)
UVa 11468 Substring (AC自动机+概率DP)

摘要:题意:给出一个字母表以及每个字母出现的概率。再给出一些模板串S。从字母表中每次随机拿出一个字母,一共拿L次组成一个产度为L的串, 问这个串不包含S中任何一个串的概率为多少? 析:先构造一个AC自动机,然后随机生成L个字母,就是在AC自动机的某个结点走多少步,dp[i][j] 表示在 i 结点,并且剩 阅读全文
posted @ 2017-04-20 20:11 dwtfukgv 阅读(202) 评论(0) 推荐(0)
UVa 11020 Efficient Solutions (BST)

摘要:题意:给按顺序给定 n 个人群,用x和y来描述,如果有没有任何一个x' < x y' <= y 或 x '<= x y' <= y,那么这个群体就是优势群体, 让你求出每放入一个人群,已经知道的群体有几个优势群体。 析:首先我们知道的是,如果某个群体失去了优势,那么该群体就不可能再获得优势,然后我们 阅读全文
posted @ 2017-04-20 11:20 dwtfukgv 阅读(224) 评论(0) 推荐(0)
POJ 3693 Maximum repetition substring (后缀数组+RMQ)

摘要:题意:给定一个字符串,求其中一个由循环子串构成且循环次数最多的一个子串,有多个就输出最小字典序的。 析:枚举循环串的长度ll,然后如果它出现了两次,那么它一定会覆盖s[0],s[ll],s[ll*2].....这些点中相邻的两个,然后向前和向后匹配, 看看最大的匹配多大,然后把所有的答案记录下来,最 阅读全文
posted @ 2017-04-19 23:35 dwtfukgv 阅读(150) 评论(0) 推荐(0)
SPOJ - REPEATS Repeats (后缀数组+RMQ)

摘要:题意:求一个串中出现重复子串次数最多的数目。 析:枚举每个长度的子串,至少要重复两次,必然会经过s[l*i]中相邻的两个,然后再分别向前和向后匹配即可。 代码如下: 阅读全文
posted @ 2017-04-19 23:04 dwtfukgv 阅读(275) 评论(0) 推荐(0)
ZOJ 3946 Highway Project (最短路)

摘要:题意:单源最短路,给你一些路,给你这些路的长度,给你修这些路的话费,求最短路和最小花费。 析:本质就是一个最短路,不过要维护两个值罢了,在维护花费时要维护的是该路要花多少,而不是总的路线花费。 代码如下: 阅读全文
posted @ 2017-04-19 21:48 dwtfukgv 阅读(157) 评论(0) 推荐(0)
HDU 5862 Counting Intersections (离散化+扫描线+树状数组)

摘要:题意:给你若干个平行于坐标轴的,长度大于0的线段,且任意两个线段没有公共点,不会重合覆盖。问有多少个交点。 析:题意很明确,可是并不好做,可以先把平行与x轴和y轴的分开,然后把平行y轴的按y坐标从小到大进行排序,然后我们可以枚举每一个平行x轴的线段, 我们可以把平行于x轴的线段当做扫描线,只不过有了 阅读全文
posted @ 2017-04-17 18:17 dwtfukgv 阅读(148) 评论(0) 推荐(0)
URAL 1297 Palindrome (后缀数组+RMQ)

摘要:题意:给定一个字符串,求一个最长的回回文子串,多解输出第一个。 析:把字符串翻转然后放到后面去,中间用另一个字符隔开,然后枚举每一个回文串的的位置,对第 i 个位置,那么对应着第二个串的最长公共前缀, 求最长公共子串,可以用RMQ解决。 代码如下: 阅读全文
posted @ 2017-04-13 19:37 dwtfukgv 阅读(136) 评论(0) 推荐(0)
POJ 3764 The xor-longest Path (字典树)

摘要:题意:给出一颗n个节点的边权树,求一条路径(u,v),使得路径上的边的权值异或值最大。 析:先从0开始遍历树,记录所有的点到0的路径的边权异或值,然后任意两点的路径的异或值就是dp[u]^dp[v], 然后再构造一棵二进制树,每次查询,注意长度要相同,最后求最大值即可。 代码如下: 阅读全文
posted @ 2017-04-08 17:50 dwtfukgv 阅读(128) 评论(0) 推荐(0)
HDU 5542 The Battle of Chibi (离散化+树状数组优化DP)

摘要:题意:求n个数中长度为m的上升子序列的个数。 析:很容易想到一个n的三次方的DP,dp[i][j]表示第 i 个数长度为 j 的LIS 有多少个,但是会TLE,因此必须优化,dp[i][j] = sum{dp[k][j-1] | a[i] > a[k]} 我们可以用树状数组优化,当然用线段树也OK, 阅读全文
posted @ 2017-04-06 11:28 dwtfukgv 阅读(268) 评论(0) 推荐(0)
ZOJ 3512 Financial Fraud (左偏树)

摘要:题意:给定一个序列,求另一个不递减序列,使得Abs(bi - ai) 和最小。 析:首先是在每个相同的区间中,中位数是最优的,然后由于要合并,和维护中位数,所以我们选用左偏树来维护,当然也可以用划分树来做。 代码如下: 阅读全文
posted @ 2017-03-31 23:22 dwtfukgv 阅读(418) 评论(0) 推荐(0)
HDU 1512 Monkey King (左偏树+并查集)

摘要:题意:在一个森林里住着N(N<=10000)只猴子。在一开始,他们是互不认识的。但是随着时间的推移,猴子们少不了争斗,但那只会发生在互不认识 (认识具有传递性)的两只猴子之间。争斗时,两只猴子都会请出他认识的猴子里最强壮的一只(有可能是他自己)进行争斗。争斗后,这两只猴子就互相认识。 每个猴子有一个 阅读全文
posted @ 2017-03-31 18:52 dwtfukgv 阅读(219) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 10 11 下一页
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3