摘要:"LOJ" 感觉这个题十分好玩于是诈尸更博。一年之前的做题心得只有这道题还记得清楚…… 设输入为$n,m$时的答案为$f(n,m)$,首先$f(n,m)=f(m,n)$所以接下来默认$n \leq m$。一件重要的事情是~~打表~~得到当$m n+1$时$f(n,m) = f(n,m 1) 3$,证 阅读全文
posted @ 2019-11-13 22:12 cjoier_Itst 阅读 (73) 评论 (4) 编辑
摘要:"Contest Page" A 唯一会做的题/kk 题目相当于要求相邻三个的异或和为$0$。 当我们放入了三个数$a,b,c$时,接下来的放入顺序显然一定是$a,b,c,a,b,c,...$。所以当数可以分成三份,每份大小$\frac{n}{3}$且其中的数全部相等,从三份中各取一个数的异或和为$ 阅读全文
posted @ 2019-10-21 21:31 cjoier_Itst 阅读 (160) 评论 (4) 编辑
摘要:"Contest Page" A 对于一个长度为$L$的相同字符段,显然要花费$\frac{L}{2}$次操作才能使得相邻不相同。于是只需要分类讨论一下首尾字符是否相同,算出每种字符、每种长度的连续字符段出现了多少次即可。 B 首先当图不是二分图的时候肯定无解,否则可以发现答案的上界是图上两点的最短 阅读全文
posted @ 2019-10-20 09:21 cjoier_Itst 阅读 (89) 评论 (2) 编辑
摘要:代码自己去LOJ看 JOI2013 彩灯 把序列划分成若干极长交替列,那么最优的方案一定是将一个极长交替列翻转使得连续的三个极长交替列合成一个。计算相邻三个极长交替列长度的最大值即可。 搭乘IOI火车 DP:$f_{i,j}$表示两个串的起点分别在$i,j$位置最长的拼接长度,转移就先放一个'I', 阅读全文
posted @ 2019-10-12 16:35 cjoier_Itst 阅读 (192) 评论 (7) 编辑
摘要:"传送门" 最小值最大考虑二分答案,不难发现当最小值$mid$确定之后,原点到所有直线的距离一定都是$mid$时才是最优的,也就是说这些直线一定都是$x^2+y^2=mid^2$的切线。 接下来考虑一个点会被哪些切线所保护。作出这个点到圆的公切线,得到两个切点,那么在这两个切点之间的优弧上选择一个点 阅读全文
posted @ 2019-10-05 11:19 cjoier_Itst 阅读 (102) 评论 (12) 编辑
摘要:"Contest Page" 因为一些特殊的原因所以更得不是很及时…… A sol 不难发现当某个人diss其他所有人的时候就一定要被删掉。 维护一下每个人会diss多少个人,当diss的人数等于剩余人数$ 1$的时候放队列里,每一次取队头更新其他人diss的人数。 "code" B sol 一个结 阅读全文
posted @ 2019-10-03 22:58 cjoier_Itst 阅读 (96) 评论 (0) 编辑
摘要:"传送门" ~~题解搬运工++~~ 先证明一个贪心做法的正确性:做以下操作若干次,每一次考虑选择没有被选到答案序列中的数加入到答案序列中对答案的贡献,设第$i$个位置的贡献为$V_i$,如果最大的贡献小于0则退出,否则选择其中贡献最大的加入答案序列中。 首先一个引理:在上述贪心策略下,如果$a_i$ 阅读全文
posted @ 2019-09-28 21:04 cjoier_Itst 阅读 (72) 评论 (0) 编辑
摘要:"Contest Page" 开题开错翻车场.jpg A sol $A \frac{W}{2}$或者$B \frac{H}{2}$的时候无解,否则构造方法长下面这样 c++ include using namespace std; int main(){ static int arr[200003] 阅读全文
posted @ 2019-09-22 17:27 cjoier_Itst 阅读 (180) 评论 (0) 编辑
摘要:"Contest Page" "A" sol 真的有人不会做这道题? include using namespace std; define int unsigned long long const int _ = 229029 , tar[] = {2,31,1847}; signed main( 阅读全文
posted @ 2019-09-20 22:43 cjoier_Itst 阅读 (156) 评论 (0) 编辑
摘要:"传送门" 数字最小公倍数为$L$的充分条件是所有数都是$L$的约数,而$10^8$内最多约数的数的约数也只有$768$个。所以我们先暴力找到所有满足是$L$的约数、$G$的倍数的数。 接下来注意到题目的$\gcd$和$lcm$的限制等价于对于每一个质数限制所有数在该质数指数上的$\min$和$\m 阅读全文
posted @ 2019-09-20 16:47 cjoier_Itst 阅读 (76) 评论 (0) 编辑
摘要:"传送门" 首先显然的是可以一开始先染好再做、每个点只会被染一次、最后只剩下两种颜色。 接下来是结论时间:序列可以反转的充要条件是除了首尾的极大颜色连通块以外其他极大颜色连通块长度为偶数。 证明充分性:考虑归纳。 如果序列中有$3$个极大颜色连通块且中间的连通块长度为偶数,那么先将两端的颜色块折成$ 阅读全文
posted @ 2019-09-19 22:40 cjoier_Itst 阅读 (78) 评论 (0) 编辑
摘要:"传送门" 先二分一个最大速度$v$。 分析移动的性质。很显然的事情是在火焰两边的所有人都会往火焰的方向以最快的速度运动,这样可以使当前位置更早获得火焰,同时当前拥有火焰的若干个人为了传递火焰自然也会以最快的速度移动。 接下来考虑某个没有火的人碰上了有火的人之后决策如何。假设有火的人$A$碰上了无火 阅读全文
posted @ 2019-09-19 22:26 cjoier_Itst 阅读 (71) 评论 (5) 编辑
摘要:"Contest Page" A sol 每次选最小的,然后把它的所有倍数都删掉。 include using namespace std; int num[1003] , N , A[1003] , B[1003]; int main(){ cin N; for(int i = 1 ; i A[i 阅读全文
posted @ 2019-09-18 22:56 cjoier_Itst 阅读 (99) 评论 (1) 编辑
摘要:"传送门——BZOJCH" 考虑两种情况: 1、答案由一个最长公共子串+可能的一个模糊匹配位置组成。这个用SAM求一下最长公共子串,但是需要注意只出现在$S$的开头和$T$的结尾的子串是不能够通过额外的一个模糊匹配得到更长的子串的,而对于其他的子串来说都可以。 2、答案由模糊位置两遍的子串构成。暴力 阅读全文
posted @ 2019-09-15 19:23 cjoier_Itst 阅读 (45) 评论 (0) 编辑
摘要:"LOJ" 看到离线区间操作仍然考虑莫队,然后可以发现:我们对于原来的凸包集合按照极角序维护一个链表,那么删除一个位置可以$O(1)$,撤回删除操作也可以$O(1)$(因为原来的链表结构中当前节点就记录着其之前的前驱后继),但是动态加入操作至少要一个二分的$log$的复杂度。所以我们要尽可能避免动态 阅读全文
posted @ 2019-09-14 22:50 cjoier_Itst 阅读 (36) 评论 (0) 编辑
摘要:"传送门" 看到出现次数自然地考虑莫队。 但是发现如果需要删除并动态维护答案的话,则要用一个堆来维护答案,增加了一个$log$。但是加入操作却没有这个$log$,所以我们考虑避免删除操作。 分块,设$l_i,r_i$表示第$i$个块的左右端点,设$f_{i,j}$表示区间$[l_i,r_j]$的答案 阅读全文
posted @ 2019-09-14 22:35 cjoier_Itst 阅读 (27) 评论 (0) 编辑
摘要:"LOJ" 注意到$qk \leq 10^5$,我们很~~不~~自然地考虑根号分治: 当$k \sqrt{10^5}$,此时$q$比较小,与$qm$相关的算法比较适合。对串$s$建SAM,考虑每组询问,将其所有的$(a,b)$按照$b$从小到大排序,然后把$w$在$s$的SAM上匹配,每当右端点变为 阅读全文
posted @ 2019-09-14 20:02 cjoier_Itst 阅读 (47) 评论 (0) 编辑
摘要:"期末考试" sol 因为时间范围很小,所以可以利用单调性求出对于每一个时间$t$,当最晚的成绩公布时间为$t$时学生产生的不满意度总和$f_t$和让所有课程的公布时间不大于$t$的前提下课程产生的最小不满意度$g_t$.复杂度$O(nlogn)$,瓶颈是排序. 但是上面那个做法太不优雅了.我们可以 阅读全文
posted @ 2019-09-14 11:22 cjoier_Itst 阅读 (62) 评论 (0) 编辑
摘要:"传送门" 构成一棵树可以分成两个限制:图不成环、图的点数 边数=1。 我们考虑枚举右端点$r$计算所有可能的左端点$l$的答案。我们先考虑第一个限制:图不成环。注意到当$r$确定的时候,满足这个条件的$l$一定是一段后缀。设$p_r$表示满足图不成环时最小的$l$,还可以发现$p_r$是单调不降的 阅读全文
posted @ 2019-09-12 19:17 cjoier_Itst 阅读 (39) 评论 (0) 编辑
摘要:"传送门——BZOJ" "传送门——VJ" 考虑使用LCT维护时间最大生成树,那么对于第$i$条边,其加入时可能会删去一条边。记$pre_i$表示删去的边的编号,如果不存在则$pre_i = 0$,如果是自环则$pre_i = i$。 因为连通块数量等于点数减树边数量,而对于一组询问$[l,r]$, 阅读全文
posted @ 2019-09-12 14:25 cjoier_Itst 阅读 (33) 评论 (0) 编辑