- 博客(16)
- 收藏
- 关注
原创 二分图判定+图染色解决(bfs+dfs)
二分图定义:二分图也称二部图,是图论里的一种特殊模型,也是一种特殊的网络流。其最大的特点在于,可以将图里的顶点分为两个集合,且集合内的点没有直接关联,如下图所示。判断二分图的常见方法是染色法:用两种颜色,对所有顶点逐个染色,且相邻顶点染不同的颜色,如果发现相邻顶点染了同一种颜色,就认为此图不为二分图。 当所有顶点都被染色,且没有发现同色的相邻顶点,就退出。dfs解法:#include <iostream>#include <algorithm>#include <
2020-10-29 09:54:15
682
原创 二维差分J.Matrix Subtraction
题目链接题解:#include<bits/stdc++.h>#define ll long longusing namespace std;int dp[1001][1001]; //差分记录int su[1001][1001]; //输入的值int rec[1001][1001]; //记录差分和void inse(int x,int y,int x1,int y1,int z){ dp[x][y]+=z; dp[x1+1][y]-=z; d
2020-10-27 15:30:59
73
原创 【模板】轻重链剖分+线段树
题目链接题解:#include <bits/stdc++.h>#define ll long longusing namespace std;int next[500001];int head[500001];int to[500001];int cnt;int son[500001];//求重儿子int fa[500001];//父亲结点int tol[500001];//子节点个数int dep[500001];//深度int dfn[500001];/
2020-10-07 19:08:02
120
原创 树链剖分求解lca
树链剖分:用于将树分割成若干条链的形式,以维护树上路径的信息。树链剖分都指"重链剖分"重链剖分还能保证划分出的每条链上的节点 DFS 序连续,因此可以方便地用一些维护序列的数据结构(如线段树)来维护树上路径的信息。首先明确概念:重儿子:父亲节点的所有儿子中子树结点数目最多(size最大)的结点;轻儿子:父亲节点中除了重儿子以外的儿子;重边:父亲结点和重儿子连成的边;轻边:父亲节点和轻儿子连成的边;重链:由多条重边连接而成的路径;轻链:由多条轻边连接而成的路径;树中只有重子节点和轻子节
2020-10-06 20:29:41
267
原创 树的重心
重心的定义:一颗无根树,选择某一个结点,该结点相对于其它未被选择的结点来说,拥有的最大子树的节点数是最少的。性质:1.以树的重心为根时,所有子树的大小都不超过整棵树大小的一半。2.树中所有点到某个点的距离和中,到重心的距离和是最小的;如果有两个重心,那么到它们的距离和一样。3.把两棵树通过一条边相连得到一棵新的树,那么新的树的重心在连接原来两棵树的重心的路径上。4.在一棵树上添加或删除一个叶子,那么它的重心最多只移动一条边的距离。在这里插入代码片#include <bits/stdc+
2020-10-05 18:47:56
115
原创 POJ 1182 食物链(并查集)
**题目描述:**动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。1)
2020-08-03 16:02:50
175
原创 hdoj多校 Deliver the Cake(拆点+dijkstra)
题意:有n个点,m条边的无向带权图,每一个点都有一个字母类型,每个点的类型有三种L,R,M。L能转R,R转L,且需要花费x。从L结点到R结点需要多花费x(要转换),L或R结点到M结点,M结点可以为R结点也可以为L结点,所以 在进过M结点时你要选择是变R还是L。所以要进行拆点。注意: 当起点为M时,你需要增加一个0结点,连接到起点拆分之后的两个结点。当终点为M时,同理增加一个2*n+1结点连接终点拆分之后的两个结点。拆分:若u和v结点状态同时为L或R: 在u和v之间连一条权值为w的无向边。若.
2020-08-03 16:02:04
219
原创 2020杭电多校第三场 1004 Tokitsukaze and Multiple
Problem DescriptionTokitsukaze has a sequence of length n, denoted by a.Tokitsukaze can merge two consecutive elements of a as many times as she wants. After each operation, a new element that equals to the sum of the two old elements will replace them,
2020-08-01 11:04:11
228
原创 组合数学 + 并查集 - Little W and Contest - HDU 6795
题意:就是有两类人,第一类人的能量值为1,第二类人的能量值为2,你要从中选择三个人且加起来的能量值不能小于5而且这三个人必须是互不相识的。还需满足的要求:1.开始时他们互不相识,认识是有传递性的 比如A认识B B认识C 那么A也认识C2.每次输入两个整数,输入之后代表这两个人认识了,输入n-1次,使得最后每个人都互相认识。样例输入:152 2 2 1 14 51 42 13 2样例输出:77300分析:把有关系的放在一个集合通过并查集,并且用两个数组分别记录每一个集.
2020-08-01 10:54:56
105
原创 牛牛晾衣服
二分+贪心题目描述牛牛有n件带水的衣服,干燥衣服有两种方式。 一、是用烘干机,可以每分钟烤干衣服的k滴水。 二、是自然烘干,每分钟衣服会自然烘干1滴水。 烘干机比较小,每次只能放进一件衣服。 注意,使用烘干机的时候,其他衣服仍然可以保持自然烘干状态,现在牛牛想知道最少要多少时间可以把衣服全烘干。题目链接思路:二分查找答案,对每一次二分出的时间进行判断是否可以晾干所有衣服。判断x时间内是否可以晾干衣服:如果第i件衣服的雨水小于或等于x 则直接自然烘干对于第i件衣
2020-07-18 18:09:46
173
原创 AtCoder Beginner Contest 172 D - Sum of Divisors
题目链接题目描述:思路:就采用跟素数筛选法差不多的方法,爆力求解,从2开始一直到n,求出每个数乘以1,2,3…直到乘得的结果小于n,以所得到的结果的数组下标加1,用一个数组记录每个数的因子个数.代码#include <bits/stdc++.h>#define ll long longusing namespace std;int a[10000001];int main(){ ios::sync_with_stdio(0);cin.tie(0), cout.t
2020-07-14 22:22:02
195
原创 素数快速筛选法+埃式筛法+欧拉筛
思路:首先先把所有的奇数都假设为素数,偶数都为合数(除2外),剩下的奇数如果是合数的话,那么该奇数一定是某个比它小的奇数的倍数举例:求n以内的素数首先把 1 3 5 7 9 11 13 15 17…假设为素数然后从3开始一直到n 判断某个数是否为素数,如果为素数就将它依次乘以2,3…所得到的结果(不超过n)置为素数,如果该数不是素数,则不需要进行乘2,3… 因为该数的倍数 会由该数的某个素数因数判断其为合数得来。**代码**#include <bits/stdc++.h>
2020-07-14 21:35:14
306
原创 牛客编程巅峰赛S1赛季第1场 - 青铜&白银局
比赛链接**B - 魔法数字**思路就采用bfs。代码class Solution {public: /** * 返回最后要输出的答案 * @param n int整型 表示牛牛的数字 * @param m int整型 表示牛妹的数字 * @return int整型 */ int solve(int n, int m) { int dist[10001];//记录访问到的数字的步数 queue<int>
2020-07-11 11:42:17
105
原创 AtCoder Contest 173 E - Multiplication 4
题目链接**大体思路**N个数取K个数的积最大,分为四种情况第一种:全是正数,则取最大的K个数的积第二种:没有正数,则取最大的K个数的积第三种:有正有负,按照绝对值排列,对最大的K个的值进行判断,如果值为正,则直接输出,如果为负则判断前N-K个数中最大的正数于后K个数中的最小负数交换,将前N-K个数中最大的负数于后K个数中最小的正数交换,比较大小即可某篇博客的解法:#include <iostream>#include <stdio.h>#include <
2020-07-08 20:06:17
166
原创 div2贪心+建树
C. Linova and KingdomWriting light novels is the most important thing in Linova’s life. Last night, Linova dreamed about a fantastic kingdom. She began to write a light novel for the kingdom as soon ...
2020-04-16 16:04:35
142
原创 牛客算法周练2 D题 树建立 思维
**D. 小H和游戏**链接:(https://ac.nowcoder.com/acm/contest/5203/D)题目描述小H正在玩一个战略类游戏,她可以操纵己方的飞机对敌国的N座城市(编号为1~N)进行轰炸敌国的城市形成了一棵树,小H会依次进行Q次轰炸,每次会选择一个城市A进行轰炸,和这座城市距离不超过2的城市都会受损(这里距离的定义是两点最短路径上的边数),轰炸结束后,小H还想知...
2020-04-15 11:41:34
141
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人