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 · 321 阅读 · 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 · 383 阅读 · 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 · 527 阅读 · 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 · 992 阅读 · 0 评论 -
和Leo一起做爱线段树的好孩子 IOI1998Picture
看来扫描线还是不过关 扫描矩形并的面积还会 轮廓线就不会了 仔细思考一下 首先还是拆矩形 线段树维护区间有几段线段 从下向上扫描把竖的答案扫描了 横的答案是这个区间有多少个值 由于是全局查询不需要标记下发 #include<iostream> #include<cstdio> #include<cstring> #include<c...原创 2018-09-06 22:03:25 · 1782 阅读 · 0 评论 -
和Leo一起做爱线段树的好孩子之 HDU 4630 No Pain No Game
神仙线段树系列 陈老师的确出的题个个牛皮 首先我们知道如果一个因数在一段区间出现了两次那么这个因数是一个合法的GCD 注意n不是1e5说明可以暴力查找每个因数 然后维护一个当前因数的上一次出现位置 如果出现了那对上一次出现位置来说是合法的 当然这只是左端点 于是对右端点排序 离线处理 #include<iostream> #include<cstdio&g...原创 2018-09-09 21:15:06 · 820 阅读 · 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 · 1467 阅读 · 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 · 189 阅读 · 0 评论 -
HDU5382 GCD?LCM!
超级毒瘤的反演 我们发现这个外层嵌套了所以考虑递归 引理: 在恒成立 这好理解,假设及时GCD就是较小的,那么值也是i+j 所以递归式为: 不妨:设 稍有常识的OI选手都知道 带入: 枚举GCD 交换枚举顺序 观察右式发现d|n 减少枚举数量 再次发现不需要枚举j 发现时间有三秒而这个是一个调和级数 所以埃式筛就好了 ...原创 2018-09-24 17:34:23 · 526 阅读 · 0 评论 -
省选专练之相遇
豪哥生活在一个n个点的树形城市里面,每一天都要走来走去。虽然走的是比较的多,但是豪哥在这个城市里面的朋友并不是很多。 当某一天,猴哥给他展现了一下大佬风范之后,豪哥决定要获得一些交往机会来提升交往能力。豪哥现在已经物色上了一条友,打算和它(豪哥并不让吃瓜群众知道性别)交往。豪哥现在spy了一下这个人的所有行程起点和终点,豪哥打算从终点开始走到起点与其相遇。但是豪哥是想找话题的,他想知...原创 2018-09-11 07:36:51 · 245 阅读 · 0 评论 -
【bzoj2839】【2013福建】集合计数
一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。 额很好的容斥题 额考虑选择所有的交集为 这个很好理解但是剩下多少种集合:还有n-k个数 为额稍有常识就知道这等价于 然后从中选取集合这也是组合数 我们再次稍有常识一点 等价于 额但是这个东西是什么:什么也不...原创 2018-09-20 21:27:22 · 514 阅读 · 0 评论 -
省选专练之CF1054D. Changing Array
outputstandard output At a break Vanya came to the class and saw an array of nkn knk-bit integers a1,a2,…,ana 1 , a 2 , … , a na1,a2,…,anon the board. An integer xxxis called a kkk -bit integer if 0≤x...原创 2018-10-19 22:46:32 · 450 阅读 · 0 评论 -
【BZOJ2393】Cirno的完美算数教室
~Cirno发现了一种baka数,这种数呢~只含有2和⑨两种数字~~ 现在Cirno想知道~一个区间中~~有多少个数能被baka数整除~ 但是Cirno这么天才的妖精才不屑去数啦 只能依靠聪明的你咯 弱化版的SCOI2010幸运数字 还是考虑值的增长率很快所以暴力容斥就好了 #include<bits/stdc++.h> using namespace std; typedef...原创 2018-10-09 22:42:10 · 2754 阅读 · 0 评论 -
容斥【BZOJ3622】已经没有什么好害怕的了
已经使 Modoka 有签订契约, 和自己一起战斗的想法后 , Mami 忽然感到自己不再是孤单一人了呢. 于是, 之前的谨慎的战斗作风也消失了 , 在对 Charlotte 的傀儡使用终曲——Tiro Finale后 , Mami 面临着即将被 Charlotte 的本体吃掉的局面. 这时, 已经多次面对过 Charlotte 的 Homura 告诉了学 OI 的你这样一个性质——Charlot...原创 2018-10-09 22:40:32 · 1691 阅读 · 0 评论 -
省选专练之文艺计算姬
“奋战三星期,造台计算机”。小W响应号召,花了三星期造了台文艺计算姬。 文艺计算姬比普通计算机有更多的艺术细胞。 普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一个带标号完全二分图的生成树个数。 更具体地,给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},计算姬能快速算出其生成树个数。 小W不知道计算姬算的对不对,你能帮助他吗? 这实际上是喜闻...原创 2018-10-18 22:37:01 · 317 阅读 · 0 评论 -
总结:点分治学习笔记
不会点分治的我瑟瑟发抖 点分治:对树进行的一种分层操作。 这种算法的均摊的复杂度是:log 这种算法和树链剖分的区别是 1)树链剖分可以解决待修改问题 2)点分治是解决计数类和全树路径的问题,树链剖分的路径是特殊的 好的我们看一下点分治: 例题: 树中点对统计 这个有~困难 记录某个部分的所有路径然后暴力匹配 这里有个减贡献的问题 这个实际上会被计算是吧QwQ 所以特别减...原创 2018-09-21 21:29:54 · 470 阅读 · 0 评论 -
CF487E Tourists
Cyberland 有 n 座城市,编号从 1 到 n,有 m 条双向道路连接这些城市。第 j 条路连接城市 aj 和 bj。每天,都有成千上万的游客来到 Cyberland 游玩。 在每一个城市,都有纪念品售卖,第 i 个城市售价为 wi。这个售价有时会变动。 每一个游客的游览路径都有固定起始城市和终止城市,且不会经过重复的城市。 他们会在路径上的城市中,售价最低的那个城市购买纪念品。 ...原创 2018-09-26 22:04:20 · 954 阅读 · 0 评论 -
51NOD wangyurzee的树
wangyurzee有n个各不相同的节点,编号从1到n。wangyurzee想在它们之间连n-1条边,从而使它们成为一棵树。 可是wangyurzee发现方案数太多了,于是他又给出了m个限制条件,其中第i个限制条件限制了编号为u[i]的节点的度数不能为d[i]。 一个节点的度数,就是指和该节点相关联的边的条数。 这样一来,方案数就减少了,问题也就变得容易了,现在请你告诉wangyurzee连边的...原创 2018-09-26 21:54:42 · 932 阅读 · 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 · 205 阅读 · 0 评论 -
和Leo一起做爱思考的好孩子之欧拉计划Project Euler 355
妈的 神仙网络流 官方题解给了一个美妙的性质:只能选质数的幂,或者含有之多两个质数的值且两个数一个小于sqrt一个大于sqrt 然后就可以模拟退火了 但是很明显不需要(官方题解好坏坏) 费用流! 这不是冲突关系吗 啥子可以表示冲突关系?网络流啊! 然后费用流增广唯一剩下的可行流 于是是最大费用可行流 #include<bits/stdc++.h> using ...原创 2018-08-24 21:46:11 · 5872 阅读 · 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 · 1148 阅读 · 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 · 213 阅读 · 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 · 252 阅读 · 0 评论 -
省选专练之后缀自动机Hihocoder1457
伪广义后缀自动机 利用SA的著名做法加个字符集以外的串然后把串连接起来 选择':'('0'+10) 然后所有parent树上不经过:边的串都是合法的 然后这里是要从短串转移到长串 基数排序了之后从1-siz暴力转移 #include<iostream> #include<cstdio> #include<cmath> #include<c...原创 2018-08-14 21:02:07 · 222 阅读 · 0 评论 -
省选专练之后缀自动机HiHocoder1449
似乎是个SPOJ的题 明显建立后缀自动机 给每个np节点附上1的权重 然后利用top序把所有pre更新了 然后每一个暴力比较就好了 而且网上的题解又一句废话就是从大到小更新一遍 不可能出现长串多余短串的 #include<iostream> #include<cstdio> #include<cmath> #include<cstrin...原创 2018-08-14 20:58:36 · 238 阅读 · 0 评论 -
省选专练之后缀自动机hihocoder1445
求本质不同的字符串个数 两种方法: 1)求right集合大小,暨parent树上一个点子树的大小,这是一个递推式,并不是指点的个数 2)由step函数求因为now->step - pre->step 表示一条边的贡献,所以全部加起来就好了 本题使用法2 #include<iostream> #include<cstdio> #include<...原创 2018-08-14 20:50:57 · 312 阅读 · 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 · 191 阅读 · 0 评论 -
省选专练(学习)可持久化Trie树(BZOJ3261)
这个似乎也不是好难啊 但是可持久化Trie还是可以干许多线性基不能干的事。 什么是可持久化Trie? 顾名思义:是一种可以持久化的Trie树 他的建树方式和键值式线段树方式类似 也支持版本的减法 查询的本质是贪心: 利用版本减法判断第K位上的Trie值是不是成立 以此向下查询 #include<bits/stdc++.h> using namespace std...原创 2018-07-21 16:32:22 · 263 阅读 · 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 · 208 阅读 · 0 评论 -
省选专练之数学BZOJ2142【国家集训队】礼物
好难啊如果p为质数自然随便做但是不是质数需要扩展Lucas定理说白了就是对唯一分解的质数单独讨论再用中国剩余定理合并#include<bits/stdc++.h> using namespace std; typedef int INT; #define int long long inline void read(int &x){ x=0; int f=1; char ...原创 2018-06-02 14:25:45 · 364 阅读 · 0 评论 -
省选专练(学习)Fleury算法
说白了就是一个暴力 由于如果知道了存在欧拉回路任意一个点任意一条边开始都能找到答案 如果是找一张图的欧拉路 注意可以有连个奇数度数的情况,但是也能不判就跑过了(我不知道为什么我的Fleury这么优秀) 而且还有一个神仙优化:当前弧优化(6666)我咋这么菜呢 显而易见是吧 #include<iostream> #include<cstdio> #inclu...原创 2018-08-13 16:40:56 · 207 阅读 · 0 评论 -
和Leo一起做热爱线段树的好孩子HDU1542 Atlantis
扫描线模板题 看来扫描线水平依旧不过硬 本质:求矩形的并 利用扫描线一段一段的扫 实现方式是线段树 注意发现区间是实数问题 离散化 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> usin...原创 2018-08-22 14:04:36 · 190 阅读 · 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 · 227 阅读 · 0 评论 -
和Leo一起做热爱线段树的好孩子「LibreOJ β Round #2」计算几何瞎暴力
YMH在一个月之前写了这个题 当时我不知所云 现在看来数据结构水平还是在提升的。QwQ 最先想的线段树二进制拆分 但是似乎不行,因为排序不行 这个时候可持久化字典树横空出世:他里面的数本身有序 有可以支持异或(交换左右儿子就好了) 然后对于还没有排序的 维护二进制前缀和,暴力算是log的 然后就完了 #include<bits/stdc++.h> using ...原创 2018-08-20 21:43:47 · 265 阅读 · 0 评论 -
和Leo一起做热爱线段树的好孩子FZU2105
经典题 由于异或等操作是不满足结合律的 所以按二进制位拆分 建四棵线段树就转化为区间取反和区间set #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; i...原创 2018-08-20 21:38:06 · 190 阅读 · 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 · 195 阅读 · 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 · 176 阅读 · 0 评论 -
和Leo一起做爱线段树的好孩子HDU5238 Calculator
额 神仙题 感觉就是一个暴力啊 线段树维护的是一个类似于键值线段树的东西? 每个叶子节点才表示一个操作 而在PushUp的时候合并答案 这个咋合并? 暴力合并。我们记录下当前模意义下所有的答案 然后暴力合并 于是查答案是O1的 然后明显开不下空间 但是考虑到模数的特殊性 于是拆成小质数CRT一下就好了 很完美的把暴力+线段树合并的真实意义+数学结合起来的一道题 #...原创 2018-08-23 14:34:32 · 504 阅读 · 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 · 222 阅读 · 0 评论 -
省选专练之后缀数组hihocoder1415
按照Kiana的说法这个是考察了后缀数组的第一个主要用途:把height数组merge起来 然后二分一个长度 因为不可重叠所以判断SAmax-SAmin是否不小于当前长度就好了 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<...原创 2018-08-27 08:50:04 · 167 阅读 · 0 评论
分享