07 2019 档案

摘要:题目链接 "传送门" 题意 给你$n$堆石子,每堆有$a_i$堆石子,$q$次操作: 在$[L,R]$内有多少个子区间使得$Alice$(先手)在$Nim$博弈中获胜; 交换$a_{pos},a_{pos+1}$的值。 思路 这题和 "cf617E" 差不多。 首先我们知道以下性质: $Nim$博弈 阅读全文
posted @ 2019-07-30 20:16 Dillonh 阅读(363) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 给你一棵无根树,要你寻找一个根节点使得在将一条边权变为$0$后,离树根最远的点到根节点的距离最小。 思路 本题和求树的直径很像,不过要记得的东西有点多,且状态也很多。 $fi[u][0]$表示在$u$这个结点不删边沿着子树方向能到达的最远距离,$se[u][0]$为第二远 阅读全文
posted @ 2019-07-30 11:43 Dillonh 阅读(487) 评论(2) 推荐(0)
摘要:题目链接 "传送门" 题意 给你一个串串,问你有多少对回文串相交。 思路 由于正着做不太好算答案,那么我们考虑用总的回文对数减去不相交的回文对数。 而不相交的回文对数可以通过计算以$i$为右端点的回文串的个数$\times$以$i+1,i+2\dots,n$为左端点的回文串的个数计算得到。 以$i$ 阅读全文
posted @ 2019-07-29 10:48 Dillonh 阅读(237) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 给你$n$个基底,求$[l,r]$内的每个基底是否都能异或出$x$。 思路 线性基交板子题,但是一直没看懂咋求,先偷一份咖啡鸡板子写篇博客吧~ 线性基交学习博客: "传送门" 代码实现如下 cpp include include include include inclu 阅读全文
posted @ 2019-07-27 23:40 Dillonh 阅读(366) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 有$n$个士兵,要你给他们分配职业。有$m$对关系,对于某一对关系$u,v$,如果同为勇士则总能力增加$a$,同法师则增加$c$,一个勇士一个法师增加$\frac{a}{4}+\frac{c}{3}$,要你求最大的总能力。 思路 这位大佬的 "博客" 讲的很详细,大家可以 阅读全文
posted @ 2019-07-27 01:18 Dillonh 阅读(276) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 要你找一个最长的区间使得区间内每一个数出现次数都大于等于$K$。 思路 我们通过固定右端点考虑每个左端点的情况。 首先对于每个位置,我们用线段树来维护它作为$C$种元素的左端点的可行性。 对于每个元素我们用$vector$存下它出现的所有下标。 枚举右端点$i$,对于$[ 阅读全文
posted @ 2019-07-26 20:19 Dillonh 阅读(304) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 给你一个$n\times n$的矩形,要你求出一个面积最大的矩形使得这个矩形内的最大值减最小值小于等于$M$。 思路 单调队列滚动窗口。 比赛的时候我的想法是先枚举长度然后再枚举左端点,最后用单调队列来做,然后$T$成傻逼,赛后看大佬们的代码发现我的做法比先枚举左端点再枚 阅读全文
posted @ 2019-07-25 21:25 Dillonh 阅读(535) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 思路 首先我们对$a$正反各跑一边$LIS$,记录每个位置在前一半的$LIS$中应该放的位置$ans1[i]$,后一半的位置$ans2[i]$。 对于字典序最小的方案,我们找到第一个峰值,然后往前遍历。在$i$这个位置,如果它在$LIS$中放的位置是$pos$,那么我们先看当前 阅读全文
posted @ 2019-07-24 18:34 Dillonh 阅读(621) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 思路 根据题目给定的边跑一边最大流,然后再在残留网络上跑$tarjan$。 对于每一条边有: 如果它是非满边,那么它一定不是最小割集里面的边; 如果$c[u[i]] \not= c[v[i]]$,那么它可以是最小割集里面的边; 如果$c[u[i]] \not= c[v[i]]$ 阅读全文
posted @ 2019-07-24 10:08 Dillonh 阅读(311) 评论(0) 推荐(0)
摘要:学习链接 "传送门" "hihoCoder(1398)" 思路 将所有的活动与超级源点连起来,边权为活动的活跃值;学生与超级汇点连起来,边权为邀请学生的花费;将活动与所需要的学生连边,边权为$inf$。最后答案为所有活动的活跃值之和减去最小割。 代码实现如下 阅读全文
posted @ 2019-07-23 16:52 Dillonh 阅读(220) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 给你一个字符串,要你构造一个长为$k$的子串使得每个字母出现的次数在$ "L_i,R_i" $间且字典序最小。 思路 做这种题目就是要保持思路清晰,博主就是因为写的时候没有想清楚写了一晚上$+$一个早上…… 首先我们对于第$i$个位置有如果这个位置可以摆放,那么$L[s[ 阅读全文
posted @ 2019-07-23 11:15 Dillonh 阅读(646) 评论(2) 推荐(0)
摘要:题目链接 "传送门" 题意 有$n+1$辆车要过红绿灯,告诉你车的长度、与红绿灯的起点(题目假设红绿灯始终为绿)、车的最大速度,问你第$0$辆车(距离最远)车头到达红绿灯起点的时间是多少(每辆车最多和前面的车无缝衔接)。 思路 比赛的时候没啥思路,后来仔细一想,其实对于第$0$辆车的最终状态只有两种 阅读全文
posted @ 2019-07-23 09:48 Dillonh 阅读(474) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 初始时有$n$个数,现在有$q$次操作: 查询$[l,r]$内选择一些数使得异或和最大; 在末尾加入一个数。 题目强制在线。 思路 对于$i$我们记录$[1,i]$每个基底最靠近$i$的位置和这个位置的值,然后查询时看$r$这个位置记录的每个基底的位置是否大于等于$l$, 阅读全文
posted @ 2019-07-22 17:49 Dillonh 阅读(874) 评论(2) 推荐(3)
摘要:题目链接 "传送门" 题意 总共有$2n$个人,任意两个人之间会有一个竞争值$w_{ij}$,现在要你将其平分成两堆,使得$\sum\limits_{i=1,i\in\mathbb{A}}^{n}\sum\limits_{j=1,j\in\mathbb{B}}^{n}w_{ij}$最大。 思路 看到 阅读全文
posted @ 2019-07-20 19:50 Dillonh 阅读(393) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 求在$n\times m$的$01$子矩阵中找出面积第二大的内部全是$1$的子矩阵的面积大小。 思路 处理出每个位置往左连续有多少个$1$,然后对每一列跑单调栈,记得处理由同一矩阵贡献的面积。 代码实现如下 cpp include include include incl 阅读全文
posted @ 2019-07-20 18:03 Dillonh 阅读(388) 评论(0) 推荐(1)
摘要:题目链接 "传送门" 题意 给你$n$个点,每个点的坐标为$(x_i,y_i)$,有两个权值$a_i,b_i$。 现在要你将它分成$\mathbb{A},\mathbb{B}$两部分,使得在满足“$\mathbb{A}$的点不能落在在$\mathbb{B}$的点的右下方”的条件下$\sum\limi 阅读全文
posted @ 2019-07-20 10:18 Dillonh 阅读(397) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 给你$n$个数$a_i$,要你在满足下面条件下使得$\sum\limits_{i=1}^{n}(a_i p_i)^2$最小(题目给的$m$只是为了将$a_i$变成一个整数,那么我们就当此处的$p_i$扩大为题目给的$m$倍,然后把$m$放到分母去,以下不再解释): $p_ 阅读全文
posted @ 2019-07-19 21:38 Dillonh 阅读(649) 评论(0) 推荐(3)
摘要:题目链接 "传送门" 题意 求$n$个数中子集内所有数异或为$0$的子集大小之和。 思路 对于子集大小我们不好维护,因此我们可以转换思路变成求每个数的贡献。 首先我们将所有数的线性基的基底$b$求出来(设秩为$r$),然后非基地元素的贡献就是$2^{n r 1}$,即选择这个数然后其他所有非基底元素 阅读全文
posted @ 2019-07-19 17:46 Dillonh 阅读(497) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 思路 首先我们知道$'A'$在放了$n$个位置里面是没有约束的,$'B'$在放了$m$个位置里面也是没有约束的,其他情况见下面情况讨论。 $dp[i][j]$表示放了$i$个$'A'$和$j$个$'B'$的方案数,然后考虑转移到下一个状态: 如果$i\leq n$,那么$'A' 阅读全文
posted @ 2019-07-18 23:43 Dillonh 阅读(376) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题目 思路 首先我们对$\int_{0}^{\infty}\frac{1}{\prod\limits_{i=1}^{n}(a_i^2+x^2)}dx$进行裂项相消: $$ \begin{aligned} &\frac{1}{\prod\limits_{i=1}^{n}(a_i^ 阅读全文
posted @ 2019-07-18 19:25 Dillonh 阅读(1897) 评论(4) 推荐(2)
摘要:比赛链接 "传送门" A题 题意 $n$个人每个人都有自己喜欢喝的$vechorka$口味,现在给你$\lceil n/2\rceil$箱$vechorka$,每箱有两瓶,问最多能有多少个人能拿到自己喜欢的口味。 思路 我们首先记录每个口味有多少个人喜欢,然后要想拿到自己喜欢的口味最大那么一定要优先 阅读全文
posted @ 2019-07-18 12:00 Dillonh 阅读(426) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 给你$n$个数,每个数表示$\frac{1}{2^{a_i}}$,要你把这$n$个数分为两堆,使得每堆的和都大于等于$\frac{1}{2}$。 思路 首先我们假设第一堆的下标为$x_1,x_2\dots,x_n$,且$2^{a_{x_1}}\leq 2^{a_{x_2} 阅读全文
posted @ 2019-07-17 16:47 Dillonh 阅读(461) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 你有$n$只怪,每只怪的伤害为$a_i$,对手有$m$只怪,每只怪的伤害为$b_i$,对手的怪有普通状态和防守状态(普通状态:如果你用攻击力为$a_i(a_i\geq b_j)$的怪去攻击对手第$j$只怪将会给对手造成$a_i b_j$的伤害;防守状态则不会造成$a_i 阅读全文
posted @ 2019-07-17 14:52 Dillonh 阅读(377) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 初始时有$n$个空串,然后进行$q$次操作,操作分为以下两种: wrap l r x:把$l,r$中的每个字符串的首尾都加入$x$,如$s_i=121,x=3\rightarrow s_i=31213$; query l r:查询$\sum\limits_{i=l}^{r 阅读全文
posted @ 2019-07-17 11:03 Dillonh 阅读(302) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 告诉你圆锥的底部圆的半径和圆锥的高,再给你一个点的坐标及其运动向量,问你这个点什么时候会与这个圆锥相撞。 思路 比赛场上二分一直没过但是有人二分过了,今天再写这题想再试下二分,最后发现了自己的问题所在(可能这个点在$check$的时候已经穿过圆锥但是我的代码会把它当成还没 阅读全文
posted @ 2019-07-16 17:41 Dillonh 阅读(539) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题面 题意 首先定义对于$k$的好数$u$:如果$u\leq k$且$u$的所有质因子与$k$的质因子一样则称$u$对于$k$是一个好数。 现给你两个数$k1,k2(1\leq k1,k2\leq 10^{24})$,要你求$k1,k2$的好数个数,对于$k1,k2$有两者的最 阅读全文
posted @ 2019-07-15 16:42 Dillonh 阅读(277) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题面 题意 给你$n,k$,要你求$\sum\limits_{i=1}^{n}i^k$的值。 思路 根据数学知识或者说题目提示可知$\sum\limits_{i=1}^{n}i^k$可以被一个$k+1$次多项式表示。 由拉格朗日插值法( "推荐学习博客" )的公式:$L(x)= 阅读全文
posted @ 2019-07-14 11:44 Dillonh 阅读(196) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题面 题意 给你一个$a$数组和一个$k$数组,进行$q$次操作,操作分为两种: 将$a_i$增加$x$,此时如果$a_{i+1} include include include include include include include include include i 阅读全文
posted @ 2019-07-13 17:09 Dillonh 阅读(243) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题面 思路 设$x=\prod\limits_{i=l}^{r}a_i$=$\prod\limits_{i=1}^{n}p_i^{c_i}$ 由欧拉函数是积性函数得: $$ \begin{aligned} \phi(x)&=\phi(\prod\limits_{i=1}^{n} 阅读全文
posted @ 2019-07-12 16:52 Dillonh 阅读(198) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题面 思路 对于线段树的每个结点我们存这个区间的最大值$mx$、最大值个数$cnt$、严格第二大数$se$,操作$0$: 如果$mx\leq val$则不需要更新改区间; 如果$se\leq val include include include include include 阅读全文
posted @ 2019-07-12 14:58 Dillonh 阅读(153) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题面 题意 找到最长的一个区间,使得这个区间内的最大值减最小值在$[m,k]$中。 思路 我们用两个单调队列分别维护最大值和最小值,我们记作$q1$和$q2$。 如果$q1$的底部的值与$q2$的底部的值大于$k$,则将$q1,q2$底部中下标最小的$pop$掉,并记录下来,记 阅读全文
posted @ 2019-07-11 20:39 Dillonh 阅读(423) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题意 现总共有$n$个题目$k$支参赛队伍,已知每个题目各队伍是否会写,现问你能否从题目中选出一个子序列使得每支队伍最多只会写一半的题目。 思路 对于每个题目我们用二进制压缩所有队伍的情况,然后通过枚举状态看是否存在两种完全不同的状态是否同时出现过。 代码实现如下 cpp in 阅读全文
posted @ 2019-07-10 11:11 Dillonh 阅读(167) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 思路 $dp[i][j][k]$表示第$i$次操作放$j$后与另一堆的重量差为$k$是否存在。 代码实现如下 阅读全文
posted @ 2019-07-10 11:06 Dillonh 阅读(177) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 简单数学题 题目 思路 前置知识: $$ \sum_{i=m}^{n}C_{i}^{m}=C_{n+1}^{m+1} $$ 此题化简: $$ \begin{aligned} &\sum_{i=1}^{n}i\sum_{j=i}^{n}C_{j}^{i}& \\ =&\sum_{ 阅读全文
posted @ 2019-07-10 10:59 Dillonh 阅读(292) 评论(0) 推荐(0)
摘要:对于许多的图论题,有些题可能会出现结点要与区间内的每个点都进行建边,但是如果进行遍历建边,那么复杂度可能会被卡到$O(n^2)$,此时线段树的骚操作就出来了。 我们知道线段树的每个结点就是一个区间,那么我们就可以把点与区间建边转换为点与线段树上的结点进行连边。 以下是几道线段树优化建边的题目帮助您理 阅读全文
posted @ 2019-07-10 10:57 Dillonh 阅读(508) 评论(0) 推荐(0)
摘要:用数学公式来表示我们所需要证明的东西:$f_{n}=\sum\limits_{i=0}^{\lfloor \frac{n+1}{2} \rfloor 1} C_{n i 1}^{i}$ 前置知识: $$1.当m n时C_{n}^{m} \equiv 0$$ $$2.C_{n}^{i}+C_{n}^{ 阅读全文
posted @ 2019-07-10 10:57 Dillonh 阅读(853) 评论(0) 推荐(0)
摘要:推荐教程 "tls" "peng ym" 莫比乌斯反演常用的两种形式: $$ \begin{aligned} &(1).F(n)=\sum_{d|n}f(d)\Rightarrow f(n)=\sum_{d|n}\mu(d)F(\frac{n}{d})&\\ &(2).F(n)=\sum_{n|d} 阅读全文
posted @ 2019-07-10 10:56 Dillonh 阅读(414) 评论(0) 推荐(0)
摘要:一.$gcd(f_{n},f_{n+1})=1$ 证明: $$ \begin{aligned} &gcd(f_{n},f_{n+1})&\\ =&gcd(f_{n},f_{n+1} f_{n})&\\ =&gcd(f_{n},f_{n 1})&\\ =&……&\\ =&gcd(f_{1},f_{2} 阅读全文
posted @ 2019-07-10 10:55 Dillonh 阅读(3691) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 线段树$+$二分思路 思路 比赛看到这题时感觉是一棵线段树$+$主席树,然后因为不会带修改主席树就放弃了,最后发现还卡了树套树。 由于本题数据保证序列中相同的数字不会超过200个,因此我们将每个读入的数和修改之后的数一起离散化一遍,然后用一个$vector$记录每个数出现的下标 阅读全文
posted @ 2019-07-10 10:54 Dillonh 阅读(255) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题面 题意 给你一张有$n$个点$m$条边的联通图(其中$m\leq n+20)$,$q$次查询,每次询问$u$与$v$之间的最短路。 思路 由于边数最多只比点数大21,因此我们可以先跑出一棵最小生成树,然后将非树上边的两个端点跑一边最短路,然后每次查询就比较$max((dis 阅读全文
posted @ 2019-07-10 10:51 Dillonh 阅读(163) 评论(0) 推荐(0)
摘要:题目链接 "传送门" A题 题面 代码实现如下 $python$代码实现如下 H题 题面 题意 给你一个$2\times n$的矩阵,你初始时在$(1,1)$处,每次移动可以往周围八个方向移动,问你到达右下角的方案数是多少。 思路 我们假设前i 1列都已经求好了方案数,那么$dp[i][j]$表示第 阅读全文
posted @ 2019-07-10 10:49 Dillonh 阅读(205) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题目 思路 因为$(a 1)^{2} include include include include include include include include include include include include include include include 阅读全文
posted @ 2019-07-10 10:44 Dillonh 阅读(180) 评论(0) 推荐(0)
摘要:题目链接 "传送门" A题 题目 题意 给你两个正整数$n$和$m$,然后你可以进行无数次操作(每次操作可以将$n$扩大两倍,或者扩大三倍),问你是否能够得到$m$。 代码实现如下 B题 题目 题意 给你一个长度为$n$的$01$串进行无限循环,问你连续最长的$1$有多长。 思路 将这个$01$串复 阅读全文
posted @ 2019-07-10 10:42 Dillonh 阅读(173) 评论(0) 推荐(0)
摘要:题目链接 "传送门" 题面 思路 打表可以发现前六项分别为1,2,5,12,42,132,加上$n=0$时的1构成了卡特兰数的前几项。 看别人的题解说把每一个数扫一遍,奇数项当成入栈,偶数项当成出栈,然后就是卡特兰数的公式了。 卡特兰数公式为: $$ \begin{aligned} &C_{2n}^ 阅读全文
posted @ 2019-07-10 10:38 Dillonh 阅读(261) 评论(0) 推荐(0)