07 2017 档案
摘要:洛谷P1165 日志分析栈 在这道题中 栈st[ i ] 表示的有点特殊 st[ i ] 表示的st[ 1 ]--st[ i ] 中最大的值
阅读全文
摘要:洛谷P1137 旅行计划 拓扑排序 图论在拓扑排序中把每个点能够浏览的点加上去 但是这样会有重复 因为我们要求一个点向前多能浏览的点 所以我们只要求连向这个点中能向前浏览的点数最多的点这一路就是能浏览的最多的点 然后这个点就相当于是拓扑排序中使该点的入度为 0 的那个点用那个点来更新当前点就行了
阅读全文
摘要:洛谷P1126 机器人搬重物广搜 这道题其实题目不大清楚 最好配合图片 和 样例一起看 每个点如果是 1 其实管辖的是 上方的点 左边的点 以及 左上方的点
阅读全文
摘要:分块模板 单点加 区间求和 时间复杂度 Q * sqrt(N)
阅读全文
摘要:洛谷P1823 音乐会的等待 单调栈 维护一个上升的单调栈 用以记录有当前这个数向后能看到几个数 但是每次加入一个数 时 他能看到的 是 单调栈中所有比他小的 和跟他一样的数 比他小的下次就没有用了,所以直接退栈 但是 相同的数到后面还是可能会有贡献的,所以贡献算完以后又要进栈 最后如果栈中还有元素
阅读全文
摘要:洛谷P1316 丢瓶盖 二分答案 二分距离 判断能够取几个
阅读全文
摘要:洛谷P1133 教主的花园动态规划 这里是环状的,但是我们并不用将他破环成链 只要枚举第一个点 根据第一个点选择最后一个选择什么就行了 然后我们进行DP注意如果当前是 2 的话要分情况 上一次是上升 1 还是下降 0 F1[ i ] 表示 第 i 位置的种第 1 种树所能获得的最大价值 F2[ i
阅读全文
摘要:动态规划 DP 我们用f[ i ] 表示从 i 点出发到达终点的最多能休息的时间 然后我们发现 状态转移方程f[ i ] = f[ i+1 ] +1 ; 当该点 并没有工作计划时 f[ i ] = max(f[ i+len ],f[ i ]); 当该点 有工作计划时 一个或若干个
阅读全文
摘要:洛谷 P1461海明码 Hamming Codes枚举 搜索
阅读全文
摘要:hdu1395 数论 欧拉函数对于给出的每一个n 求最小正整数 x 满足 2^x mod n = 1 1、如果给出的n 是偶数或者 1 则一定无解2、如果是奇数 首先根据欧拉定理 我们可知 phi(n)一定是满足要求的 然后答案一定是 phi( i ) 的因数 然后我们就可以 O(sqrt(phi(
阅读全文
摘要:hdu2824 The Euler function O(n)求欧拉函数
阅读全文
摘要:hdu1576 A/B逆元 扩展欧几里得 数论
阅读全文
摘要:洛谷P1850 换教室最短路 + 动态规划 题解 首先预处理出任意两点的最短路 然后 dp f[ i ][ j ][ 0/1 ] 现在是 第 i 个时间段,已经申请 过 j次了,该次是否成功 0 否 1 成功 的最小的期望 主要是四个方面的转移 前一个是否申请 成功 or失败 当前是否申请 成功or
阅读全文
摘要:bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集 1、这道题我们主要就是要求出距离一个油站的最近的油站 首先我们dijkstra 求出任意一个点到 离他最近的油站的距离 2、然后会发现 如果一条边的两个端点 的最近油站不同的话 那么这条边就会在这两个油站的最短路上 3、然后
阅读全文
摘要:洛谷P1941 飞扬的小鸟 动态规划 这道题主要要注意一下飞到m以上之后高度还是 m 这个就要在判断一下 比较直接暴力的动归 是 O(N^3) f[ i ][ j ] 到 i ,j 这个位置 所需要的最少点击次数 如果不能到,就是无限大 f[ i ][ j ] = min(f[ i-1 ][ j-u
阅读全文
摘要:洛谷P1551亲戚 并查集 按秩合并 + 路径压缩
阅读全文
摘要:51nod 1380 夹克老爷的逢三抽一堆 脑洞题 题意 n个人围成一圈 然后每次可以选一个人,得到他的分数,然后他与他相邻的两个人出圈 总共选 n/3次, 保证n是3的倍数 题解 这道怎么说呢,应该比较巧妙吧,你开一个优先队列,大根堆,每次选择优先队列中最大的数,然后把他左右两个数删掉,比如 A
阅读全文
摘要:洛谷P2168 荷马史诗 堆 数学 题意 实际上就是让你构造 一棵 K叉哈夫曼树 哈夫曼树其实就是路径权值和最小的树 路径权值权值和 = sigama 用的次数 * 深度 为了让路径权和最小 那么我们肯定是要让 用的次数越多的数深度越小 关于二叉哈夫曼树 我们是怎么构造的呢,我们使用合并果子 一样构
阅读全文
摘要:HDU 4343 Interval query 倍增思想, DP 注意当两个区间只有一个端点重合时,也算是合法的 题目大意:给定N(N<=100000)个区间(左闭右开)和M(M<=100000)个询问[l, r],问所有满足[s,t)包含于于[l, r]的区间中最多能选出多少个,使得他们两两不相交
阅读全文
摘要:洛谷P1969 积木大赛 贪心 考虑差分 对区间 [l,r]+1 在差分数组上相当于 d[ l ]++ ; d[ r+1 ]-- ; 那么你得到原数组的差分数组后 当d[ i ] = x 则你需要 对 以 i 为左端点 右端点未知的一个区间加x次且这x加的可能不是同一个区间 所以最后只要将差分数组中
阅读全文
摘要:codves1052 地鼠游戏 贪心 题意 有n只地鼠,一开始地鼠是全部钻出来的,每只地鼠有钻出来的持续时间,t,或者说在t秒会钻回去,不再钻出来以及打掉的分数,打一次地鼠我们需要一秒时间,求最多能获得的分值这题其实相当于 对于每一只地鼠 我们只能在 0--ti-1这段时间内打 然后我们可以将 ti
阅读全文
摘要:hdu6031 Innumerable Ancestors 倍增 题意 给定一张无向图,对于每组询问,给出两个集合 A 与 B 求 lca(x,y) 最深的时候的深度 x属于A y属于B 题解 首先 我们发现答案具有单调性,于是我们就可以二分这个答案 mid 然后 把 a 集合 的 这个深度的祖先
阅读全文
摘要:Codeforces 278C Learning Languages(并查集) 求连通块 为什么最后还要getfather 一遍 比如 x 是 y 的父亲 然后你 Union(x,z) 然后 z 变成了 x 父亲 然后 y 的祖先就是错的了 题解 求一个无向图中有几个连通块 sum 特判 一下 如果
阅读全文
摘要:codeforces A. Hongcow Builds A Nation 并查集 题意 给定一张无向图 其中 有 k 个特殊点 特殊点之间不能存在 路径求 最多能加多少边 不能有重边自环 将各个连通块在没有加边的时候的点数 算出来 然后 将自由的点 都加入 到 点数最多的连通块中,然后算出加边以后
阅读全文
摘要:Codeforces 292D Connected Components (并查集) 题意 给出一张无向图,每次询问删去第Li--Ri 条边 求此时有多少个连通块 题解 求出一个前缀 Li 表示 加入前 i 条边时图的连通状况 以及一个后缀 Ri 表示 加入后 i 条边时图的连通状况 对于每个询问
阅读全文
摘要:Codeforces 445B DZY Loves Chemistry(并查集) 题目大意:有若干种化学药品,给出两两会反应的关系,现在要将药物依次放入一个容器中,容器中的化学药品可以互相反应,如果当前放入的药品能与已经在容器中的某一药品反应,那么危险值翻倍,即*2,初始值为1,求一顺序,使得为危险
阅读全文
摘要:codeforces 468B two set(并查集)n+1 表示 B 组 n+2 表示 A 组 按照 这题的做法 应该是 如果 满足 num[ i ] a-num[ i ] 则他们同一组 但不一定 就一定是 都是 A 组 也可能都是 B 组 然而如果不满足这个条件的话,就直接加入 B组 然后如果
阅读全文
摘要:hdu1598 find the most comfortable road (枚举+并查集) 暴力做法 枚举最小的边 与最大的边 把价值在两条边权之间的边全部加入进去 然后判断一下 S 与 T 之间是否 连通 就行了 并查集 判断 加边的时候 merge 就行了 正解 枚举完最小边后 从小到大 枚
阅读全文
摘要:CodeForces 776D The Door Problem【并查集】并查集 设 f 1--m 表示 开的情况 m+1--2*m 表示关的情况 对于每盏灯 如果他 是关的 则 x--y x+m--y+m 表示要同关 或者同开 如果他 是开的 则 x+m--y x--y+m 表示一个关 一个开如果
阅读全文
摘要:Poj3321 Apple Tree dfs序 + 树状数组 单点加 区间询问
阅读全文
摘要:洛谷P2680 运输计划 树上差分 LCA 倍增 tarjan 题意 给出若干条路径 你可以把其中的一条边变为 0 求变为 0 后的最短路径 首先发现答案满足单调性 那么就可以二分这个答案 首先我们 用tarjan 或者 倍增等算法 预处理 出两点之间的路径距离 ,以及lca然后我们将两点之间的距离
阅读全文
摘要:bzoj 3043: IncDec Sequence 差分 转化 题目大意:给定一个序列,提供一个操作:将某个区间内所有数+1或-1求将所有数变成一样最少多少次操作,以及最终可以有多少种数 考虑差分后的序列每次对[l,r]进行+1/-1,相当于在差分后的数组上对l进行+1/-1,然后对r+1进行-1
阅读全文
摘要:51nod1423 最大二“货” 单调队列 考虑 次大值 在 最大值前面的情况 这样出栈 时 就可以两个数 异或一下 维护一个单调递减的单调队列 出栈的数当做 次大值 进栈的数当做最大值 但是这样只考虑了一种情况 还要考虑 最大值在次大值前面的 情况,这样只要反向在做一遍就行了 ,然后取最大值 这题
阅读全文
摘要:洛谷P3503 [POI2010]KLO-Blocks 单调栈首先 因为每个数都要大于k 所以说,我们就可以先将每一个数减去k,然后求他们 的前缀和, 这样问题就转化成了求sum[ r ] - sum[ l ] 运用前缀和 然后 这样的长度 就是 r-l 然后我们考虑怎么求这个最大 首先我们发现 当
阅读全文
摘要:洛谷P3397 地毯 二维差分 与一维差分类似 每次修改相当于只要修改4个地方就可以了 然后将差分数组来一次前缀和就能做好了
阅读全文