自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 收藏
  • 关注

原创 Codeforces 558E A Simple Task (简单题)

题目类型 简单题题目意思对于一个最多 1e5 长的字符串(只包含小写字母) 有 50000 个操作每个操作参数为 l, r, k (当k == 1时表示将子串 (l, r) 中的子符非降序排序 当 k == 0时非升序)问 50000 个操作后得到的字符串是什么解题方法分析一下可以发现突破口在于字符串只包含小写字母,即

2015-07-21 10:45:12 952

原创 Codeforces 558D Guess Your Way Out! II (简单题)

题目类型简单题题目意思有一棵高度最多 50 的完美二叉树, 其中只有一个叶子结点是出口给出最多 1e5 个说明,每个操作包含 4 个参数 i, L, R, ans当 ans == 0 时 说明出口在第 i 层的祖先不包含在区间 [L, R] 中 (根结点为第1层)当 ans == 1 时 说明出口在第 i 层的祖先必包含在区间 [L,R] 中 (任何

2015-07-20 11:59:33 702 2

原创 POJ 2774 Long Long Message (后缀数组)

题目类型 后缀数组题目意思问两个最长 1e5 的字符串的最长公共子串解题方法在第一个字符串后添加一个区别于输入的所有字符的字符(例如 '#') 后再把第二个字符串添加在后面 构成一个新的字符求这个新字符串的 height 数组二分最长公共子串的长度然后判断是否可行 假设当前判断的长度为 mid 判断方法是 从小到大扫一次

2015-04-12 19:36:40 641

原创 POJ 3691 DNA repair (AC自动机+dp)

题目类型 AC自动机+dp题目意思给出最多 50 个最长 20 的不好的字符串 问给出一个最长 1000 的字符串至少要修改多少个字符才可以使这个字符串不包含不好的字符串字符串只含有(A,G,C,T)这四种字符解题方法用输入的 不好的字符串 构造ac自动机 (结点数不会超过 1000) 然后进行普通的匹配过程, 简单地理解为在ac自动机上进行

2015-04-07 20:21:44 622

原创 POJ 3461 Oulipo (简单kmp)

题目类型  kmp题目意思问一个最长 10000 的串在一个最长 100 0000 的串中出现了多少次 (可重叠)解题方法kmp的基本用法 理解清楚失配函数的定义即可参考代码 - 有疑问的地方在下方留言 看到会尽快回复的#include #include #include using namespace std

2015-03-18 23:50:45 510

原创 POJ 2001 Shortest Prefixes (字典树)

题目类型  字典树题目意思给出最多 1000 个最长 20 的字符串 问每个字符串可以准确识别的最短识别长度对应的字符串是什么准确识别长度的意思是如果前这个长度的字符都匹配的话那么就肯定是这个字符串了(即没有其他字符串符合这个要求 除非那个字符串就只由这么多字符组成)解题方法字典树 记录每个结点被遍历的次数 查询的时候当某个结点遍历次

2015-03-18 21:58:06 534

原创 POJ 3666 Making the Grade (dp, 数据结构[左偏树, 划分树, 函数式线段树等])

题目类型  dp, 数据结构[左偏树, 划分树, 函数式线段树等]题目意思给出一个最多包含 2000 个在 [0, 1e9] 范围内的数的数列 问把这个数列修改成一个非递增或非递减数列的最小代价代价=原数列的每一个元素和修改后的数列的相应位置的元素的差的绝对值的和解题方法1. dp (离散化)dp[i][j] : 前 i 个元素组成一

2015-03-18 20:29:43 1073

原创 POJ 1442 Black Box (数据结构)

题目类型  数据结构题目意思给出最多30000个数 并最多问30000次当考虑前 x 个数时第 y 小的数是多少 其中 y 从 1-> 30000, 对应的 x 输入给出解题方法可以用线段树, treap, splay 等数据结构做参考代码 - 有疑问的地方在下方留言 看到会尽快回复的treap#include

2015-02-13 20:48:35 554

原创 POJ 3481 Double Queue (数据结构)

题目类型  数据结构题目意思给出一系列指令 其中指令 1  插入一个优先级为 B 值为 A 的人指令2  去掉优先级最高的人并输出这个人的值指令3  去掉优先级最低的人并输出这个人的值解题方法很多方法都可以做 例如 优先队列 线段树 treap 伸展树等参考代码 - 有疑问的地方在下方留言 看到会尽快回复的

2015-02-12 20:16:35 575

原创 POJ 3667 Hotel (线段树)

题目类型  线段树题目意思给出最多50000个房间 最多有50000个操作操作1 安排x个连续的空房间 (尽量安排靠前的,如果不能安排输出0) 并输出安排的第1个房间的编号操作2 把房间 [x, x+d-1] 置空解题方法用 nmax[rt] 表示rt这棵线段树中最长的连续房间数量是多少     lmax[rt]表示rt这棵线段树

2014-12-01 22:28:03 483

原创 POJ 3468 A Simple Problem with Integers (线段树)

题目类型  线段树 - 区间修改题目意思给出最多100000个数 现在有最多100000个操作操作1  把 区间 [L,R]中的数加上一个数c操作2  询问区间 [L,R]中的数的和是多少解题方法区间修改的线段树注意懒惰标记的使用就行了参考代码 - 有疑问的地方在下方留言 看到会尽快回复的#includ

2014-12-01 21:38:24 542

原创 POJ 2886 Who Gets the Most Candies? (打表+线段树)

题目类型  打表+线段树题目意思有最多500000个人按顺时针排成一个圈,每个人拥有一个数,刚开始第k个人出去,下一个出去的人根据上一个出去的人手中的数决定 如果那个数是正数A 则表示上一个出去的人顺时针方向第A个人是下一个出去的人 如果是负数A表示上一个出去的人逆时针方向第-A个人是下一个出去的人 如果一个人是第p个出去的人那么他将获得 f(p)块糖果,f(p)表示能

2014-12-01 20:48:24 482

原创 POJ 2481 Cows (线段树)

题目类型  线段树题目意思给出最多100000头牛的两个属性S和E 对于牛i 和牛j 如果 Si = Ej && Ei - Si > Ej - Sj 则牛i比牛j强壮现在问对于所有的牛 比它强壮的牛有多少头解题方法从题目的条件可以发现 如果 Ei >= Ej && Si = Ej - Sj 也会成立 所以就两个值都相同的情况特殊一点而已

2014-11-29 15:25:19 563

原创 POJ 3368 Frequent values (RMQ)

题目类型  RMQ题目意思给出最多包含100000个数的非递减数列 有最多100000次询问 每次询问 第 L 个数到第 R 个数之间最长的每个数都相同的连续子序列是多长解题方法可以使用ST算法首先预处理 把原数列连续相同部分压缩成一个整数 例如 1 1 1 2 2 3 3 3 3 压缩成 3 2 4 并记录压缩后每个数对应的原子序列的开

2014-11-29 15:09:14 493

原创 POJ 1330 Nearest Common Ancestors (LCA)

题目类型  简单的LCA题目意思给出一棵树 问其中一对点的LCA是哪个结点解题方法可以使用 tarjan 算法参考代码 - 有疑问的地方在下方留言 看到会尽快回复的#include #include #include #include using namespace std;const int maxn

2014-11-25 17:35:49 461

原创 POJ 3164 Command Network (最小树形图)

题目类型  最小树形图题目意思给出最多50个用户的最多50种物品的需求数量 和 最多50个供应商的相应物品的供给数量已知对于某种物品某个用户从某个供应商处拿数量1的货的费用 问要满足所有用户所有种类物品的需求的最少费用, 不能满足输出 -1解题方法因为每种物品间不会造成影响 所以每种物品分开处理建图: 新建一个源点 s 从 s 向每个

2014-11-23 20:19:58 633

原创 POJ 2516 Minimum Cost (最小费用最大流)

题目类型  最佳完美匹配, 最小费用最大流题目意思给出一个最多 100 * 100 的字符矩阵 其中有若干个m和相同数量的H, 现在要使每个m都与一个不同的H配对,问最少的花费是多少一次配对的花费是配对的两个字符的哈密顿距离解题方法用km算法求最佳完美匹配(即花费最小的完美匹配) 每个m点和所有的H点连一条权值为原花费*(-1)的边 然后求一

2014-11-22 20:29:23 647

原创 POJ 2195 Going Home (最佳完美匹配, 最小费用最大流)

题目类型  最优比率生成树题目意思给出最多 1000 个点与这些点之间的边的长度与花费 找一棵生成树 使  Sum(边的花费) / Sum(边的长度) 的值最小 输出这个值解题方法01分数规划 -> 对于0-1分数规划的Dinkelbach算法的分析这道题求的是最小值设边的花费为行向量 [c1, c2, ... ,

2014-11-20 15:23:32 1189 3

原创 POJ 2728 Desert King (最优比率生成树)

题目类型  k度限制最小生成树题目意思解题方法参考代码 - 有疑问的地方在下方留言 看到会尽快回复的

2014-09-22 16:30:30 780

原创 POJ 1639 Picnic Planning (k度限制最小生成树)

题目类型  次小生成树题目意思给出 n 个点 m 条边问最小生成树是否唯一 (n 解题方法先用kruscal算法求出最小生成树和构成最小生成树的边 然后对于这棵最小生成树用 dfs 求出任两点间路径上最长的一条边是多少然后枚举刚才后面没用过的边 (u, v) , 新的生成树的最小花费是w(u,v) - maxlen[u][v] (即现在枚

2014-09-21 22:33:09 838

原创 POJ 1679 The Unique MST (次小生成树)

题目类型  次小题目意思给出 ns 个供电点最大提供的电量 和 nt 个用电点最大的用电量 以及中间一些运输线的最大容纳的电量问最多有多少电量从供电点运输到用电点解题方法构造一个超级源点s和一个超级汇点t 然后s到供电点的边的容量就是供电点最大提供的电量 用电点到t的边的容量就是用电点最大的用电量 然后对于一条输电线(u,v,w) 即u点到v

2014-09-19 19:44:04 464

原创 POJ 2449 Remmarguts' Date (第k短路)

题目类型  多源多汇最大流题目意思给出 ns 个供电点最大提供的电量 和 nt 个用电点最大的用电量 以及中间一些运输线的最大容纳的电量问最多有多少电量从供电点运输到用电点解题方法构造一个超级源点s和一个超级汇点t 然后s到供电点的边的容量就是供电点最大提供的电量 用电点到t的边的容量就是用电点最大的用电量 然后对于一条输电线(u,v,w)

2014-09-19 17:06:46 542

原创 POJ 3207 Ikki's Story IV - Panda's Trick (2-SAT)

题目类型  多源多汇最大流题目意思给出 ns 个供电点最大提供的电量 和 nt 个用电点最大的用电量 以及中间一些运输线的最大容纳的电量问最多有多少电量从供电点运输到用电点解题方法构造一个超级源点s和一个超级汇点t 然后s到供电点的边的容量就是供电点最大提供的电量 用电点到t的边的容量就是用电点最大的用电量 然后对于一条输电线(u,v,w)

2014-09-19 15:17:04 683

原创 POJ 2186 Popular Cows (强连通分量)

题目类型  多源多汇最大流题目意思给出 ns 个供电点最大提供的电量 和 nt 个用电点最大的用电量 以及中间一些运输线的最大容纳的电量问最多有多少电量从供电点运输到用电点解题方法构造一个超级源点s和一个超级汇点t 然后s到供电点的边的容量就是供电点最大提供的电量 用电点到t的边的容量就是用电点最大的用电量 然后对于一条输电线(u,v,w)

2014-09-19 11:44:49 491

原创 POJ 3352 Road Construction (边双连通分量)

题目类型  多源多汇最大流题目意思给出 ns 个供电点最大提供的电量 和 nt 个用电点最大的用电量 以及中间一些运输线的最大容纳的电量问最多有多少电量从供电点运输到用电点解题方法构造一个超级源点s和一个超级汇点t 然后s到供电点的边的容量就是供电点最大提供的电量 用电点到t的边的容量就是用电点最大的用电量 然后对于一条输电线(u,v,w)

2014-09-19 10:43:01 793

原创 POJ 1459 Power Network (最大流)

题目类型  多源多汇最大流题目意思给出最多10000个点的坐标 每次可以消除同一行的点或同一列的点 问至少要多少次才能把所有点都消除掉解题方法首先建图 每一个行号为一个点 每一个列号为一个点 那么对于一个要消除的点就对应一条这个点的行号与这个点的列号相连的边那么消除所有点的目的就转化成对于每条边都要从这条边的两个端点找一个点与这条边关联,

2014-09-18 21:03:29 564

原创 POJ 2771 Guardian of Decency (二分图的最大独立集)

题目类型  最大独立集题目意思给出最多10000个点的坐标 每次可以消除同一行的点或同一列的点 问至少要多少次才能把所有点都消除掉解题方法首先建图 每一个行号为一个点 每一个列号为一个点 那么对于一个要消除的点就对应一条这个点的行号与这个点的列号相连的边那么消除所有点的目的就转化成对于每条边都要从这条边的两个端点找一个点与这条边关联, 即

2014-09-18 19:43:07 592

原创 POJ 3020 Antenna Placement (二分匹配, 带花树, 状压dp)

题目类型  Dijkstra算法的运用题目意思中文题目描述解题方法先枚举地位的范围(因为第1件物品必须在交易中出现所以范围区间的左端点就是 L1-m -> L1 右端点范围是 L1 -> L1+m)确定范围后就是类似Dijkstra算法的贪心过程d[i] 表示交易终点停在第 i 个物品时总共所需的花费 那么每次取最小的 d[i]

2014-09-18 18:57:41 801

原创 POJ 3041 Asteroids (最小顶点覆盖)

题目类型  Dijkstra算法的运用题目意思中文题目描述解题方法先枚举地位的范围(因为第1件物品必须在交易中出现所以范围区间的左端点就是 L1-m -> L1 右端点范围是 L1 -> L1+m)确定范围后就是类似Dijkstra算法的贪心过程d[i] 表示交易终点停在第 i 个物品时总共所需的花费 那么每次取最小的 d[i]

2014-09-12 19:53:20 741

原创 POJ 1789 Truck History (最小生成树)

题目类型  蜬题目意思中文题目描述解题方法先枚举地位的范围(因为第1件物品必须在交易中出现所以范围区间的左端点就是 L1-m -> L1 右端点范围是 L1 -> L1+m)确定范围后就是类似Dijkstra算法的贪心过程d[i] 表示交易终点停在第 i 个物品时总共所需的花费 那么每次取最小的 d[i] 去更新其他的 d[] 即

2014-09-12 18:50:28 513

原创 POJ 1201 Intervals (差分约束系统, 贪心+线段树)

题目类型  Dijkstra算法的运用题目意思中文题目描述解题方法先枚举地位的范围(因为第1件物品必须在交易中出现所以范围区间的左端点就是 L1-m -> L1 右端点范围是 L1 -> L1+m)确定范围后就是类似Dijkstra算法的贪心过程d[i] 表示交易终点停在第 i 个物品时总共所需的花费 那么每次取最小的 d[i]

2014-09-11 23:10:09 935

原创 POJ 2253 Frogger (floyd, 二分)

题目类型  Dijkstra算法的运用题目意思中文题目描述解题方法先枚举地位的范围(因为第1件物品必须在交易中出现所以范围区间的左端点就是 L1-m -> L1 右端点范围是 L1 -> L1+m)确定范围后就是类似Dijkstra算法的贪心过程d[i] 表示交易终点停在第 i 个物品时总共所需的花费 那么每次取最小的 d[i]

2014-09-11 19:10:18 614

原创 POJ 1062 昂贵的聘礼 (Dijkstra算法的运用)

题目类型  Dijkstra算法的运用题目意思给出 n (1 现在知道刚开始拥有的货币种类和数量 问能否经过一系列兑换后使原本拥有的钱的数量增多(最后的货币类型和原来必须一致)解题方法如果从开始拥有的货币出发经过一系列兑换能回到原来的货币点且钱数增大, 则说明过程中出现了一个正环一条有效路径的长度是 参考代码 -

2014-08-19 22:50:58 511

原创 POJ 3259 Wormholes (Bellman-Ford算法的运用)

题目类型  Bellman-Ford算法的运用题目意思给出 n (1 解题方法如果从开始拥有的货币出发经过一系列兑换能回到原来的货币点且钱数增大, 则说明过程中出现了一个正环一条有效路径的长度是 参考代码 - 有疑问的地方在下方留言 看到会尽快回复的

2014-08-19 20:42:53 617

原创 POJ 1860 Currency Exchange (Bellman-Ford算法的运用)

题目类型  四边形不等式优化DP题目意思给出 n  (1 解题方法很容易得出朴素的dp转移方程dp[i][j] = Min( dp[i][k] + dp[k+1][j] + (Node[k+1].x - Node[i].x) + (Node[k].y - Node[j].y) ) (其中 i  (dp[i][j] 表示把 i->j

2014-08-18 23:29:13 568

原创 POJ 1094 Sorting It All Out (拓扑排序)

题目类型  拜年题目意思给出 n  (1 解题方法很容易得出朴素的dp转移方程dp[i][j] = Min( dp[i][k] + dp[k+1][j] + (Node[k+1].x - Node[i].x) + (Node[k].y - Node[j].y) ) (其中 i  (dp[i][j] 表示把 i->j这些点连起来的最

2014-08-18 22:18:04 498

原创 HDU 3516 Tree Construction (四边形不等式优化DP)

题目类型  四边开DP题目意思给一个由 n (2 对于每组所有数字要变成这一组的最小那个数 (代价是两个数的差的绝对值) 问最小的代价是多少解题方法首先可以很容易得出朴素的状态转移方程 :dp[i] = Min(dp[j] + sum[i] - sum[j] - a[j+1]*(i-j))  (i - j >= k)(其中 d

2014-08-18 00:26:43 640

原创 POJ 3709 K-Anonymous Sequence (斜率优化DP)

题目类型  斜率优化DP题目意思给出一个 由n * m(1 解题方法插头DP参考论文 基​于​连​通​性​状​态​压​缩​的​动​态​规​划​问​题 中的方法从上往下 从左到右 逐格进行动态规划dp[i][j][S] 表示当前已经决策完格子(i, j) 后轮廓线上从左到右m+1个插头是否存在以及它们的连通性为S的方案总数

2014-08-16 21:52:39 633

原创 暑假训练4-数据结构专题

ACM中常用数据结构 :

2014-08-11 14:16:42 709

原创 POJ 1739 Tony's Tour (插头DP)

题目类型  插头DP题目意思给出  2^n 支足球队 (1 那么每轮对于没有淘汰的足球队每次从左往右选两支足球队进行比赛 例如第一轮的比赛的对阵情况肯定是这样的->  (0,1) (2,3) (4,5) (6, 7)然后第二轮的对阵情况要根据第一轮的结果再进行配对 例如第一轮的胜者分别是 0 2 5 7的话第二轮的对阵情况就是 (0,2) (5,7) 依次这样最

2014-08-04 21:58:46 679

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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