- 博客(182)
- 收藏
- 关注
原创 补图的连通块
求解一个图的补图的连通块/*求补图的连通块*/#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = 1e5+5; set<int>G[N];int n,m;set<int>s;int vis[N];set<int>::itera...
2019-11-13 17:17:14
399
原创 CF685B Kay and Snowflake
CF685B Kay and Snowflake题意:输入一棵树,判断每一棵子树的重心是哪一个节点.题解:首先关于重心:一棵树将某个点去掉,会把这棵树分为好几块,以最大的一块的结点个数作为maxsizemaxsizemaxsize,这样的话每一个点都对应着一个maxsizemaxsizemaxsize,这些值当中最小的那个所对应的结点即为树的重心。定义:Gson[i]Gson[i]Gson...
2019-10-29 18:00:14
220
原创 STL常用函数的操作
vectorvectorvectorvector<int>v3;//插入v3.insert(v3.begin(),3);//迭代器+值//删除v3.erase(v3.begin()+2);//删除第2个元素,从0开始计数v3.erase(v3.begin()+1,v3.begin()+3);//删除第1个到第3个元素区间的所有元素v3.pop_back();//清...
2019-09-07 14:40:59
204
转载 暑假集训日记——8.18(codeforce)
D. Shortest Cycle题意:一个环至少有333个点,aaa&b!b!b!=000 的两个点间有一条边,求最小环题解:floyedfloyedfloyed求解最小环O(n3)O(n^3)O(n3)emmm想到了范围问题,然后就使劲考虑怎么建环,emmm赛后发现有现成的模板…其实就是DP。#include<bits/stdc++.h>#define mp m...
2019-08-30 22:10:11
120
原创 暑假集训日记——8.18(codeforce)
E - 染色 题意:给定一棵有 nnn个节点的无根树和 mmm个操作,操作有 222类:1、将节点 aaa到节点 bbb路径上所有点都染成颜色 ccc2、询问节点 aaa到节点 bbb路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”“112221”“112221”由3段组成:“11”、“222”和“1”“11”、“222”和“1”“11”、“222”和“1”。请你写一...
2019-08-20 08:42:27
203
原创 暑假集训日记——8.17(codeforce)
C. Watching Fireworks is Fun题意:一条街道有 nnn个区域。 从左到右编号为 111到 nnn。 相邻区域之间的距离为 111。在节日期间,有 mmm次烟花要燃放。 第 iii次烟花燃放区域为aia_iai,幸福属性为bib_ibi,时间为tit_iti。ti⩽ti+1t_i⩽t_i+1ti⩽ti+1如果你在第 iii次烟花发射时在x(1⩽x⩽n)x(1...
2019-08-18 09:11:20
187
原创 暑假集训日记——8.15(codeforce)
题意:从坐标(0,0)(0, 0)(0,0)到(n,0)(n, 0)(n,0)的折线,这条折线每向右延伸一个单位长度,高度要么不变,要么+1+1+1,要么−1-1−1,已知 nnn,求这种折线种数题解:卡特兰数+组合数如果只能上下就是卡特兰数,但还存在平移操作。原式: ans[k]=C2kk×Cn2kk+1ans[k]=\frac{C_{2k}^{k}\times C_{n}^{2k}}{...
2019-08-17 08:32:08
130
转载 小A的最短路
LCA算法#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <map>#include <queue>#include <vector>#include <cstring>...
2019-08-15 14:35:23
110
原创 暑假集训日记——8.14(codeforce)
E. 3-cycles题意:使得图中不存在长度为3的环,求满足条件的最多边的数目题解:二部图的任意两点的最小环长度大于3#include<bits/stdc++.h>#define mp make_pair#define se second#define fi firstusing namespace std;typedef long long ll;typed...
2019-08-15 14:27:34
269
原创 暑假集训日记——8.13(codeforce)
A. Integer Sequence Dividing题意:给定一个整数序列1 2…n。你必须把它分成两个集合A和B每个元素都属于一个集合,|sum(A)−sum(B)| is minimum possible.题解:这种一看题面不是很难, 再一看复杂度1e9的题, 一定是规律题…哎#include<bits/stdc++.h>#define mp make_pair#...
2019-08-14 12:41:05
239
原创 暑假集训日记——8.12(codeforce)
E. Compress Words题意:AmugaeAmugaeAmugae有一个由n个单词组成的句子。他想把这个句子压缩成一个词。AmugaeAmugaeAmugae不喜欢重复,所以当他将两个单词合并成一个单词时,他删除第二个单词中与第一个单词后缀重合的最长前缀。例如,他将samplesamplesample和pleasepleaseplease合并成sampleasesampleasesa...
2019-08-13 14:20:18
249
原创 暑假集训日记——8.9(codeforce)
C. Ayoub and Lost Array题意:给出一个数组的长度以及数组中元素的取值范围,问:有多少种方案使得数组的元素的总和为三的倍数。题解:动态规划dp[i][j]dp[i][j]dp[i][j]表示 由 iii个数的和余 jjj的组合有多少组dp[i][0]=dp[i−1][0]∗a+dp[i−1][1]∗c+dp[i−1][2]∗bdp[i][0]=dp[i-1][0]*a...
2019-08-11 20:21:08
218
原创 卡特兰数和斯特林数
1.卡特兰数:一种常用的组合数,前几项是1,1,2,5,14,42…..1,1,2,5,14,42…..1,1,2,5,14,42…..递推公式:f(n)=∑i=0n−1f(i)×f(n−i−1)f(n)=\sum_{i=0}^{n-1}f(i)\times f(n-i-1)f(n)=∑i=0n−1f(i)×f(n−i−1) ,f(0)=1,f(1)=1,f(0)=1,f(1)=1,f(0...
2019-08-11 15:52:02
340
原创 暑假集训日记——8.7(codeforce)
D. Tokitsukaze, CSL and Stone Game题意:有n堆石子,两个人轮流取石子,一次只能从某堆里取一颗。如果某个人取的时候已经没有石子,或者取完后又两堆石子个数相同(个数为0也算)。假如两人都足够聪明,问谁能赢。题解:博弈难点:先手第一步就输的情况比较多,不容易考虑全举例说明第一步就输:(4种)0,0,30,0,30,0,3 /// 3,3,33,3,33,3,...
2019-08-10 19:31:42
193
原创 暑假集训日记——8.8(容斥+概率)
E - Card Collector 题意:每包里面最多只有一张卡片(可能没有),要集齐n张不同的卡片(1<=n<=20)问集齐nnn张卡片要买的包数期望题解:设集齐第 iii张的天数需要 dididi天求解买 nnn张卡片需要的包数:d1Ud2Ud3...Udnd1 U d2 U d3 ... U dnd1Ud2Ud3...Udn-111,所以容斥公式求解概率和期望:(...
2019-08-09 01:36:59
192
原创 暑假集训日记——8.6(codeforce)
D. Suitable Replacement题意:把 S串中的?转化为小写字母,使得字符串 S拥有最多的 字符串T的不相交字串,(S中的字母可以互换顺序)题解:贪心#include<bits/stdc++.h>#define mp make_pairusing namespace std;typedef long long ll;typedef pair<int...
2019-08-07 12:15:56
202
原创 暑假集训日记——8.5(博弈)
“ImpartialCombinatorialGames”(以下简称ICG)。“Impartial Combinatorial Games”(以下简称ICG)。“ImpartialCombinatorialGames”(以下简称ICG)。满足以下条件的游戏是ICGICGICG:1、有两名选手;2、两名选手交替对游戏进行移动(movemovemove),每次一步,选手可以在(一般而言)有限的合...
2019-08-06 15:38:39
141
原创 KMP算法
从头到尾彻底理解KMP(2014年8月22日版)Knuth−Morris−PrattKnuth-Morris-PrattKnuth−Morris−Pratt字符串查找算法,简称为“KMP算法”“KMP算法”“KMP算法”,常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由DonaldKnuthDonald KnuthDonaldKnuth、VaughanPrattVaughan Pr...
2019-08-05 17:03:15
133
原创 暑假集训日记——8.4( 点分治+康拓展开+组合数)
点分治详解:大佬的博客P3806 【模板】点分治1模板代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define inf 999999999 int n,m,len=0,Size;struct node{int x,y,z,next...
2019-08-05 12:04:23
171
原创 暑假集训日记——8.3( 树链剖分+树形DP)
树链剖分:大佬的博客 大神的博客题目:【模板】树链剖分学长的板子:#include <bits/stdc++.h>using namespace std;const int N = 2e5+10;int mod = 1e9+7;int n, m, r, p;template<typename T>struct Heavy_Light_Decompositi...
2019-08-04 09:59:24
212
原创 数据结构——树以及线段树
#include<bits/stdc++.h>using namespace std;const int N=1e6+5;int a[N];int lazy[N*4];int tree[N*4];void push_up(int rt){ tree[rt]=tree[rt<<1]+tree[rt<<1|1];}void push...
2019-08-04 09:34:56
340
1
原创 暑假集训日记——8.2
心血来潮整理一下,刚入学时候做的题威尔逊定理:(p-1)!%p=p-1哥德巴赫猜想:大于二的偶数可以分解为两个素数之和;大于七的奇数可以分解为三个素数之和;(是一定可以分解成三个素数之和,也有可能分解成两个)分解成两个必然有一个是2,其他就是至少三个。大素数的判定和质因子分解#include<stdio.h>#include<string.h>#inclu...
2019-08-02 22:48:22
145
原创 暑假集训日记——8.1(牛客+codeforce)
容斥原理的应用正难则反,合取式 的情况不好求,就转化为求解 总数-容斥小y的质数题解:容斥原理#include<bits/stdc++.h>#define mp make_pairusing namespace std;typedef long long ll;typedef pair<int, int> pii;typedef pair<ll,...
2019-08-01 16:56:30
223
原创 暑假集训日记——7.31(牛客+codeforce)
C. MP3题解:离散化15分钟写完代码,发现卡在test 4,到比赛结束都没找出来错误,然后发现自己漏看了一个条件…然后改了一个数字,A了,emmmm,我能说啥呢。距离1700还有372分——距离暑假结束还有30天#include<bits/stdc++.h>#define mp make_pairusing namespace std;typedef long lo...
2019-08-01 09:23:12
172
原创 暑假集训日记——7.30(牛客)
【一】n的约数题解:2)然后很容易发现一个规律:如果两个数的约数个数相同,那么指数大小按递减顺序排列的话所获得的数更小。举个例子:6个约数:12=2^2 *3, 18=2 * 3^224个约数:360=2^3 *3^2 *5, 540=2^2 * 3^3 *5因为我们关注的就是寻找最大数目的约数,所以不需要考虑这个满足条件的数字具体是什么,所以直接考虑如何构造约数,使得原数字尽量小,...
2019-07-30 21:07:52
191
原创 暑假集训日记——7.29(牛客+数论)
DongDong坐飞机题解:分层图最短路,dis[ i ][ j ]记录下到达 i点 j次打折的最短路然后Dijkstra就可解了。注意:1.因为是分层的所以,一个节点会多次遍历所以不必标记2.输入输出用快读,或者scanf,居然显示的数据错误,而不是超时…卡在80%AC代码#include<bits/stdc++.h>#include<queue>#de...
2019-07-30 08:53:55
176
原创 暑假集训日记——7.28(牛客)
筱玛爱阅读题解:状压dp1.书的标签随便贴,所以从大到小排序2.dp[i]表示买前 i 本可以优惠的最大价格状态转移方程 dp[i]=max(dp[i],dp[j]+a[cnt[i]]); 表示新买了这本书是否可以凑够一个优惠方案,并且不和之前的优惠方案相冲突dp好难…#include<bits/stdc++.h>using namespace std;const in...
2019-07-29 10:13:55
147
原创 暑假集训日记——7.24(牛客+一堆算法)
筱玛爱游戏题解:这题需要一些线性代数的知识每个数可以看做一个 向量(即每一维都是 0 或 1 的向量)这时数的异或就相当于向量的加法那么集合存在一个非空子集异或和为0即为这个向量组线性相关那么两个人在博弈过程中每一步都需保证向量组线性无关那么这个向量组最大的大小即为所有向量的秩而由线性代数基本结论,若当前选出的向量线性空间维数小于所有向量的秩,一定能加入一个另外的向量,使得向量组仍...
2019-07-28 13:46:15
147
原创 暑假集训日记——7.16(单调栈/单调队列+codeforce)
C - Trade 题解:dp+单调队列#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<vector>#include<cmath>#include<queue>#include<stac...
2019-07-27 13:45:26
274
原创 暑假集训日记——7.23(codeforce)
D. Beautiful Graph二分图+联通分支+快速幂…我是打算这么求得,但好像太麻烦了…#include <bits/stdc++.h>using namespace std;const int N = int(3e5) + 999;const int MOD = 998244353;int n, m;vector <int> g[N];in...
2019-07-27 13:41:14
150
原创 暑假集训日记——7.21(区间dp+codeforce)
D. Prime Graph题解:#include <iostream>using namespace std;bool prime(int x) { if (x < 2) return false; for (int i = 2; i*i <= x; ++i) { if (x%i == 0) return false; ...
2019-07-22 15:14:44
209
原创 暑假集训日记——7.20(GCD+codeforce)
A - Maximum GCD 0 与 7的 最大公约数是 7,范围错误的话会出错#include<bits/stdc++.h>#define mp make_pairusing namespace std;typedef long long ll;typedef pair<int, int> pii;typedef pair<ll, int> ...
2019-07-21 14:10:46
132
原创 暑假集训日记——7.18(codeforce)
C. Basketball Exercise题解:我也是醉了,我说我咋连一道简单dp的题都写不对…题意理解错了…写成了:单调递减子序列的最大和:#include<bits/stdc++.h>#define mp make_pairusing namespace std;typedef long long ll;typedef pair<int, int> ...
2019-07-20 10:04:17
225
原创 暑假集训日记——7.15(ST表+单调栈/单调队列+codeforce)
C. From S To T模拟题#include<algorithm>#include<cstdio>#include<cmath>#include<iostream>#include<cstring>#include<functional>#include<set>#include<ma...
2019-07-16 09:57:31
491
原创 暑假集训日记——7.14(ST表)
高级数据结构(2)、ST表一维:#include<bits/stdc++.h>using namespace std;const int maxn=1e5+7;int st[maxn][20],a[maxn],n;void init(int n){ for(int i=0;i<n;i++) st[i][0]=a[i];//初始化,从i点开始2^j长度的...
2019-07-15 11:52:57
96
原创 暑假集训日记——7.13(单调栈/单调队列+codeforce)
C. Tokitsukaze and Discard Items按照题意模拟即可…可惜B题就做懵了#include <bits/stdc++.h>using namespace std;typedef long long ll;const int MAX=1e5+10;ll p[MAX];int main(){ ll n,m,k; scanf("%lld%lld%l...
2019-07-13 16:42:30
1012
原创 暑假集训日记——7.11(codeforce+二分图+网络流)
B. The Golden Age题解:没啥题解,暴力,暴力出奇迹#include<algorithm>#include<cstdio>#include<cmath>#include<iostream>#include<cstring>#include<functional>#include<set&g...
2019-07-13 12:02:34
176
原创 权值线段树/主席树
权值线段树:解释:就是一种可以维护数字权值的线段树应用:逆序数,维护数字的出现次数,(主席树的基础)例题:逆序队#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int, int> pii;typedef pair<ll, int> pli;...
2019-07-13 12:00:42
179
原创 暑假集训日记——7.9/7.10(scc习题+codeforce)
F. Simple Cycles Edges题解:要求求简单环,所以可以用tarjan求出点双连通分量,然后判断这个点双连通分量中的点的个数是否等于边的条数(有且仅有边的条数等于点的个数,才是个简单环),如果是的话把连通分量中的所有边存到一个数组中,最后找出所有边之后对边的编号进行排序输出就好了。#include<bits/stdc++.h>using namespace st...
2019-07-10 15:48:57
404
原创 暑假集训日记——7.8(二分图+网络流)
二分图的定义:二分图求最大匹配算法:匈牙利算法讲解代码模板:#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int, int> pii;typedef pair<ll, int> pli;typedef pair<ll, ll&g...
2019-07-08 21:01:38
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人