暑假集训
THE END GAME
这个作者很懒,什么都没留下…
展开
-
暑假集训日记——6.30(分块)
分块,莫队数列分块入门 1/*我们给每个块设置一个加法标记(就是记录这个块中元素一起加了多少),每次操作对每个整块直接O(1)标记,而不完整的块由于元素比较少,暴力修改元素的值。每次询问时返回元素的值加上其所在块的加法标记。*/#include <iostream>#include<cstdio>#include<algorithm>#inc...原创 2019-07-06 14:06:26 · 96 阅读 · 0 评论 -
暑假集训日记——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 · 169 阅读 · 0 评论 -
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 · 104 阅读 · 0 评论 -
暑假集训日记——7.24(牛客+一堆算法)
筱玛爱游戏题解:这题需要一些线性代数的知识每个数可以看做一个 向量(即每一维都是 0 或 1 的向量)这时数的异或就相当于向量的加法那么集合存在一个非空子集异或和为0即为这个向量组线性相关那么两个人在博弈过程中每一步都需保证向量组线性无关那么这个向量组最大的大小即为所有向量的秩而由线性代数基本结论,若当前选出的向量线性空间维数小于所有向量的秩,一定能加入一个另外的向量,使得向量组仍...原创 2019-07-28 13:46:15 · 95 阅读 · 0 评论 -
暑假集训日记——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 · 108 阅读 · 0 评论 -
暑假集训日记——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 · 141 阅读 · 0 评论 -
暑假集训日记——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 · 164 阅读 · 0 评论 -
暑假集训日记——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 · 136 阅读 · 0 评论 -
暑假集训日记——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 · 108 阅读 · 0 评论 -
暑假集训日记——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 · 151 阅读 · 0 评论 -
暑假集训日记——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 · 81 阅读 · 0 评论 -
卡特兰数和斯特林数
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 · 270 阅读 · 0 评论 -
暑假集训日记——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 · 175 阅读 · 0 评论 -
暑假集训日记——8.12(codeforce)
E. Compress Words题意:AmugaeAmugaeAmugae有一个由n个单词组成的句子。他想把这个句子压缩成一个词。AmugaeAmugaeAmugae不喜欢重复,所以当他将两个单词合并成一个单词时,他删除第二个单词中与第一个单词后缀重合的最长前缀。例如,他将samplesamplesample和pleasepleaseplease合并成sampleasesampleasesa...原创 2019-08-13 14:20:18 · 147 阅读 · 0 评论 -
暑假集训日记——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 · 101 阅读 · 0 评论 -
暑假集训日记——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 · 114 阅读 · 0 评论 -
暑假集训日记——8.5(博弈)
“ImpartialCombinatorialGames”(以下简称ICG)。“Impartial Combinatorial Games”(以下简称ICG)。“ImpartialCombinatorialGames”(以下简称ICG)。满足以下条件的游戏是ICGICGICG:1、有两名选手;2、两名选手交替对游戏进行移动(movemovemove),每次一步,选手可以在(一般而言)有限的合...原创 2019-08-06 15:38:39 · 92 阅读 · 0 评论 -
暑假集训日记——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 · 163 阅读 · 0 评论 -
暑假集训日记——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 · 115 阅读 · 0 评论 -
暑假集训日记——7.7(月赛+scc习题)
A - 迷宫城堡 题解:两两可达,就是判断一下这个图是否是一个强联通图,模板题。#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int, int> pii;typedef pair<ll, int> pli;typedef pair<...原创 2019-07-08 18:31:15 · 433 阅读 · 0 评论 -
暑假集训日记——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 · 116 阅读 · 0 评论 -
权值线段树/主席树
权值线段树:解释:就是一种可以维护数字权值的线段树应用:逆序数,维护数字的出现次数,(主席树的基础)例题:逆序队#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 · 133 阅读 · 0 评论 -
暑假集训日记——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 · 133 阅读 · 0 评论 -
暑假集训日记——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 · 960 阅读 · 0 评论 -
暑假集训日记——7.9/7.10(scc习题+codeforce)
F. Simple Cycles Edges题解:要求求简单环,所以可以用tarjan求出点双连通分量,然后判断这个点双连通分量中的点的个数是否等于边的条数(有且仅有边的条数等于点的个数,才是个简单环),如果是的话把连通分量中的所有边存到一个数组中,最后找出所有边之后对边的编号进行排序输出就好了。#include<bits/stdc++.h>using namespace st...原创 2019-07-10 15:48:57 · 372 阅读 · 0 评论 -
暑假集训日记——6.29(快速幂、前缀和、差分、二分、三分)
快速幂、前缀和、差分、二分、三分ps:一如既往的低效率呢,一天五道题,还欠一个“三分“概念…还得继续努力啊……目标:高效率的日常,cf rate++ (Fighing)B - Monitor 题解:由于数据的量比较大,所以二维数组存不下,所以采用二维指针动态分配内存解决其余的就是基本的差分问题了#include<algorithm>#include<cstdi...原创 2019-07-06 14:07:47 · 164 阅读 · 0 评论 -
暑假集训日记——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 · 74 阅读 · 0 评论 -
暑假集训日记——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 · 425 阅读 · 0 评论 -
暑假集训日记——7.6(scc)
E. Count Pairs题解:#include <bits/stdc++.h>#define N 300500using namespace std;map<int,long long> mm;int n,p,K,a[N];long long Ans;int main(){ scanf("%d%d%d",&n,&p,&K);...原创 2019-07-07 08:49:36 · 187 阅读 · 0 评论 -
DFS序/树的遍历
二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。前序遍历若树为空,则空操作返回。否则,先访问根节点,然后前序遍历左子树,再前序遍历右子树。(W)型 (中 左 右)中序遍历若树为空,则空操作返回。否则,从根节点开始(注意并不是先访问根节点),中序遍历根节点的左子树,然后是访问根节点,...转载 2019-03-08 20:27:33 · 217 阅读 · 0 评论 -
暑假集训日记——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 · 146 阅读 · 0 评论 -
暑假集训日记——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 · 100 阅读 · 0 评论 -
暑假集训日记——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 · 149 阅读 · 0 评论 -
暑假集训日记——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 · 184 阅读 · 0 评论 -
暑假集训日记——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 · 135 阅读 · 0 评论 -
暑假集训日记——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 · 142 阅读 · 0 评论