
水题记录
文章平均质量分 62
。
lifeforge
这个作者很懒,什么都没留下…
展开
-
HDU-2196 树的直径性质
HDU-2196本题大意是求取一颗无根树上每一个节点,到树上其余任意节点的最远距离其实我们可以考虑利用树的直径的性质,我们假设树的直径的两个端点为 A 与 B那么,树上任意节点C到树上其余任何节点的最远距离一定是C->A或者是C->B利用这个性质,我们只需利用3次dfs,第一次是为了求取直径的A端点第二次是为了求取其余所有点到A端点的距离,顺便可以求取B端点最后我们可以再求取一次所有点到B端点的距离对于每一个节点我们可以记录一个 ans[i]=max(ans[i],sum[i])原创 2021-01-19 20:38:16 · 332 阅读 · 0 评论 -
HDU4126(最小生成树+离线处理)
好题最小生成树+离线处理对于生成树上的u->v这条边,我们考虑删去u->v后,u和v会构成两棵树,我们从v开始遍历v这棵树,每次更新记录dp[u][v]即可离线处理的复杂度为O(n2)O(n^2)O(n2)代码部分挺乱的,有时间再整理#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#in原创 2020-11-19 13:14:47 · 180 阅读 · 0 评论 -
POJ1128-拓扑排序+DFS
题目链接:POJ-1128看到题应该很容易想到利用拓扑排序来判断相框之间的关系,对于每一个相框,我们遍历一遍可以找到他的 上下左右 四条边的位置,再搜索这几条边上是否有其他字母,有的话就添加一个类似于A<B的关系,为后面进行拓扑排序做准备然后就是我个人认为的这道题的难点,怎么按照字典序输出所有可能答案,最开始我想的是利用bfs跑拓扑,确定每个点的层级,再对相同层级的点利用next_permutationh函数进行排列,最后发现可能出现一个点属于多个层级的情况,如下图此时是无法确定D的层级的原创 2020-11-04 18:20:11 · 187 阅读 · 0 评论 -
Codeforces Round #679 -C
题目链接:CF1345-C题意:对于所有的aia_iai找到一个区间[x,y][x,y][x,y],使得ai−b∃j∈[1,6]∈[x,y]a_i-b_{∃j∈[1,6]}∈[x,y]ai−b∃j∈[1,6]∈[x,y]并找到这个区间的最小长度值思路:由于j∈[1,6]j∈[1,6]j∈[1,6]可以直接记录所有的ai−bja_i-b_jai−bj,并对其sort排序,再进行尺取,找到包含n个aia_iai的区间的最小长度(具体实现看代码部分)#include <iostream&g原创 2020-10-26 20:00:37 · 164 阅读 · 0 评论 -
Codeforces Round #677 (Div. 3) - E(组合数学)
题目链接:CF-1143E简单的组合数学对于给定的n个人,我们按照题意把他随机分为2组,得到分组系数Cnn/2{C_n^{n/2}}Cnn/2考虑到这样均分为两组会出现均分出的两个集合A、B出现前后重复的情况,(A,B),(B,A)在该系数上还需要除2,得到Cnn/22\frac{C_n^{n/2}}{2}2Cnn/2然后在完成分组后我们对每组的(n/2)人进行全排列,得到分组系数n2!\frac{n}{2}!2n!,由于进行了全排列,而实际跳舞的人是围成了 一个圈,故实际有效的排列原创 2020-10-21 21:39:48 · 114 阅读 · 0 评论 -
HDU-3231(三维拓扑)
题目链接HDU-3231题是好题,就是输出格式略坑。。少空行他不会提示PE只显示WA对于给定的n个盒子,我们可以将其起始点和终点分别假定为i和i+n,这样我们就可以在每个维度(x,y,z)上得到2n个点在初始化的时候,考虑初始约束条件x<x+n,y<y+n,z<z+n 在初始时已经就应该要连边,需要单独初始化然后考虑“I”,“X”,“Y”,“Z”的询问更新,当为“I”时,a,b没有相交关系,在三个维度上添加约束条件a<b+n,b<a+n(这个约束条件非常巧妙)当原创 2020-10-20 19:04:06 · 218 阅读 · 1 评论 -
洛谷P1807-拓扑排序+染色+最短路思想
题目链接-P1807这道题的最简单的解法应该是将初始给的权值全部取负,然后对给定的图跑任意一个最短路的板子,将得到的“最短路长度”再取负得到的就是最终的答案但是因为在学习拓扑排序,就跟着大佬的拓扑思路写了一遍拓扑的解,感觉还是有一些收获的#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include原创 2020-10-17 14:07:58 · 145 阅读 · 0 评论 -
HDU-1811(拓扑排序+并查集)
题目链接-HDU1811开始是在并查集专题看到的这道题,然后就往并查集方向想,考虑了各种加点都没有办法解决问题,后面看题解发现这道题的主体应该是拓扑排序,并查集仅仅是用来帮助解决“=”这个符号,进行删点处理的AC代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>原创 2020-10-17 10:30:07 · 282 阅读 · 0 评论 -
OpenJ_POJ - C16H-Magical Balls(数论)
OpenJ_POJ - C16H题意:已知有1个球在x,y点,并按照M条规则进行复制,每次使用一条规则,重复N次,问最终所有球的(x+y)的值的总和。公式推导题推导过程如下:原创 2020-10-08 11:14:45 · 168 阅读 · 0 评论 -
Codeforces Round #673-B,C(map水)
B-题目链接map记录放到容器1内的元素,每新添加一个元素查找mp[k-tmp]是否存在,存在则放到相同容器中,否则扔到另外一个容器此外对于k为偶数的情况还需要特别讨论,要将k/2均匀放到两个容器中#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include原创 2020-09-28 14:49:48 · 106 阅读 · 0 评论 -
POJ-1655-树的重心
树的重心模板题#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <vector>#include <stack>#inc原创 2020-09-15 13:51:11 · 176 阅读 · 0 评论 -
Codeforces Round #670 (Div. 2)-C-树的重心
新知识点树的重心龟速AC代码(763ms)#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <vector>#include <原创 2020-09-15 13:37:14 · 119 阅读 · 0 评论 -
ABC-173-C
二进制暴力枚举#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <vector>#include <stack>#inc原创 2020-09-12 15:10:45 · 339 阅读 · 0 评论 -
洛谷P1972,ABC174-F-树状数组离线处理
洛谷P1972AtCoder Beginner Contest 174-F树状数组的离线处理首先对询问进行读入,把询问右区间进行排序处理,再逐步向后更新树状数组树状数组储存值为从1-j的不同数字的个数最终答案就是FIND( r ) - FIND( l - 1 )#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <c原创 2020-09-11 13:36:29 · 199 阅读 · 0 评论 -
Educational Codeforces Round 93-C-stl使用
题目链接比赛的时候只想到了对每一个字符-1的操作,但是后续的处理完全是在抓瞎,始终只能想到O(n²)的暴力做法,赛后补题发现了map的妙用;解题思路对 给定字符串每个数的值-1(长度),题目就从 求 满足(子区间元素和=子区间长度)的子区间数量变为了 求满足子区间和为0的子区间数量对前缀和进行处理,如果两个前缀和相等,中间区间的和一定为0;用map记录相同前缀的数量;在循环中 ans+=map[前缀],得到的即为答案如果在循环外求取ans设每个前缀的值为ni应该要遍历map中的每原创 2020-08-16 10:29:58 · 166 阅读 · 1 评论