
BZOJ/LOJ/HDU/ZOJ/UVA/UOJ等
LauZiyang
exploring
展开
-
省选专练之GCD生成树
非常著名的一道经典题。考虑一个性质:如果两个点GCD相同必然更优。于是我们有了一些点权互不相同的点。发现点权并不大,从大到小枚举点权。用并查集维护联通性。#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algo...原创 2018-10-11 07:49:19 · 300 阅读 · 0 评论 -
省选专练之容斥【BZOJ4767】两双手
老W是个棋艺高超的棋手,他最喜欢的棋子是马,更具体地,他更加喜欢马所行走的方式。老W下棋时觉得无聊,便决定加强马所行走的方式,更具体地,他有两双手,其中一双手能让马从(u,v)移动到(u+Ax,v+Ay)而另一双手能让马从(u,v)移动到(u+Bx,v+By)。小W看见老W的下棋方式,觉得非常有趣,他开始思考一个问题:假设棋盘是个无限大的二维平面,一开始马在原点(0,0)上,若用老W的两种方式进行...原创 2018-09-24 17:06:28 · 358 阅读 · 0 评论 -
点分治 【BZOJ3784】树上路径
给定一个N个结点的树,结点用正整数1..N编号。每条边有一个正整数权值。用d(a,b)表示从结点a到结点b路边上经过边的权值。其中要求a < b.将这n*(n-1)/2个距离从大到小排序,输出前M个距离值。额这里引入了一个新的概念:点分治序。由于点分治是一个静态算法,所以对于多次点分治只需要做一次哦记下来点分治顺序和遍历了啥(注意vector)这是因为存的总数不超过NlogN大(...原创 2018-09-24 16:53:10 · 502 阅读 · 0 评论 -
JZOJ5958阶乘
有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值。额简单的数学(我是真的爱数学)二分答案很明显合法怎么判断:对每个质数做向下取整除法:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>...原创 2018-09-10 22:32:58 · 968 阅读 · 0 评论 -
和Leo一起做爱线段树的好孩子 IOI1998Picture
看来扫描线还是不过关扫描矩形并的面积还会轮廓线就不会了仔细思考一下首先还是拆矩形线段树维护区间有几段线段从下向上扫描把竖的答案扫描了横的答案是这个区间有多少个值由于是全局查询不需要标记下发#include<iostream>#include<cstdio>#include<cstring>#include<c...原创 2018-09-06 22:03:25 · 1752 阅读 · 0 评论 -
和Leo一起做爱线段树的好孩子之 HDU 4630 No Pain No Game
神仙线段树系列陈老师的确出的题个个牛皮首先我们知道如果一个因数在一段区间出现了两次那么这个因数是一个合法的GCD注意n不是1e5说明可以暴力查找每个因数然后维护一个当前因数的上一次出现位置如果出现了那对上一次出现位置来说是合法的当然这只是左端点于是对右端点排序离线处理#include<iostream>#include<cstdio&g...原创 2018-09-09 21:15:06 · 796 阅读 · 0 评论 -
和Leo一起做爱字符串/线段树的好孩子CF700E Cool Slogans
这道题愈发加深了我对right集合的理解也就是endpos集合endpos集合是指一些可以以这个点结尾的合法集合而维护使用经典的主席树按照Parent树从上向下进行树形DP使用主席树按top序合并pos集合由于树上路径一定是当前的一个后缀所以必然出现了至少一次这个时候查询posA-lenA+lenB,posB-1是否存在一个节点#include<iost...原创 2018-09-07 22:34:56 · 1422 阅读 · 0 评论 -
和Leo一起做爱线段树的好孩子CTT2012楼房重建
求一个伪LIS维护斜率求一个伪的LIS就是从右到左上升的长度#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<iomanip>using namespace...原创 2018-08-25 21:57:20 · 174 阅读 · 0 评论 -
HDU5382 GCD?LCM!
超级毒瘤的反演我们发现这个外层嵌套了所以考虑递归引理:在恒成立这好理解,假设及时GCD就是较小的,那么值也是i+j所以递归式为:不妨:设稍有常识的OI选手都知道带入:枚举GCD交换枚举顺序观察右式发现d|n减少枚举数量再次发现不需要枚举j发现时间有三秒而这个是一个调和级数所以埃式筛就好了...原创 2018-09-24 17:34:23 · 502 阅读 · 0 评论 -
省选专练之相遇
豪哥生活在一个n个点的树形城市里面,每一天都要走来走去。虽然走的是比较的多,但是豪哥在这个城市里面的朋友并不是很多。 当某一天,猴哥给他展现了一下大佬风范之后,豪哥决定要获得一些交往机会来提升交往能力。豪哥现在已经物色上了一条友,打算和它(豪哥并不让吃瓜群众知道性别)交往。豪哥现在spy了一下这个人的所有行程起点和终点,豪哥打算从终点开始走到起点与其相遇。但是豪哥是想找话题的,他想知...原创 2018-09-11 07:36:51 · 218 阅读 · 0 评论 -
【bzoj2839】【2013福建】集合计数
一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。额很好的容斥题额考虑选择所有的交集为这个很好理解但是剩下多少种集合:还有n-k个数为额稍有常识就知道这等价于然后从中选取集合这也是组合数我们再次稍有常识一点等价于额但是这个东西是什么:什么也不...原创 2018-09-20 21:27:22 · 495 阅读 · 0 评论 -
省选专练之CF1054D. Changing Array
outputstandard outputAt a break Vanya came to the class and saw an array ofnknknk-bit integers a1,a2,…,ana1,a2,…,ana1,a2,…,anon the board. An integer xxxis called a kkk-bit integer if0≤x...原创 2018-10-19 22:46:32 · 423 阅读 · 0 评论 -
【BZOJ2393】Cirno的完美算数教室
~Cirno发现了一种baka数,这种数呢~只含有2和⑨两种数字~~现在Cirno想知道~一个区间中~~有多少个数能被baka数整除~但是Cirno这么天才的妖精才不屑去数啦只能依靠聪明的你咯弱化版的SCOI2010幸运数字还是考虑值的增长率很快所以暴力容斥就好了#include<bits/stdc++.h>using namespace std;typedef...原创 2018-10-09 22:42:10 · 2721 阅读 · 0 评论 -
容斥【BZOJ3622】已经没有什么好害怕的了
已经使 Modoka 有签订契约, 和自己一起战斗的想法后 , Mami 忽然感到自己不再是孤单一人了呢.于是, 之前的谨慎的战斗作风也消失了 , 在对 Charlotte 的傀儡使用终曲——Tiro Finale后 , Mami 面临着即将被 Charlotte 的本体吃掉的局面.这时, 已经多次面对过 Charlotte 的 Homura 告诉了学 OI 的你这样一个性质——Charlot...原创 2018-10-09 22:40:32 · 1661 阅读 · 0 评论 -
省选专练之文艺计算姬
“奋战三星期,造台计算机”。小W响应号召,花了三星期造了台文艺计算姬。文艺计算姬比普通计算机有更多的艺术细胞。 普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树个数。更具体地,给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},计算姬能快速算出其生成树个数。小W不知道计算姬算的对不对,你能帮助他吗?这实际上是喜闻...原创 2018-10-18 22:37:01 · 296 阅读 · 0 评论 -
总结:点分治学习笔记
不会点分治的我瑟瑟发抖点分治:对树进行的一种分层操作。这种算法的均摊的复杂度是:log这种算法和树链剖分的区别是1)树链剖分可以解决待修改问题2)点分治是解决计数类和全树路径的问题,树链剖分的路径是特殊的好的我们看一下点分治:例题:树中点对统计这个有~困难记录某个部分的所有路径然后暴力匹配这里有个减贡献的问题这个实际上会被计算是吧QwQ所以特别减...原创 2018-09-21 21:29:54 · 444 阅读 · 0 评论 -
CF487E Tourists
Cyberland 有 n 座城市,编号从 1 到 n,有 m 条双向道路连接这些城市。第 j 条路连接城市 aj 和 bj。每天,都有成千上万的游客来到 Cyberland 游玩。在每一个城市,都有纪念品售卖,第 i 个城市售价为 wi。这个售价有时会变动。每一个游客的游览路径都有固定起始城市和终止城市,且不会经过重复的城市。他们会在路径上的城市中,售价最低的那个城市购买纪念品。...原创 2018-09-26 22:04:20 · 932 阅读 · 0 评论 -
51NOD wangyurzee的树
wangyurzee有n个各不相同的节点,编号从1到n。wangyurzee想在它们之间连n-1条边,从而使它们成为一棵树。可是wangyurzee发现方案数太多了,于是他又给出了m个限制条件,其中第i个限制条件限制了编号为u[i]的节点的度数不能为d[i]。 一个节点的度数,就是指和该节点相关联的边的条数。 这样一来,方案数就减少了,问题也就变得容易了,现在请你告诉wangyurzee连边的...原创 2018-09-26 21:54:42 · 914 阅读 · 0 评论 -
学习一类树的计数问题和Prufer序列【BZOJ1430】小猴打架
一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友。每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友。经过N-1次打架之后,整个森林的小猴都会成为好朋友。 现在的问题是,总共有多少种不同的打架过程。 比如当N=3时,就有{1-2,1-3}{1-2,2-3}{1-3,1-2}{1-3,2-3}{2-3,1-2}{2-3,1-3}六种不同的打架过程。我...原创 2018-09-26 21:42:11 · 174 阅读 · 0 评论 -
和Leo一起做爱思考的好孩子之欧拉计划Project Euler 355
妈的神仙网络流官方题解给了一个美妙的性质:只能选质数的幂,或者含有之多两个质数的值且两个数一个小于sqrt一个大于sqrt然后就可以模拟退火了但是很明显不需要(官方题解好坏坏)费用流!这不是冲突关系吗啥子可以表示冲突关系?网络流啊!然后费用流增广唯一剩下的可行流于是是最大费用可行流#include<bits/stdc++.h>using ...原创 2018-08-24 21:46:11 · 5816 阅读 · 0 评论 -
和Leo一起做爱线段树的好孩子「FJ2014集训」圆桌会议
线段树维护霍尔定理有霍尔定理知l-r+1>=包含在区间内元素个数所以想到线段树把r-1移过去这个时候线段树就在维护键值了更新找区间最大值就好了#include<bits/stdc++.h>using namespace std;inline void read(int &x){ x=0; char ch=getchar...原创 2018-08-24 21:40:42 · 1115 阅读 · 0 评论 -
省选专练之数学 BZOJ2820 YY的GCD
这个明显直接搞没法搞还是得枚举质数明显交换枚举顺序再次交换枚举顺序不妨令再次交换枚举顺序由于d是质数这是可以再算出来这是线性的埃式筛法就好了#include<bits/stdc++.h>using namespace std;#pragma GCC optimize(3)#pragma GCC optimize("...原创 2018-08-23 22:05:44 · 190 阅读 · 0 评论 -
省选专练之字符串ZOJ3228Searching the String
主要考察的是对AC自动机的理解。 首先不重复直接匹配否则定义Last表示以此结尾的串上一次所在匹配位置Pos表示这个字符在当前串位置若i-Last>Pos 则这是合法解#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#inclu...原创 2018-08-13 07:32:06 · 222 阅读 · 0 评论 -
省选专练之后缀自动机Hihocoder1457
伪广义后缀自动机利用SA的著名做法加个字符集以外的串然后把串连接起来选择':'('0'+10)然后所有parent树上不经过:边的串都是合法的然后这里是要从短串转移到长串基数排序了之后从1-siz暴力转移#include<iostream>#include<cstdio>#include<cmath>#include<c...原创 2018-08-14 21:02:07 · 200 阅读 · 0 评论 -
省选专练之后缀自动机HiHocoder1449
似乎是个SPOJ的题明显建立后缀自动机给每个np节点附上1的权重然后利用top序把所有pre更新了然后每一个暴力比较就好了而且网上的题解又一句废话就是从大到小更新一遍不可能出现长串多余短串的#include<iostream>#include<cstdio>#include<cmath>#include<cstrin...原创 2018-08-14 20:58:36 · 210 阅读 · 0 评论 -
省选专练之后缀自动机hihocoder1445
求本质不同的字符串个数两种方法:1)求right集合大小,暨parent树上一个点子树的大小,这是一个递推式,并不是指点的个数2)由step函数求因为now->step - pre->step 表示一条边的贡献,所以全部加起来就好了本题使用法2#include<iostream>#include<cstdio>#include<...原创 2018-08-14 20:50:57 · 280 阅读 · 0 评论 -
省选专练之后缀自动机SPOJ1811LCS - Longest Common Substring
陈老师引入SAM的例题求两个串的LCS直接建一个串的SAM,并且把另外一个串放进去跳。这个方法很经典!几乎满足了所有两个串的公共串问题的所有解法有巨子说这个跳是均摊Log的,我也不知道QwQ对不对,反正SPOJ那么严苛的时间是过得了的#include<bits/stdc++.h>using namespace std;const int N=4e5+1...原创 2018-08-14 20:26:58 · 167 阅读 · 0 评论 -
省选专练(学习)可持久化Trie树(BZOJ3261)
这个似乎也不是好难啊但是可持久化Trie还是可以干许多线性基不能干的事。什么是可持久化Trie?顾名思义:是一种可以持久化的Trie树他的建树方式和键值式线段树方式类似也支持版本的减法查询的本质是贪心:利用版本减法判断第K位上的Trie值是不是成立以此向下查询#include<bits/stdc++.h>using namespace std...原创 2018-07-21 16:32:22 · 234 阅读 · 0 评论 -
省选专练之数学BZOJ3738 Ontak2013 Kapitał
和礼物差不多但是题目中有一句话:去除零于是在阶乘的时候要搞事情对逆元做阶乘然后扩展Lucas水过#include<bits/stdc++.h>using namespace std;typedef int INT;#define int long long int n,m,k;int mod;int f[11]={};int fac2[513]={};int fac5[...原创 2018-06-02 14:28:19 · 181 阅读 · 0 评论 -
省选专练之数学BZOJ2142【国家集训队】礼物
好难啊如果p为质数自然随便做但是不是质数需要扩展Lucas定理说白了就是对唯一分解的质数单独讨论再用中国剩余定理合并#include<bits/stdc++.h>using namespace std;typedef int INT;#define int long longinline void read(int &x){ x=0; int f=1; char ...原创 2018-06-02 14:25:45 · 329 阅读 · 0 评论 -
省选专练(学习)Fleury算法
说白了就是一个暴力由于如果知道了存在欧拉回路任意一个点任意一条边开始都能找到答案如果是找一张图的欧拉路注意可以有连个奇数度数的情况,但是也能不判就跑过了(我不知道为什么我的Fleury这么优秀)而且还有一个神仙优化:当前弧优化(6666)我咋这么菜呢显而易见是吧#include<iostream>#include<cstdio>#inclu...原创 2018-08-13 16:40:56 · 174 阅读 · 0 评论 -
和Leo一起做热爱线段树的好孩子HDU1542 Atlantis
扫描线模板题看来扫描线水平依旧不过硬本质:求矩形的并利用扫描线一段一段的扫实现方式是线段树注意发现区间是实数问题离散化#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>usin...原创 2018-08-22 14:04:36 · 171 阅读 · 0 评论 -
省选专练之后缀数组 HihoCoder-1403 后缀数组一·重复旋律
后缀数组板子题额这个实际上考察的是height数组的应用本质来说就是如果有一段连续为k-1的数组那么存在一个LCP满足条件所以说构建SA并且二分答案就完了#include<bits/stdc++.h>using namespace std;const int N=1e5+100;int S[N]={};int c[N]={};int x[N]={};i...原创 2018-08-26 21:45:50 · 195 阅读 · 0 评论 -
和Leo一起做热爱线段树的好孩子「LibreOJ β Round #2」计算几何瞎暴力
YMH在一个月之前写了这个题当时我不知所云现在看来数据结构水平还是在提升的。QwQ最先想的线段树二进制拆分但是似乎不行,因为排序不行这个时候可持久化字典树横空出世:他里面的数本身有序有可以支持异或(交换左右儿子就好了)然后对于还没有排序的维护二进制前缀和,暴力算是log的然后就完了#include<bits/stdc++.h>using ...原创 2018-08-20 21:43:47 · 238 阅读 · 0 评论 -
和Leo一起做热爱线段树的好孩子FZU2105
经典题由于异或等操作是不满足结合律的所以按二进制位拆分建四棵线段树就转化为区间取反和区间set#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;i...原创 2018-08-20 21:38:06 · 167 阅读 · 0 评论 -
和Leo一起做热爱线段树的好孩子usaco2008feb-gold
这个本质是求线段树最长的全0区间实际就是区间set查询的时候二分查找#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;inline void read...原创 2018-08-20 21:34:10 · 170 阅读 · 0 评论 -
和Leo一起做热爱线段树的好孩子HDU3308LCIS
维护区间左右端点长度从左开始最长长度从右开始最长长度和本段最长长度#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;inline void rea...原创 2018-08-20 21:30:11 · 152 阅读 · 0 评论 -
和Leo一起做爱线段树的好孩子HDU5238 Calculator
额神仙题感觉就是一个暴力啊线段树维护的是一个类似于键值线段树的东西?每个叶子节点才表示一个操作而在PushUp的时候合并答案这个咋合并?暴力合并。我们记录下当前模意义下所有的答案然后暴力合并于是查答案是O1的然后明显开不下空间但是考虑到模数的特殊性于是拆成小质数CRT一下就好了很完美的把暴力+线段树合并的真实意义+数学结合起来的一道题#...原创 2018-08-23 14:34:32 · 477 阅读 · 0 评论 -
省选专练CF1027F Session in BSU
如果你做过SCOI2010连续攻击游戏就会一眼发现做法——并查集维护二分图这个做法:并查集要特意把祖先放的较大这样祖先就是这个联通块的最大权#include<bits/stdc++.h>using namespace std;inline void read(int &x){ x=0; char ch=getchar(); ...原创 2018-08-20 09:42:20 · 200 阅读 · 0 评论 -
省选专练之后缀数组hihocoder1415
按照Kiana的说法这个是考察了后缀数组的第一个主要用途:把height数组merge起来然后二分一个长度因为不可重叠所以判断SAmax-SAmin是否不小于当前长度就好了#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<...原创 2018-08-27 08:50:04 · 146 阅读 · 0 评论