08 2020 档案

摘要:割点和桥 割点:无向图中,如果删除某个点以及和它相邻的所有边之后,图中连通分量数增加,则称该点为割点 桥:无向图中,如果删除某条边之后,图中连通分量数增加,则称该边为桥 tarjan算法计算割点和桥 割点: 1.如果节点$u$不是根,则当存在一个以$u$为根的子树中的节点$v$,有$low[v]>= 阅读全文
posted @ 2020-08-31 22:56 fxq1304 阅读(121) 评论(0) 推荐(0)
摘要:hdu1247 Hat’s Words 传送门 题意 判断单词表中的一个单词是否为两个单词表中的两个其他单词串联的形式,输出所有这样的单词 题解 建立两棵Trie,一棵是正序,一棵是倒序 遍历所有单词,设立一个标记数组,每个单词首先在正序的Trie中查找,判断每个前缀的位置是否是其他单词,在标记数组 阅读全文
posted @ 2020-08-31 17:37 fxq1304 阅读(76) 评论(0) 推荐(0)
摘要:hdu5542 The Battle of Chibi 传送门 题意 给出一个长度为$n$的序列$a$,计算其中长度为$m$的严格单调递增子序列的个数 $1\leq n\leq 1000,1\leq a_i\leq 1e9$ 题解 设$dp[i][j]$表示以$i$结尾,长度为$j$的子序列个数,则 阅读全文
posted @ 2020-08-30 19:53 fxq1304 阅读(43) 评论(0) 推荐(0)
摘要:hdu2276 Kiki & Little Kiki 2 传送门 题意 长度为$n(2\leq n\leq 100)$的灯围成一个环,初始时每盏灯都有自己的状态,开着或者关着,每一秒结束后左边亮着的灯的状态会发生变化,计算$m(1\leq m\leq 1e8)$秒之后所有灯的状态 题解 矩阵快速幂 阅读全文
posted @ 2020-08-29 21:38 fxq1304 阅读(38) 评论(0) 推荐(0)
摘要:hdu5025 Saving Tang Monk 传送门 题意 有一个$n*n(1\leq n\leq 100)$的矩阵,要求从起点$K$走到终点$T$并且拿到$m(0\leq m\leq 9)$个钥匙,每次只能向相邻的四个点的方向移动一步,耗费一分钟时间,钥匙只能按照编号从小到大的顺序依次拿到,矩 阅读全文
posted @ 2020-08-28 17:58 fxq1304 阅读(67) 评论(0) 推荐(0)
摘要:hdu1074 Doing Homework 传送门 题意 有$n(1\leq n\leq 15)$项作业,每项作业都有名称、提交截止日期和完成这项作业所花费的日期,逾期一天扣一分,计算完成所有作业所扣的分数的最小值,并且输出按照时间顺序完成的作业名称 $n$项作业按照字典序从小到大输入,如果答案不 阅读全文
posted @ 2020-08-27 20:54 fxq1304 阅读(118) 评论(0) 推荐(0)
摘要:hdu1540 Tunnel Warfare 传送门 题意 有$n(n\leq 50000)$个点连成一条线,进行$m$次操作,操作共有三种: 1.毁掉一个点 2.查询与某点连续的点的数量 3.重建上一个被毁掉的点 计算每次查询操作的值 题解 线段树区间合并 每个元素内设三个变量:从区间左端点开始的 阅读全文
posted @ 2020-08-26 21:10 fxq1304 阅读(159) 评论(0) 推荐(0)
摘要:hdu4553 约会安排 传送门 题意 一个人有长度为$n$的空闲时间,有三种操作: 1.基友来约长度为$t$的空闲时间,判断是否可行,如果可行计算开始时间最早的时刻 2.女神来约长度为$t$的空闲时间,首先判断在不耽误和之前基友约会的情况下是否可行,如果不可行,再判断在取消和某些基友约会的情况下是 阅读全文
posted @ 2020-08-26 16:54 fxq1304 阅读(52) 评论(0) 推荐(0)
摘要:cdq分治用来解决多维偏序问题,分治时统计左区间的修改对右区间产生的影响 之所以不考虑右区间对左区间的影响,是因为通常已经通过排序消掉了一维,右区间对左区间不会产生影响 cdq分治是一种离线算法 二维偏序 将其中一维排序,消掉一维的影响,另一维通过cdq分治处理 1.逆序对问题 计算数列中的逆序对个 阅读全文
posted @ 2020-08-24 20:29 fxq1304 阅读(223) 评论(0) 推荐(0)
摘要:Bellman-Ford const int inf=0x3f3f3f3f,maxn=110,maxm=10010; int n,m,dis[maxn]; struct Edge{ int u,v,w; }edge[maxm]; bool Bellman_Ford(){ memset(dis,inf 阅读全文
posted @ 2020-08-23 20:23 fxq1304 阅读(101) 评论(0) 推荐(0)
摘要:Bellman-Ford 最短路中一定不含环(因为含有负环的最短路不存在,零环和正环可以除去),所以从起点到终点的最短路经过的边数不超过$n-1$,所以一定可以通过$n-1$轮松弛得到最短路,每一轮松弛用所有边进行更新 如果第$n$次松弛依然有起点到某个顶点的最短路被更新,说明从起点可以到达一个负环 阅读全文
posted @ 2020-08-23 20:21 fxq1304 阅读(121) 评论(0) 推荐(0)
摘要:差分约束系统 差分约束系统是求解关于一组变量的特殊不等式组的方法,系统由$n$个变量和$m$个不等式组成,其中每个不等式的形式为 \(x_i-x_j\leq b_k(i,j\in [1,n],k\in (1,m)\) 或者 \(x_i-x_j\geq b_k(i,j\in [1,n],k\in (1 阅读全文
posted @ 2020-08-23 00:36 fxq1304 阅读(90) 评论(0) 推荐(0)
摘要:hdu3308 LCIS 传送门 题意 给出一个$n(1\leq n\leq 100000)$个数的序列,进行$m(1\leq m\leq 100000)$次操作,每次操作修改一个数的值或者计算一段连续区间内最长递增子串的长度 题解 线段树区间合并 每个节点维护三个变量:区间内最长递增子串的长度,从 阅读全文
posted @ 2020-08-22 16:10 fxq1304 阅读(130) 评论(0) 推荐(0)
摘要:hdu5862 Counting Intersections 传送门 题意 有$n$条与$x$轴或者$y$轴平行的线段,计算交点的个数 $1\leq n\leq 100000$,端点坐标的绝对值不超过$1e9$ 题解 按照纵坐标从小到大扫描,竖线两个端点按照两个元素存储,横线由于只有一个纵坐标,按照 阅读全文
posted @ 2020-08-20 00:57 fxq1304 阅读(77) 评论(0) 推荐(0)
摘要:hdu3642 Get The Treasury 传送门 ###题意 有$n(1\leq n \leq 1000)\(个立方体,每个立方体的左下角坐标为\)(x_1,y_1,z_1)\(,右上角坐标为\)(x_2,y_2,z_2)$,其中$x$坐标和$y$坐标的绝对值不超过$1e6$,$z$坐标的绝 阅读全文
posted @ 2020-08-16 21:55 fxq1304 阅读(33) 评论(0) 推荐(0)
摘要:hdu4035 Maze 传送门 题意 给定一棵树,从$1$号节点出发,在每个节点$i$有三种可能: 1.以$k_i$的概率回到$1$号节点 2.以$e_i$的概率结束游戏 3.随机走向一个相邻的节点 判断是否可以结束游戏,计算结束时走过边数的期望 题解 设$p_i=1-k_i-e_i$,设从每个节 阅读全文
posted @ 2020-08-15 16:55 fxq1304 阅读(69) 评论(0) 推荐(0)
摘要:hdu3853 LOOPS 传送门 题意 有一个$r*c$的网格,在每一个格子处都有一定的概率停留,向右方格子移动和向下方格子移动,每次消耗2点力量值。计算从(1,1)到(r,c)需要消耗力量值的期望 题解 期望$dp$ $dp[i][j]$表示从(i,j)到(r,c)消耗力量值的期望 设在某个格子 阅读全文
posted @ 2020-08-14 21:29 fxq1304 阅读(85) 评论(0) 推荐(0)
摘要:计算两个字符串$s$和$t$的最长公共子串 由于在一个字符串中出现两次的最长子串一定在相邻两个后缀数组元素的最长公共前缀中取得,也就是高度数组的最大值,所以通过插入一个在两个字符串中不可能出现的字符,将两个字符串连接起来,计算后缀数组和高度数组。其中,分属于字符串$s$和$t$的后缀的高度数组元素的 阅读全文
posted @ 2020-08-14 00:17 fxq1304 阅读(104) 评论(0) 推荐(0)
摘要:hdu4370 0 or 1 传送门 ###题意 给出一个$nn(1<n\leq 300)$的矩阵$C$,构造一个$nn$的$01$矩阵$X$,满足条件: \(1. X_{12}+X_{13}+\cdots +X_{1n}=1\) \(2. X_{1n}+X_{2n}+\cdots +X_{n-1n 阅读全文
posted @ 2020-08-13 20:28 fxq1304 阅读(9) 评论(0) 推荐(0)
摘要:计算得到文本串$S$的后缀数组,给出模式串$P$,可以通过二分,在$O(|T|\log |S|)$的时间复杂度内判断模式串是否在文本串中出现过 bool contain(string text,string pattern){ int n=text.length(); int m=pattern.l 阅读全文
posted @ 2020-08-12 18:38 fxq1304 阅读(124) 评论(0) 推荐(0)
摘要:高度数组是由后缀数组中相邻两个后缀的最长公共前缀的长度组成的数组,可以通过尺取法在$O(n)$的时间复杂度内得到 const int maxn=200010; int lcp[maxn]; void construct_lcp(string S,int *sa,int *lcp){ int n=S. 阅读全文
posted @ 2020-08-11 17:51 fxq1304 阅读(92) 评论(0) 推荐(0)
摘要:hdu4118 Holiday's Accommodation 传送门 题意 一棵$n$个节点的带有边权的树,每个节点都有一个人,将每个人都换到与当前节点不同的节点,求所有人走过的路径总和的最大值 题解 对于每条边,使得所有人走得最远的方式就是让两边的人互换,为了保证每个人都有位置,交换人数为左右两 阅读全文
posted @ 2020-08-10 17:37 fxq1304 阅读(60) 评论(0) 推荐(0)
摘要:Trie是指一个字符串集合对应的有根树,树的每条边对应一个字符,根节点表示空串,其他每个节点表示从根到这个节点的路径组成的字符串,在每个属于集合中的字符串的节点处打上标记 Trie是可以高效维护字符串集合,以空间换时间的数据结构,Trie中插入字符串和查询字符串的效率比较高,时间复杂度都是$O(n) 阅读全文
posted @ 2020-08-09 16:12 fxq1304 阅读(89) 评论(0) 推荐(0)
摘要:字符串哈希用来解决字符串匹配问题。设文本串的长度为$n$,模式串的长度为$m$,通过滚动哈希优化可以在$O(n+m)$的时间复杂度内完成匹配 选取两个互素常数$b$和$m$,$b$可以选择$131,13331$等,可以降低哈希冲突的概率,$m$通常选择$2^{64}$,通过自然溢出省去取模运算 哈希 阅读全文
posted @ 2020-08-08 17:47 fxq1304 阅读(100) 评论(0) 推荐(0)
摘要:平面上有$n$个点,计算距离最近的两个点之间的距离 将所有点按照横坐标$x_0$分成左右两半,那么距离最近的点对一定是下面两种情况中的最小值: 1.两点都属于左半边或者右半边 2.两点一个属于左半边,一个属于右半边 第一种情况可以通过递归来处理,由于计算的是最小值,假设第一情况得到的最小值为$d$, 阅读全文
posted @ 2020-08-07 17:13 fxq1304 阅读(244) 评论(0) 推荐(0)
摘要:后缀数组是将某个字符串的所有后缀按照字典序排序后得到的数组,数组中存储的是字符串的起始下标。包括空串,所以如果字符串的长度为$n$,则后缀数组中的元素个数为$n+1$ 后缀数组的计算有基于倍增的时间复杂度为$O(n\log ^2n)$的算法,利用长度为$k$的排序结果对长度为$2k$的字符串排序 设 阅读全文
posted @ 2020-08-06 18:30 fxq1304 阅读(36) 评论(0) 推荐(0)
摘要:求解数独问题的基本方法是在$dfs$的过程中剪枝,下面这几种方法的剪枝强度递增 朴素方法 通过数组记录每行、每列、每个九宫格中已经填过的数字,从左上角的空格开始$dfs$,填入所在行、列和九宫格中都没有出现过的数字 相关题目:hdu1426 Sudoku Killer #include<iostre 阅读全文
posted @ 2020-08-04 16:59 fxq1304 阅读(47) 评论(0) 推荐(0)
摘要:hdu2236 无题II 传送门 在一个$n*n$的矩阵$a$中,选择$n$个不同行、不同列的元素,使得其中最大值与最小值的差值最小 $1\leq n\leq 100$,$0\leq a_ \leq 100$ 由于每一行、每一列只能选择一个元素,可以将行号和列号分成两个集合,建立二分图。 二分答案, 阅读全文
posted @ 2020-08-03 22:04 fxq1304 阅读(76) 评论(0) 推荐(0)
摘要:单调栈 单调栈就是栈内元素保持单调性的栈 遍历整个序列,每一次从栈顶弹出会破坏单调性的元素,最后将当前元素加入栈顶 由于每个元素最多入栈一次,出栈一次,所以可以在$O(n)$的时间复杂度内处理数据 相关题目:hdu1506 Largest Rectangle in a Histogram #incl 阅读全文
posted @ 2020-08-03 16:41 fxq1304 阅读(92) 评论(0) 推荐(0)
摘要:由于无论边权怎么修改,树上任意两点之间的$lca$是不变的,所以节点$u,v$之间的距离总是可以表示成两个节点分别到根节点的距离之和减去2倍的$lca(u,v)$到根节点的距离 问题就是边权修改时,如何动态维护所有节点到根节点的距离 如果图为一条链,那么只要使用树状数组就可以实现单点修改,区间查询 阅读全文
posted @ 2020-08-03 00:09 fxq1304 阅读(351) 评论(0) 推荐(0)
摘要:2-SAT 给定一个布尔方程,判断是否存在一组布尔变量的真值指派使得整个方程为真的问题,称为布尔方程的可满足性问题(SAT) 合取范式:\((a\bigvee b\bigvee \cdots)\bigwedge (c\bigvee d\bigvee \cdots)\bigwedge \cdots\) 阅读全文
posted @ 2020-08-01 15:15 fxq1304 阅读(102) 评论(0) 推荐(0)