随笔分类 - ACM——模版
摘要:题目链接 解题报告: 1 #include<bits/stdc++.h> 2 using namespace std; 3 struct cmp { 4 bool operator()(int a,int b){ 5 return a>b; 6 } 7 }; 8 int a[110]; 9 int
阅读全文
摘要:时间限制:1.0s 内存限制:256.0MB 问题描述 一个有向图,求1到N的最大流 输入格式 第一行N M,表示点数与边数 接下来M行每行s t c表示一条从s到t的容量为c的边 输出格式 一个数最大流量 样例输入 6 101 2 41 3 82 3 42 4 42 5 13 4 23 5 24
阅读全文
摘要:发现官网给的免费蓝桥杯VIP5月初就过期了,从今天开始每天抽空做些题目 试题 资源限制、时间限制:1.0s 内存限制:256.0MB 问题描述 给定A, B, P,求(A^B) mod P。 输入格式 输入共一行。 第一行有三个数,N, M, P。 输出格式 输出共一行,表示所求。 样例输入 2 5
阅读全文
摘要:学习自:https://www.luogu.org/blog/user28084/solution-p3369 简述:看了一个下午+晚上搞出来的东西。 题目: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 x 数; 删除 x 数(若有多个相同的数,因只删除一个)
阅读全文
摘要:题目: 有 n 个元素,第 i 个元素有 ai 、bi 、ci 三个属性,设 f(i) 表示满足 aj ≤ ai 且 bj ≤ bi 且 cj ≤ ci 的 j 的数量。对于 d∈[0,n),求 f(i)=d 的 i 的数量。 题解: 可以对第一维a进行排序(O(nlogn)),然后对第二维进行归并
阅读全文
摘要:简述: 解决线段树无法求区间第k大的问题 代码: 1 ///主席树模版(查询区间第k大) 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <algorithm> 6 #include <cctype>
阅读全文
摘要:简介: 做hdu4300看到的题解,除了kmp还可以用字符串hash做 模板: 1 typedef unsigned long long ull; 2 const int maxn=100000+10; 3 const ull base = 163; 4 char s[maxn],t[maxn];
阅读全文
摘要:摘自博客:https://blog.csdn.net/VictoryCzt/article/details/85268376 博主讲得十分的清楚 以下是带有注释的代码: 1 /* 2 这是一份自用的树链剖分模板, 3 自己加的注释,便于更好的理解 4 该模板支持的操作: 5 1.换根 6 2.一条链
阅读全文
摘要:关于子串的查找 1 char a[maxn],b[maxn]; 2 int lena,lenb,net[maxn]; 3 void getnet() { ///得到next数组 4 lenb=strlen(b); 5 net[0]=-1; 6 int i=0,j=-1; 7 while(i<lenb
阅读全文
摘要:题目: 给出一个有向图,求它的最小环。 有向图的环应至少含2个顶点,而无向图的一个环至少含3个顶点。 简述: 如果熟悉floyd算法的原理,那么便知道,每次循环都是由最外层的k去松弛点与点之间的距离的,那么对于当前dis[i][j]还未加入k进行松弛,如果有dis[i][j]+map[i][k]+m
阅读全文
摘要:模板: 1 int vis[maxn],dfn[maxn],low[maxn]; 2 int n,m,a[maxn][maxn],lay; 3 #define mp make_pair 4 #define fi first 5 #define se second 6 vector<pair<int,
阅读全文
摘要:简述:从0号点开始,更新每个点能到达的最早时间戳,当 dfn[u]<=low[v] 时,u为割点 代码: 1 ///根结点为割点的条件:孩子数大于1 2 int vis[maxn],dfn[maxn],low[maxn]; 3 int n,m,a[maxn][maxn],lay,son[maxn];
阅读全文
摘要:简介:用tarjan找割点,当dfn[u]<=low[v]时,证明当前的u为割点,注意割点可能存在于多个点双连通分量中,所以存点的时候要格外注意。如果当前遍历到的v已在栈中,可以用dfn[v]更新low[u]。 ps:两点一边的图也为一个点双连通分量。 模板: 将下面的代码略微改动即可 例题: hd
阅读全文
摘要:简介:还是采用tarjan缩点,如果边(u,v)是桥,那么显然dfn[v]=low[v],则v此时栈中的集合为一个边连通分量。 代码: 1 void tarjan(int x,int &sccnum,int from) { 2 sta[++cnt]=x; 3 vis[x]=1; 4 dfn[x]=+
阅读全文
摘要:简述: 用dfn作为时间戳,对图进行dfs并对路径上的点入栈,求出每个点可以访问到的最早的时间戳,此时栈中从这个点开始的点便为一个强连通分量。 模板: 1 void tarjan(int x,int lay,int &sccnum) { 2 low[x]=lay; 3 dfn[x]=lay; 4 v
阅读全文
摘要:杜教板子(BM) 线性递推式 解决传统线性递推式神器 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <algorithm> 5 #include <vector> 6 #include <string>
阅读全文

浙公网安备 33010602011771号