
BZOJ
Rayment_cc
++Rp
展开
-
BZOJ 2653 middle CTSC
ProblemBZOJSolution这道题思路很神,感觉二分答案题愈发得神了起来。我们考虑如果选择x作为中位数,把序列中所有小于x的数标记为-1,大于的标记为1,那么询问x能否作为一段区间的中位数,就相当于询问是否存在一个区间使得区间和是大于等于0的。显然我们可以用线段树维护出一个最大区间和,那么直接查它是否大于等于0即可。而x是可以二分的。 除此之外对于每个数作为中位数,...原创 2018-04-28 17:04:49 · 211 阅读 · 0 评论 -
BZOJ 1367 BOI2004数字序列
ProblemBZOJSolutiondalao安利的一道论文题。。为了方便思考,我们可以把ai减去i,把严格递增的条件转化为非严格递增的条件。不妨先考虑特殊情况,a如果是递增的,那么直接bi=ai即可。如果是递减的,就取它的中位数,原因后文再讲。先考虑一个简化的问题,是一个初中数学题,求使得|A−x|+|B−x|(A≤B)|A−x|+|B−x|(A≤B)|A-x|+|B-...原创 2018-06-28 17:35:37 · 308 阅读 · 0 评论 -
BZOJ 4872 六省联考2017 分手是祝愿
ProblemBZOJSolution感觉dp状态的设置好巧妙啊 首先要明确的是怎么计算最小步数。就是直接从n到1扫,如果有亮着的,就按这个开关,模拟一下是O(nlnn)O(nlnn)O(n\ln n)的 设f[i]表示在局面的最小步数为i时,转移到最少步数为i-1时的期望花费。只要是相应的灯,按的次序是不会影响答案的,那么i次就说明还需要按i个灯,则有i/n的概率到下一步,而有...原创 2018-07-04 21:49:38 · 428 阅读 · 0 评论 -
BZOJ 4548 小奇的糖果
ProblemBZOJSolution只想到一个O(n2)O(n2)O(n^2)的做法,大概是这样。显然固定左端点,右端点扩展后矩形高度单调不升,那么就可以维护竖直和水平的两种链表,枚举左端点,然后不断扩展右端点,颜色数为k时就高度减小。O(nlogn)O(nlogn)O(n\log n)的做法比较巧妙,把矩形分为三类,一类是高度就是n的,另外两类就是上接和下接的。 考虑用...原创 2018-07-24 22:23:11 · 198 阅读 · 0 评论 -
BZOJ 4373 算术天才⑨与等差数列
ProblemBZOJSolution为什么算gcd?我不会证。。其实是懒得维护那么多数组我们可以用hash来完成这个匹配操作,这个hash函数的要求很严格,它要满足这么3点:根据给定的a1,d,lena1,d,lena_1,d,len,可以在O(1)O(1)O(1)或O(logn)O(logn)O(\log n)的级别上出解与顺序无关满足区间加法我想到的是用方差...原创 2018-07-25 16:59:47 · 422 阅读 · 0 评论 -
BZOJ 3735 Pa2013Konduktorzy
ProblemBZOJSolution先喷一下这道题的提示,能继续检票的条件可以无视。我们希望能减少中途对最后答案无意义的模拟,那么考虑二分最后的位置,然后用堆模拟最后几步。 step=∑ki=1posa[i]step=∑i=1kposa[i]step=\sum_{i=1}^k \frac {pos} {a[i]} 那么二分出这个pos之后,就可以再向前推几步,然后用堆模拟...原创 2018-07-15 17:20:29 · 336 阅读 · 0 评论 -
BZOJ 1107 驾驶考试EGZ POI2007
ProblemBZOJSolution又是大神题。。在做dp的时候不知怎么就做到了这道题,可能跟dp唯一有点关系的可能就是lis了吧?考虑把边反向,那么就是要1~n所有点都能到达i,那么就只需1,n满足条件即可。 不妨令f[i]表示1可以达i最少需要多少建多少条边,贪心一下,就是利用起左边的lis,然后建其他的边。 求lis可以用树状数组搞。 cnt统计的是本来就满足条件的边...原创 2018-07-26 22:17:29 · 262 阅读 · 0 评论 -
BZOJ 4555 HEOI2016/TJOI2016求和
ProblemBZOJSolution发现我的思路比较清奇??首先可以用容斥推出第二类斯特林数的通项公式 Smn=1m!∑i=0m(−1)iCim(m−i)n=∑i=0m(−1)i(i!)(m−i)n(m−i)!Snm=1m!∑i=0m(−1)iCmi(m−i)n=∑i=0m(−1)i(i!)(m−i)n(m−i)!S_n^m=\frac 1 {m!}\sum_{i=0}^m (...原创 2018-08-11 17:34:42 · 216 阅读 · 0 评论 -
BZOJ 2726 SDOI2012 任务安排
ProblemBZOJSolution不难设出一个不怎么样的状态f[i][j]表示前i个分j段的最小代价f[i][j]=min(f[k][j−1]+(S∗j+st[i])∗(sf[i]−sf[k]))f[i][j]=min(f[k][j−1]+(S∗j+st[i])∗(sf[i]−sf[k]))f[i][j]=\min(f[k][j-1]+(S*j+st[i])*(sf[i]-sf...原创 2018-09-13 20:21:31 · 221 阅读 · 0 评论 -
BZOJ 3925 ZJOI2015 地震后的幻想乡
ProblemBZOJ每条边都有一个[0,1]边权,求最小生成树中最大边的期望大小n个[0,1]的随机变量,第k小的期望是kn+1\frac k {n+1}n+1kSolution姑且不论为啥第k小的期望是kn+1\frac k {n+1}n+1k,那是题目中给的信息……我也不会证qwqqqMST上的最大边就是在kruskal的时候最后加入的边,那么就要求加到第i条边时联通的概率,...原创 2018-10-01 22:24:56 · 316 阅读 · 0 评论 -
BZOJ 4237 稻草人
ProblemBZOJSolution不知道为什么网上的题解每一篇都要强调一句“此题很简单”,我觉得不是很简单啊qwqqq按x坐标排序,然后进行分治,每次只统计跨立两个区间的矩形个数,为了避免重复统计,我们仅统计从左下角到右下角的矩形。枚举左边的点,显然我们只需要考虑y坐标比它大的点(当然,x坐标也比它大),那么我们可以这样按照y坐标从上到下进行归并排序。由于矩形中不允许有其他...原创 2018-07-16 13:44:56 · 390 阅读 · 0 评论 -
BZOJ 4199 NOI2015品酒大会
ProblemBZOJ 题意:∀i∈[1,n−1]∀i∈[1,n−1]\forall_{i\in[1,n-1]},求最长公共前缀的长度为i的后缀有多少对,并求权值乘积最大为多少Solution这道题的前置题目应该是AHOI2013 差异在parent树上,祖先表示了这个节点的后缀,那么两节点的lca,就是最长公共后缀。 那么考虑翻转原串,建出后缀自动机,拓扑排序之后再跑dp,注...原创 2018-06-30 14:17:07 · 230 阅读 · 0 评论 -
BZOJ 2830 SHOI2012随机树
ProblemBZOJ权限题 良心洛谷Solution事件的期望不但要把所有情况求和,而且还要考虑其发生的概率,进行加权对于第一个询问,我们不妨设f[i]表示展开i次后的平均深度。注意展开i次之后有i+1个叶子节点。考虑从f[i-1]转移,此时我们就只需要任取其中一个叶子节点进行展开即可得到f[i],由于此时期望状态下,叶子的平均深度为f[i-1],则此时的深度和是f[i−1]∗...原创 2018-05-19 21:49:05 · 356 阅读 · 0 评论 -
BZOJ 2752 HAOI2012高速公路
ProblemBZOJSolution前置技能:∑ri=li=(l+r)(r−l+1)/2∑i=lri=(l+r)(r−l+1)/2\sum_{i=l}^r i=(l+r)(r-l+1)/2,∑ni=1i2=n∗(n+1)∗(2∗n+1)/6∑i=1ni2=n∗(n+1)∗(2∗n+1)/6\sum_{i=1}^n i^2=n*(n+1)*(2*n+1)/6一道期望的题目,直接推公...原创 2018-05-18 23:12:56 · 228 阅读 · 0 评论 -
BZOJ2329 HNOI2011括号修复
ProblemBZOJSolution考虑询问,如果我们把相互匹配的括号删除,那么我们最终会得到形如)))(的序列。 对于这样一个序列,我们不妨贪心。将左边连续的l个右括号,从第一个到(l+1)/2分别改为左括号。对右边则反之。 那么当l为偶数时,左边会变得合法。当l为奇数时,会多余一个左括号,但由于题目保证了有解,即l+r为偶数,这个多余的左括号将与右边的多余右括号匹配。 这样...原创 2018-05-21 14:05:44 · 229 阅读 · 0 评论 -
BZOJ3572 HNOI2014世界树
ProblemBZOJSolution虚树+dp,但是dp挺难写的 写什么dp咯,分情况讨论+模拟可是O(n)的详细说一下dp吧。我们设bel表示这个点最近的关键点,直接dp儿子,然后比较子树中的答案是否更优。但是最近的关键点可能并不在子树中,那么我们还需要重新再判断一下,是否父亲的最优答案可以更新儿子的最优答案。可以用两边dp解决。 怎么统计答案?不妨直接对虚树上的边进行考虑...原创 2018-06-11 14:31:20 · 254 阅读 · 0 评论 -
BZOJ3626 LNOI2014LCA
ProblemBZOJSolution就是给定询问l,r,z求∑ri=ldeep(lca(i,z))∑i=lrdeep(lca(i,z))\sum_{i=l}^r deep(lca(i,z)) 我们考虑把deep的含义转化一下,它就是表示某个点到根节点需要经过几个节点 那么把路径上的deep差分之后就变成了一条1,然后我们做一个区间询问和即可得到deep那么我们就用这种思想...原创 2018-06-04 22:37:20 · 375 阅读 · 0 评论 -
BZOJ3307 雨天的尾巴
ProblemBZOJ权限题 良心洛谷Solution这道题目的花呢,本来想缩先树剖(可能需要长链剖分?),再搞一个标记永久化,然后最后合并答案,不过可能会卡空间。。时间复杂度呢是O(nlog2n)O(nlog2n)O(nlog^2n) 然后boshi表示:“为什么不差分然后再自底向上合并线段树呢” 于是就做到了O(nlogn)O(nlogn)O(nlogn) 好优秀的做法qw...原创 2018-05-24 22:12:42 · 441 阅读 · 0 评论 -
BZOJ5287 HNOI2018毒瘤
ProblemBZOJSolution顾名思义,如果不是暴力分比较多,的确是一道很毒瘤的题。。题面中所谓的联通操作就是保证互斥的连边后,是一个连通图。我们从树的状态考虑起。不妨设f[x][1/0]表示子树x中x选/不选时合法的方案数。 容易得到转移方程f[x][1]=∏f[son][0],f[x][0]=∏(f[son][0]+f[son][1])f[x][1]=∏f[son...原创 2018-06-13 14:39:56 · 395 阅读 · 0 评论 -
BZOJ3992 SDOI2015序列统计
ProblemBZOJSolution指标+循环卷积NTT+快速幂 我做这道题颓了一个下午,我要报警了求∏ni=1ai≡x(modm)∏i=1nai≡x(modm)\prod_{i=1}^n a_i≡x\pmod m的方案数 我们从dp出发考虑这道题 设f[i][j]为前i项之积模m的值为j的方案数,则有 f[i][j]=∑k∗r%m=jf[i−1][k]∗f[i−1][r...原创 2018-05-31 17:43:18 · 227 阅读 · 0 评论 -
BZOJ2626 JZPFAR及kd-tree入门
ProblemBZOJ权限题 洛谷Solutionhdu4347和这道题也很类似。我们用kd-tree来做,用一个堆来维护可能成为k远的几个点,不断更新答案。优先搜可能更远的子树,再根据估价函数判断需不需要搜另一个子树。注意重载小于号和估价函数不要写错了。注意当现在的节点少于k时仍然不能进入空子树,否则可能会影响答案。Code#include <algori...原创 2018-06-10 18:07:33 · 558 阅读 · 0 评论 -
BZOJ 3206 APIO2013 道路费用
ProblemBZOJSolution注意到k只有20,那么对于这个图,很多点是由普通边连接的,那么我们可以先强制把所有的特殊边加入,然后把普通边做一次mst,则其他未加入的边肯定是不会做贡献的,把这些由普通边连起来的点缩在一起的,不妨称为新图。新图只有tot(tot≤k+1)tot(tot\leq k+1)tot(tot≤k+1)个点,但是由于特殊边的选择方案可能导致树的形态发生改变,所...原创 2018-10-18 08:24:16 · 261 阅读 · 0 评论 -
dp优化学习笔记
ProblemBZOJ斜率优化原谅我之前做斜率优化题的时候都是在瞎bb,这才是靠谱的比如我们有个这样的式子,要求最大化Y=f[i]=A(i)+B(j)+C(i)D(j)Y=f[i]=A(i)+B(j)+C(i)D(j)Y=f[i]=A(i)+B(j)+C(i)D(j)我们可以先忽略A(i)A(i)A(i)则Y=C(i)D(j)+B(j)Y=C(i)D(j)+B(j)Y=C(i)D(j)...原创 2018-10-18 20:55:08 · 278 阅读 · 0 评论 -
UOJ348 WC2018 州区划分
ProblemUOJSolution做的时候SB了,纠结了好久怎么判定欧拉回路,YY了半天状压DP无果,后来突然想起欧拉回路的充要条件是联通且点的度数为偶数。设h[s]=∑x∈swxh[s]=\sum_{x\in s} w_xh[s]=∑x∈swx,如果sss是合法的那么g[s]=h[s]g[s]=h[s]g[s]=h[s],否则g[s]=0g[s]=0g[s]=0那么枚举最后的划分...原创 2019-01-24 11:31:35 · 276 阅读 · 0 评论 -
BZOJ2154 Crash的数字表格及 BZOJ2693 JZPTAB
做这两道题做得心力交瘁,太恶心了,好久没做数学题,套路差点都全忘光了,推式子的时候犯了一堆错:没有注意是否仍然满足乘法分配率模数看错ProblemBZOJ2154求∑i=1n∑j=1mlcm(i,j)\sum_{i=1}^n\sum_{j=1}^m lcm(i,j)i=1∑nj=1∑mlcm(i,j)Solution变一下原式∑i=1n∑j=1mijgcd(i,j)\su...原创 2019-01-16 22:27:31 · 192 阅读 · 0 评论 -
BZOJ1758 WC2010 重建计划
ProblemBZOJSolution二分答案,把路径权值都减去mid,那么就变成了能不能选出一条长度[L,R][L,R][L,R]权值大于等于0的路径。考虑点分治,那么我们就只需要考虑拼接两棵子树。这是一个有长度限制以深度为下标的dp。这里用单调队列优化。记录 f[i]f[i]f[i] 表示之前遍历过的子树中深度为 iii 到根的最大权值,g[i]g[i]g[i] 为当前的,单调队列优化...原创 2019-02-08 12:48:25 · 251 阅读 · 0 评论 -
BZOJ3515 Evenpaths
ProblemBZOJSolution看到数据范围,考虑折半搜索。按照拓扑序,把关键点集平分为左右两边来考虑。如果我们dp出0到点x的路径条数 pxp_xpx,点x到1的路径条数 sxs_xsx,那么被这个点计数的路径条数显然是 px×sxp_x\times s_xpx×sx。对于一条路径,我们用第一次经过的右半边的关键点(可能没有障碍)来计数,因此顺便把1号点也设为关键点。这样 ...原创 2019-02-19 22:45:11 · 418 阅读 · 0 评论 -
HAOI2018 题解
rush了两天终于写完了,CJ那群神仙咋写的那么快??跪烂不过HAOI暴力分好多啊。。原创 2019-03-11 22:26:22 · 353 阅读 · 0 评论 -
BZOJ5259 CERC2017 Intrinsic Interval
ProblemBZOJSolution队长:这不是WC上讲的析合树吗?我(懵逼):……?有一个性质,如果有两个连续区间交叉了,那么它们的交集一定也是连续区间。因为如果它不是,那么中间一定是缺了一个元素,而这两个区间不可能同时拥有这个缺少的元素。那么对于一个询问,包含它的最短的连续区间,必然是从询问的 rrr 端点开始,能包含且 lll 最大的区间。直接做有点无从下手,把连续区间的定...原创 2019-03-17 21:03:43 · 347 阅读 · 0 评论 -
BJOI2019部分题解
送别估计是不会写了。勘破神机已填坑。代码就不贴了QAQ原创 2019-04-27 18:21:10 · 379 阅读 · 0 评论 -
BZOJ4944 NOI2017 泳池
ProblemBZOJSolution据说当场10+的人数很少,虽然是道好题,但是不是毒瘤过头了啊QAQ恰好面积为 kkk 并不好处理,不妨求面积小于等于 kkk,则最后答案为 P(k)−P(k−1)P(k)-P(k-1)P(k)−P(k−1)。为了方便描述,我们约定从最下方的行开始编号为第1行,qqq 表示块安全的概率。考虑第1行,由于面积都要小于等于 kkk,则第一行不会连续出现 ...原创 2019-05-03 22:25:12 · 307 阅读 · 0 评论 -
UOJ394 NOI2018 冒泡排序
ProblemUOJSolution对于排列中的一个数,如果它前面有 kkk 个大于它的数,那么它一定会向前走 kkk 步,而这每一步都不能浪费才能达到下界,因此一个数的前面要么全都比它小,要么所有比它小的数都出现了在它的前面。然后画画图,发现这其实等价于序列的最长下降子序列长度不超过2。这样我们就可以设 f[i][j]f[i][j]f[i][j] 表示前 iii 个数最大值为 jjj 的...原创 2019-05-05 13:58:06 · 287 阅读 · 0 评论 -
BZOJ2080 POI2010 Railway
ProblemBZOJ数据范围为10510^5105的双栈排序。Solution为了方便讲述,令L[i]L[i]L[i]表示比aia_iai小的最靠右的位置。那么对于所有的i&lt;j&lt;L[i]i&lt;j&lt;L[i]i<j<L[i]且aj&gt;aia_j&gt;a_iaj>ai,它们显然都不能放在同一个栈...原创 2019-01-23 20:11:42 · 378 阅读 · 0 评论 -
UOJ395 NOI2018你的名字
ProblemUOJ给定一个S串,有m组询问,每次给定一个T串,询问T串有多少个本质不同的子串没有在S串的区间[L,R][L,R][L,R]中出现过。Solution看到涉及到子串的题我们就得把S串的SAM乖乖建好,看到本质不同,我们就还得把T串的SAM乖乖建好。从统计本质不同子串的原理出发,我们只需要减去不合法的子串即可。一个比较显然的想法是,我们用T串去匹配[L,R][L,R][L,...原创 2019-01-13 19:07:50 · 412 阅读 · 0 评论 -
BZOJ4221 kangaroo
ProblemBZOJSolution想了一个下午不会做,然后发现有这么两篇题解,感觉思路好奇妙:clarispenth可以这样想,把袋鼠拆成两个点,上面是体积,下面是袋子,如果袋鼠a放到袋鼠b里去,则必须满足ax≤bya_x\leq b_yax≤by,即相当于在二分图上从上向下连线。那么其实这个就是要求最后局面中没有连线的mina&gt;maxb\min a&...原创 2018-10-16 19:27:05 · 624 阅读 · 1 评论 -
BZOJ4025 二分图
ProblemBZOJSolution关于二分图的判定,我们可以考虑原图的一个生成树,然后对于所有非树边,我们统计一下奇环个数即可然后可以用时间线段树,带权并查集维护一下路径上的点的个数,时间复杂度是O(mlogTlogn)O(m\log T\log n)O(mlogTlogn)也可以用lct维护时间最大生成树,注意一下细节即可,时间复杂度是O(mlogn)O(m\log n)O(...原创 2018-12-05 20:45:55 · 280 阅读 · 0 评论 -
BZOJ1492 货币兑换NOI2007
ProblemBZOJSolutionC[i]C[i]C[i]则表示第i天持有的最多的RMB,那么当天持有的最多的金券则分别可以用其表示C[i]=maxj=1i−1(A[j]∗ai+B[j]∗bi)C[i]=\max_{j=1}^{i-1} (A[j]*a_i+B[j]*b_i)C[i]=j=1maxi−1(A[j]∗ai+B[j]∗bi)将C[i]C[i]C[i]中的ai,bi...原创 2018-12-19 22:31:46 · 210 阅读 · 0 评论 -
BZOJ 5092 分割序列
ProblemBZOJSolutionf(b,n)=maxi=0n((b1⊕b2⊕...⊕bi)+(bi+1⊕bi+2⊕...⊕bn))f(b,n)=\max_{i=0}^n((b_1 \oplus b_2 \oplus...\oplus b_i)+(b_{i+1} \oplus b_{i+2} \oplus...\oplus b_n))f(b,n)=i=0maxn((b1⊕b2⊕...原创 2018-12-15 16:13:41 · 264 阅读 · 0 评论 -
BZOJ3028 食物
ProblemBZOJSolution我们去构造各个物品的生成函数f1(x)=11−x2f_1(x)=\frac {1} {1-x^2}f1(x)=1−x21f2(x)=1+xf_2(x)=1+xf2(x)=1+xf3(x)=1+x+x2f_3(x)=1+x+x^2f3(x)=1+x+x2f4(x)=x1−x2f_4(x)=\frac {x} {1-x^2}f4(x)=1−...原创 2019-01-04 12:09:38 · 444 阅读 · 0 评论 -
BZOJ 3171 TJOI2013循环格
ProblemBZOJSolution很有意思的一道题目先讲讲怎么建图:把每个格子拆成入点uxu_xux和出点vxv_xvx,对于每个格子的入点依次向四周格子的出点连边,方向和给定方向一样则费用为0,否则费用为1。源点向入点连流量为1,费用为0的边,出点向汇点连流量为1,费用为0的边。那么我们就想要证明每个最大匹配都对应一个完美格子。其实证明并不难,对于最大匹配下,如果uxu_x...原创 2018-12-25 20:34:52 · 267 阅读 · 0 评论