DYT's Blog

Hello 2019

欢迎使用CSDN-markdown编辑器.

欢迎使用Markdown编辑器写博客(莫名其妙发出去的的第一篇blog) 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离...

2017-08-02 10:51:12

阅读数:776

评论数:0

UOJ#176. 新年的繁荣

题目描述 题解: 这题要求的是最大生成树,我们考虑最大生成树的算法:如果用prim,我们无法做到快速查找和修正当前已作为生成树中的点到其它点的距离;如果用kruskal,我们就要把所有边先找出来排序处理。显然,这两种方法都难以对付这道题。那么我们就要引入在算法中比较冷门,但题目中时常遇到的boru...

2019-01-04 23:35:25

阅读数:47

评论数:0

LOJ#2155. 「POI2011 R1」同谋者 Conspiracy

题目描述 题解: 这个题目要求的是把一张无向图变成一个团和一个独立集的方案数。这看似好像无从下手。那么我们可以换一个角度思考,我们考虑先求出一个解,然后通过调整得出所有解。 假设已经求出了一个解,我们会发现,其它所有的解只可能由这个解通过三种方式得到: 1.将一个原本在独立集里面的点放到团中(可行...

2018-12-31 14:30:59

阅读数:32

评论数:0

LOJ#2718. 「NOI2018」归程

题目描述 题解: 对于权值大于等于或者小于等于某一个值的询问我们可以考虑用kruskal重构树来解决。 kruskal重构树是指在对一张无向图进行kruskal求出最小/最大生成树的同时,把当前的两颗子树合并到新的节点上,作为它的两个子节点,并且把新节点的点权赋为当前这条边的边权,最后变成一颗树。...

2018-12-28 09:59:41

阅读数:38

评论数:0

Codeforces 528 D. Fuzzy Search

题目描述 题解: 这题是字符串匹配的加强版。 我们可以先预处理出S串的每一个位置能放那些字母。 然后我们考虑对于每一种字母分开来处理。 假设处理字母k。 对于S中的每一位,有可以放这个字母k和不能放两种情况。 对于T中的每一位,有是k和不是k两种情况。 那么对于这个字母,如果S和T的某一位不能匹配...

2018-12-27 19:12:06

阅读数:14

评论数:0

LOJ#2127. 「HAOI2015」按位或

题目描述:戳这里 题解: 这题如果按照题意做看似非常不可解,但是有一个叫做Min-Max容斥的东西: Max(S)=∑U⊂S(−1)∣U∣−1Min(U)Max(S)=\sum_{U\subset S}(-1)^{\left| U \right|-1}Min(U)Max(S)=U⊂S∑​(−1)∣...

2018-12-27 18:42:02

阅读数:25

评论数:0

TC srm 题解

SRM 516 div.2 T3: 题意:在一个有限制(可放或不可放)的矩阵中放入两个L型(严格,一个点或两个点都不行),求方案数。 题解: 暴力枚举,大力分类讨论。 枚举一下两个L型相交的的情况,一共4种。 代码如下: void doit(int x,int y,int x1,...

2018-12-24 20:00:31

阅读数:132

评论数:0

LOJ6482. LJJ 爱数数

题目描述:戳这里 题解: 1a+1b=1c\frac{1}{a}+\frac{1}{b}=\frac{1}{c}a1​+b1​=c1​ (a+b)c=ab(a+b)c=ab(a+b)c=ab 令g=gcd(a,b),A=ag,B=bg令g=gcd(a,b),A=\frac{a}{g},B=\fra...

2018-12-24 19:58:20

阅读数:72

评论数:0

FFT:BZOJ4503 两个串

题目描述:戳这里 题解: 如果没有"?",那么我们可以用kmp。 我们可以把这道题目抽象成一个和式: 假设两串S,T分别是0~n,0~m,翻转T串(变成m~0)。 假设T串中"?"的位置都设为0...

2018-12-23 14:42:17

阅读数:17

评论数:0

算法学习:快速傅里叶变换(FFT)

前置知识: 1.多项式: 形如: f(x)=∑0n−1ai⋅xif(x)=\sum_{0}^{n-1}ai\cdot x^if(x)=0∑n−1​ai⋅xi 多项式表示法: 系数表示法: 就是上式的写法 点值表示法: 在f(x)上取n个点,就能唯一确定的表示出这个多项式。 证明如...

2018-12-03 20:57:40

阅读数:59

评论数:0

CDQ分治模板:HDU5618 Jam's problem again

题目描述:戳这里 题解: 这是一道CDQ分治的模板。 我们想要求三维的“正序对”的数量。那么可以通过牌序第一维,然后对后两位使用一些数据结构来维护。 但是这样很难维护,而CDQ分治就是解决这样的问题的一个得力工具。 CDQ的思想大概就和归并排序一样。 我们先以x,y,z分别为第1,2,...

2018-11-18 19:44:02

阅读数:55

评论数:0

Prufer编码:51nod 1806 wangyurzee的树

题目描述:戳这里 题解:

2018-10-29 18:42:21

阅读数:28

评论数:0

51nod 1681 公共祖先

题目描述:戳这里 题解: 这个题目有一个非常好的技巧。我们要求的其实是某一个点在两颗树中的子树中同时含有的点的数量。我们发现这个东西很难求,因为这个东西在两个子树中都是散乱无序的。那么我们如果把一颗子树中的量变得有一定的关系可循,那么接下来只需要关心另一颗树就好了。那么我们不妨把第一颗树重新标一个...

2018-10-28 19:02:58

阅读数:17

评论数:0

SPOJ 10628 /LuoguSP10628 COT - Count on a tree

题目描述:戳这里 题解: 这题是主席树上树(???) 我们发现对于一个点,我们可以维护从它到根的权值线段树,那么对于一个点对x,y,我们只需要求出它们的lca z,以及z的父节点,那么就可以容斥一下,sumx+sumy−sumz−sumfazsumx+sumy-sumz-sum fazsumx+s...

2018-10-28 15:37:43

阅读数:31

评论数:0

BZOJ 2286消耗战

题目描述:戳这里 题解: 这题就是虚树的板子题啦。 我们要求一些最小可以阻断给定k个点到根的路径的边权和。那么考虑没有询问的情况,可以直接用树形DP。我们先用倍增求出一个点到根的路径上的最小的边权x,然后对于一个选中的节点,肯定是求它的x作为一这个点为根的子树上的答案。而对于一个未被选中的点,就有...

2018-10-17 18:57:42

阅读数:27

评论数:0

51nod题解小集

1406:f[x]表示与x相与之后值为x的数的个数。转移就是删掉某一个二进制位上的1。但是如果先枚举当前的值,再枚举删掉那一位会产生重复(一个数删掉一个位上的1或者删掉另外一个位上的1最后都会转移到同时删掉这两个1的情况)。那么我们可以改一下循环的顺序,先枚举删掉的位,再枚举当前的数,就不会有重复...

2018-10-06 14:20:28

阅读数:53

评论数:0

KM算法模板

代码如下: #include<cstdio> #include<string> #include<cstring> using namespace std; c...

2018-09-05 14:33:41

阅读数:52

评论数:0

凸包算法:Graham模板

感觉这个算法比衍生版的Andrew算法优秀。 算法过程大致如下: 首先找到一个y坐标最小的点(y坐标相等就x最小)作为基准点,进行极角排序。这样能保证所有点到这个点的角度都在(-180,180]之间,就不用像Andrew一样维护上下凸壳了。 然后只要维护一下凸壳就好了(如果发现是凹的就退栈)...

2018-09-01 10:19:37

阅读数:40

评论数:0

HDU 5780 gcd

题目描述:戳这里 题解: 首先有一个结论:gcd(xa−1,xb−1)=xgcd(a,b)−1gcd(xa−1,xb−1)=xgcd(a,b)−1gcd(x^a-1,x^b-1)=x^{gcd(a,b)}-1 推导过程可以参考一下辗转相减法。 (xa−1,xb−1)=(xa−b,xb−1)...

2018-08-30 18:47:27

阅读数:29

评论数:0

最小费用最大流:Luogu P3381 【模板】最小费用最大流

题目描述:戳这里 题解: 最小费用最大流的套路基本上就是这样的: 1.求出当前残留网络之中s -> t的最短路 (spfa) 因为有可能会有负权边 2.答案+= dis[t] × totflow 3.在处理完了之后修正途径边的流量(正减反加) 4.循环1...

2018-08-27 08:51:09

阅读数:33

评论数:0

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