摘要:
一个老生常谈的问题,给定一个两两不同字符的排列x,问其在所有排列情况中的排名。 很容易得到第一种暴力思路,先找到其所有字符集合的最小排列,再利用c++的next_permutation()函数不断寻找,直到找到原排列。思路清晰,代码简单,时间复杂度却是高达 O(n!) ,可以解决n<=11的情况(如 阅读全文
随笔 - 21
文章 - 0
评论 - 0
阅读 -
3274
摘要:
#6281. 数列分块入门 5 - 题目 - LibreOJ (loj.ac) 区间开方,区间求和题。 显然,针对区间维护开方操作很难做到,于是考虑其值的性质,显然,int范围内的值最多开方6次就会变为1,之后再开方依然为1,于是考虑暴力维护一个区间内的值是否全部为1即可,全部为1标记上之后再遇到O 阅读全文
摘要:
一转眼,已经有整整一年没有在博客园写博客了。去洛谷写了几篇(How time flys. 最近突然想起其实我不太擅长分块算法,又想起去年暑假有位同学同我提起过LOJ的数列分块九题,说来惭愧,打了这么久题今天才打算做这个系列,甚至连LOJ的账号都没有注册。。。于是今天花费了半天时间敲题,但是更尴尬的是 阅读全文
摘要:
题目大意:给定一棵带边权树,给三份点的集合U1,U2,U3,求0.5*(E(dis(u1,u2))+E(dis(u1,u3))+E(dis(u2,u3))). 即,我们需要维护两份点的所有距离和。显然,如果用lca处理会超时,于是我们考虑使用树形dp进行处理。对每条边,我们考虑删除它的代价为它所链接 阅读全文
摘要:
最近几次比赛都打得很惨,都怪我图论学得不好,这几天痛定思痛,好好学了线段树和树链剖分,现在写一篇博客记录一下。 最基础的维护区间加与区间查询的线段树之前已经学过了,来个提高题吧。 P3373 【模板】线段树 2 题目描述 如题,已知一个数列,你需要进行下面三种操作: 将某区间每一个数乘上 x 将某区 阅读全文
摘要:
最近有几位同学催我更新,于是来摸摸鱼,来讲一下最小生成树问题。 所谓最小生成树(MST),就是在一张无向带权图中的一棵经过所有节点,边权和最小的一棵树。在实际生活中,可以运用于城镇之间的修路上。 对于MST问题,通常有两种算法,prim算法以及kruskal算法,其中最常用的算法为kruskal算法 阅读全文
摘要:
今天继续划水,来讲一讲欧拉路问题。 欧拉路,简单来说就是一笔画,即对于一张图,可以从某个点出发,经过每一条边,遍历完整张图,这个路径就称为欧拉路径。如果起点与终点重合,则称为欧拉回路。那么,应该如何判断欧拉路呢? 我们先定义几个概念,在无向图中,我们称有奇数条连接的边的点为奇点,有偶数条连接的边的点 阅读全文
摘要:
对于任何一个网络,保证其稳定性都极其重要,如果在一个网络中有着一个点,使得这个点损坏了就会导致整个网络不连通,那么这个网络出现问题的风险就比较大,这个点我们称为割点。类似的有割边,即如果删除这个边,连通分量会增加。我们先来研究最基础的问题,一张无向连通图中割点的数量有几个。很明显,我们的第一反应是暴 阅读全文
摘要:
二分答案,作为一种极其基础的算法,想必大家都很了解,就是对于具有某种单调性的序列,每次取中值,判断其是否符合题意,从而逼近正确答案,通常用于解决最大的最小值或最小的最大值的问题,时间复杂度为O(logn)。其难题的难点往往在于寻找其单调性以及判断正确性。 接下来是一道不久前我cf比赛见过的一道题目, 阅读全文