自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 网络流模板

最大流int head[N], ver[N], Next[N], edge[N];int tot, s, t, n, m;int d[N], now[N];void init() { memset(head, 0, sizeof head); tot = 1;}void add(int u, int v, int w) { ver[++tot] = v, edge[tot] = w, Next[tot] = head[u], head[u] = tot; ver[++tot] = u,

2021-08-11 19:20:21 56 3

转载 2021-08-06

割点:vector<long long>g[N];int dfn[N], low[N], cut[N], deep, tag[N], sz[N];//dfn记录深度,low记录最近的根节点的深度,cut保存割点,sz记录割点消失后其中一个子连通块的点数个数。// v:当前点 r:本次搜索树的rootvoid tarjan(ll u, ll r) { //u是遍历到的节点. dfn[u] = low[u] = ++deep; ll child = 0; for (

2021-08-06 10:30:52 55

原创 组合数(逆元)模板

const int maxn = 5555, inf = 0x3f3f3f3f, mod = 1e9 + 7;ll fac[maxn*3];ll inv[maxn*3];int C(int m, int n){ if (m > n) return -1; return fac[n] * inv[m] % mod * inv[n - m] % mod;}ll quick_mod(ll n, ll m){ ll tmp = n % mod;

2021-08-05 14:07:42 83

原创 MK算法bfs优化模板O(n3)

#pragma warning(disable:4996)#include<iostream>#include<string.h>#include<queue>#include<stack>#include<math.h>#include<map>#include<set>#include<algorithm>#include<sstream>#include<vector&

2021-07-22 19:52:45 177

原创 2021-04-11

L. Queries on a Stringtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputA string s is given. Also there is a string p, and initially it is empty. You need to perform q operations of kind «add a lette

2021-04-11 01:16:22 63

原创 并查集---删除集合中的某个元素

链接:https://ac.nowcoder.com/acm/problem/15696来源:牛客网It’s universally acknowledged that there’re innumerable trees in the campus of HUST.Thus a professional tree manager is needed. Your task is to write a program to help manage the trees.Initially, there

2021-04-02 23:35:09 235

原创 关押罪犯(分多个集合!!)

链接:https://ac.nowcoder.com/acm/problem/16591来源:牛客网S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力

2021-04-02 15:32:02 82

原创 最短Hamilton距离(二进制压状dp)

描述:给定一张n(n<=20)个点的带权无向图,点从0~n-1标号,求起点0到终点n-1的最短Hamilton路径。Hamilton路径:从0~n-1重复不漏的经过每一个点恰好一次。暴力做法:O(nn!)二进制压状dp:O(nn*2^n).关键数组dp[1<<20][20];在数组dp[i,j]中i通过二进制表示。i上的每一位数为一个节点,每一位数的值为0或1,表示未经过该节点和经过该节点。j为在遍历时每个节点是时,当时处于该节点,数组的值为目前0~j的最短路径。例如:dp[1

2021-04-01 22:21:24 276

原创 Being a Good Boy in Spring Festival

题目:分析:所有堆的异或为0时,先手必败;某个堆取出多少个石子时可以让所有堆的石子数异或值为0让异或为0的方法:遍历每一堆,对于遍历到的某一个堆a[i],从a[i]中拿走每个堆的异或all^a[i]那么a[i]剩下的就是(a[i]-all异或a[i]),最后得到all=all异或(a[i]-all^a[i])=0。显然,如果最开始所有堆的异或不为0,那么就可以从某一堆中取一些石头,让所有堆异或为0,那么被拿石头的那一堆就得满足a[i]>all异或a[i]才能从a[i]中拿走all^a[i]个

2021-02-20 16:37:52 112

原创 2021-01-25

线段树求此类问题关键找到要维护什么!!建立树struct tree{ int l, r;//树节点的左端点和右端点。结构体中可能还包含节点的一些特性,如区间的和sum等等。}void build(int l, int r, int i) {//建立数据的左端点为l,右端点为r的节点。在main函数中第一次传入的i通常为1 node[i] = {l, r}; int mid = l + r >> 1; build(l, mid, i << 1); build

2021-01-25 22:22:16 59

原创 2021-01-22

二分求最值今日的二分求最值搞得我头有点大,主要题目都是英文的,都没怎么看明白题目(最小值最大&&最大值最小)。先来一波自己的理解23333:题目一般要求在一段长度上面取走某个点或者是添加某个点,然后求出剩下的点的最大值的最小情况或最小值的最大情况。要二分得先排个序,在进行二分,第一次对线段的头和尾进行二分,然后逐渐进行二分,每一次二分的时候都要判断二分得到的值是否符合条件,如果符合条件那么就让二分的值更小或更大(具体看题),否则反之。如何判断符合条件呢?就要在外面设置一个函数,设jud

2021-01-23 00:12:51 104 1

原创 2021-01-21

查并集(第二天集训时光结束了,小累小累)合并父节点:`void join(int x, int y) {//将x的父节点与y的父节点合并 if (cfind(x) != cfind(y)) { fa[cfind(x)] = cfind(y);//把x的最终父节点改为y的最终父节点,可实现将x路径与y路径合并。 }}找父亲:int cfind(int x) {//普通查找 int r = x; while (fa[r] != r) { r = fa[r]; } return r

2021-01-21 23:28:42 70

原创 2021-01-20

map题目:水果题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1263直接输出map中的元素通过:(begin()+n)->first或(begin()+n)->second(第一个键值与第二个键值)#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<string>#inc

2021-01-20 21:55:46 59

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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