摘要: "题目链接" 题意分析 一句话题意 : 树上一条链中挑选出某些数 异或和最大 我们可以考虑维护一个树上倍增线性基 然后倍增的时候 维护一个线性基合并就可以了 写起来还是比较容易的 CODE: cpp include include include include include include in 阅读全文
posted @ 2019-04-20 15:37 tcswuzb 阅读(212) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 一开始看了之后 没有什么思路 后来直接观察了 "$ghj1222$" 的博客之后 明白了 首先我们可以任意找出来一条路径$1→n$ 然后我们思考一下有什么更优的吗 对了 我们没准可以舍近求远 然后用 环来优化一下 具体看图 首先 从原路径到达环的被抵消掉了 那么有贡献的就是环 阅读全文
posted @ 2019-04-17 22:02 tcswuzb 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 写在之前 线性基是一个神奇的东西 曾经傻傻的以为一趟序列dp下来就可以求最大异或和了 正式开始 由于我比较菜 所以只写了求序列最大异或和 线性基资瓷插入以及查询两种操作 $1.$插入 我们对于当前的数 由高位向低位进行比较 如果当前这一位$i$没有数的话 我们就把当前值为$a_i=x$ 结束比较 否 阅读全文
posted @ 2019-04-17 21:53 tcswuzb 阅读(278) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 首先考虑链的话 就是将$1$部分的两条子链排序之后 贪心合并即可 那么考虑树的话 我们照样合并就行了 首先 排序的话 我们使用堆就可以了 然后 涉及到了两点问题 $1.$我们对于$u$以及$v$这两个维护好的堆合并的话 为了保证时间复杂度 我们需要使用 启发式合并 $2.$我 阅读全文
posted @ 2019-04-17 20:37 tcswuzb 阅读(186) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 结论题 + $DP$ 我们可以将从左上到右下走看成一个$DAG$ 那么 就是要我们求当前$DAG$的最小覆盖 首先 $D$氏定理 一个$DAG$的最小覆盖就是这个$DAG$的最大独立集 然后就是$DP$求最大独立集 根据这个方格 最大独立集中任意两个元素都是满足 左下 右上 阅读全文
posted @ 2019-04-17 19:09 tcswuzb 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题意分析 这题一看没有什么思路 幸好我们机房的红太阳$ghj1222$切了这道题 首先我们考虑风跑一个来回之后人怎么样 就是跑了一个区间 也就是风跑了若干个来回之后 人跑了若干个区间 所以我们考虑求出距离最小的那个区间 距离是一个单峰函数 所以我们用 三分 求 然后的话 问题就是求 两条有向线段之间 阅读全文
posted @ 2019-04-13 20:27 tcswuzb 阅读(143) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 三分套三分 我们不经意间发现 这是一个单峰套单峰函数 我们假设 $AB$上最优点是$x$ $CD$上最优点是$y$ 那么就是求$min\{dis(A,x)/p+dis(y,D)/q+dis(x,y)/r\}$ 我们首先 在$AB$上三分这个点$x$ 然后在当前情况下再在$CD 阅读全文
posted @ 2019-04-13 19:58 tcswuzb 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 写在之前 今天学习了三分法 真的好好用 回去直接把模板切了 正式开始 三分法就是单峰函数求最值 当前我们位于$[le,ri]$ 然后我们我们有两个三等分点$mid,mmid(midf(mmid)$ 那么可以确定的是$mmid$一定位于极值点右边 证明 : 画图之后显然啊 $2.f(mid) incl 阅读全文
posted @ 2019-04-13 19:53 tcswuzb 阅读(484) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 首先 如果当前序列中一头奶牛拿不到礼物的话 那么他后面的奶牛也拿不到礼物 所以我们可以二分 由于可以操作无限次 所以我们对于当前$[1,mid)$的奶牛按照$c$值排序之后 贪心的先放$c$中最小的奶牛 如果依然存在一头奶牛被放在$mid$之前 那么就无法使$mid$得到礼物 阅读全文
posted @ 2019-04-12 08:31 tcswuzb 阅读(243) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 一看就知道是一道$01$分数规划的题 我们二分值之后 跑树形背包就可以了 CODE: _HEOI 2019 RP++_ 阅读全文
posted @ 2019-04-04 08:57 tcswuzb 阅读(227) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 我们考虑 交换两个数$[le,ri]$的贡献 减少的逆序对数$[le,ri]$中小于$num[le]$以及大于$num[ri]$的数 增加的$[le,ri]$中大于$num[le]$以及小于$num[ri]$的数 同时注意 如果$num[le]!=num[ri]$ 二者相互的 阅读全文
posted @ 2019-04-04 08:12 tcswuzb 阅读(262) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 首先对于一个可以匹配的字符串 我们发现 差分之后出除了最后一位外是相等的 所以我们要求的就是拆分之后最长匹配长度+1 首先 我们将差分之后的拼成一个长串 然后建出$SA$ 发现答案具有可二分性 然后我们再使用$height$数组 将$lcp≥now$的后缀分成一组 如果存在共 阅读全文
posted @ 2019-04-04 08:03 tcswuzb 阅读(259) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 带修改树链第$k$大 首先我们使用树链剖分将树上问题转化为区间问题 然后对于当前修改 我们直接修改即可 对于链上第$k$大 我们先求一个总点数 转化为链上第$k$小 然后我们将$x$到$y$之间所有的重链都提出来 那么在$dfs$序上就是一堆连续区间 而且最多$log$个 类 阅读全文
posted @ 2019-04-03 19:03 tcswuzb 阅读(128) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 首先我们需要求的是统一以后的值$x$ 并且一般的棋盘操作我们都需要黑白染色 那么对于棋盘格子是偶数的情况的话 答案是存在单调性的 因为如果统一之后 两两搭配还是可以再加一个的 如果棋盘格子是奇数的话 那么黑格子数量为$num1$ 权值和为$sum1$ 白格子数量为$num2$ 阅读全文
posted @ 2019-04-03 14:43 tcswuzb 阅读(233) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 首先一看就知道这是一道最小割 这里奉上最小割的代码 cpp include include include include include include include include include include include include include incl 阅读全文
posted @ 2019-04-02 19:35 tcswuzb 阅读(204) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 我们考虑维护两个栈 分别支持左边的插入删除以及右边的插入删除 然后对于两两个栈的我们需要用背包求出最优答案 注意 删除时如果不够的话 我们需要从另一个栈中取出一半加入另一个栈中 注意保持顺序 CODE: cpp include include include include 阅读全文
posted @ 2019-04-02 16:12 tcswuzb 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 题意分析 首先 要求起点终点不连通 再结合数据范围 就是最小割了 首先我们可以建一个图出来 如果$x$可以到$y$的话 那么我们就从$x$向$y$连一条代价为$h[x] h[y]+1$的边 代表不联通的代价 可是如果存在以下情况呢 如果我们选择切断$c$到$d$的边的话 实际上我们也切断了$a$到$ 阅读全文
posted @ 2019-04-02 15:05 tcswuzb 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题意分析 就是让你求 $$\sum_{i=1}^{|S|}val[i][gcd(a[i],x)=y]$$ 那么接下来就是化简式子 $$\sum_{i=1}^{|S|}val[i][gcd(\frac{a[i]}{y},\frac{x}{y})=1]$$ $$\sum_{i=1}^{|S|}val[i 阅读全文
posted @ 2019-04-01 18:54 tcswuzb 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题意分析 首先存在树上的删边连边操作 所以我们使用$LCT$维护 然后考虑怎么维护答案 可以发现 对于一条链 我们编号为$1,2,3,...,n$ 那么期望就是 \(\frac{a_1* 1* n+a_2* 2* (n-1)+a_3* 3* (n-2)+...+a_n* n* 1}{\fr 阅读全文
posted @ 2019-03-31 17:23 tcswuzb 阅读(258) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 受到了$olinr\ \ julao$的影响 写了匈牙利算法 首先 我们对于每一个人 从高到低枚举志愿 如果当前志愿的老师有剩余的话 那么我们就选 否则的话 我们看看谁的那个志愿选了这个老师 我们跑匈牙利算法 看看是否更优 如果当前可以在接受范围内匹配上的话 我们就选择 否则 阅读全文
posted @ 2019-03-30 22:12 tcswuzb 阅读(218) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 首先$1→2$的每一天路径上不可以存在环 所以我们先来一个$Tarjan$找环 然后如何确定$1$到$2$的路径上存在环呢 我们先正向边$1→2$跑一次 然后反向边$2→1$跑一次 全部都标记到的点就是会经过的点 如果有一个点位于环上 就是$inf$ 否则的话 正常的拓扑$d 阅读全文
posted @ 2019-03-30 18:49 tcswuzb 阅读(219) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 我们令$dp[i][j][k]$表示当前区间$[i,j]$最小价格为$k$的最大收益 那么状态转移方程就是 $$dp[i][j][k]=max\{dp[i][pos 1][x]+dp[pos+1][j][y]+cnt[pos][k] k\}$$ $$x,y≥k$$ $cnt[ 阅读全文
posted @ 2019-03-30 15:53 tcswuzb 阅读(269) 评论(0) 推荐(1) 编辑
摘要: "题目链接" 题意分析 首先 我们肯定会贪心的走从根节点到叶子结点最长的一条链 首先没有过剩的就好办了 但是有的话 我们就一边往下走 一边走分支 分支上每一个点平均走过两次 所以我们把剩下的除以$2$即可 CODE: cpp include include include include inclu 阅读全文
posted @ 2019-03-30 15:25 tcswuzb 阅读(154) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题目链接 这道题建出模型之后就是一个树形图 首先我们不考虑有向边的关系 而是直接考虑树形$dp$ 关键是怎么个树形$dp$ 我们维护$dp[u][i]$表示当前$u$节点在已经遍历的子树中拓扑序排名为$i$的情况数 那么接下来就是经典的做法 合并$u$和子树$v$ 我们假设当前$u$已 阅读全文
posted @ 2019-03-30 06:26 tcswuzb 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意分析 首先$\%\%\%\%olinr$以及花_Q$julao$当场切题 然后就是怎么求 $$max(|a A|,|b B|)=max(a A,A a,B b,b B)$$ 我们令$x_1=(a+b)/2,x_2=(A+B)/2,y_1=(a b)/2,y_2=(A B)/2$ $$max(x_ 阅读全文
posted @ 2019-03-29 20:13 tcswuzb 阅读(160) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 题意精简一下就是 求所有连续区间和的异或和 由于涉加到计算区间和 所以我们先跑一个前缀和 然后 由于涉及到了位运算 我们很自然地联想到了拆位 对于当前我们枚举到了第$k$位 我们到了第$i$个数$s_i$ 如果$s_i$当前这一位是$1$ 1.存在$s_j(ji$ 那么也可以 阅读全文
posted @ 2019-03-29 19:42 tcswuzb 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题意分析 \(olinr\) : 序列自动机+一系列的鬼畜操作 相信我 你们没人能切 \(lzxkj\) : $2^m+vector+$暴力二分 跑得比你正解还快 首先一看$m≤5$ 直接$2^m$枚举所有的子序列 然后我们用一个$vector$把匹配序列中的权值相同的位置存入一个$vec 阅读全文
posted @ 2019-03-28 18:21 tcswuzb 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 题意分析 题目链接 这里借鉴了$Youngsc$以及$hzwer$的思路 首先由于涉及到了区间异或最值的问题 所以我们需要使用到$01Trie$树 这里贴一道板子题 然后对一个位置$x$ 我们维护四个位置$l_1,l_2,r_1,r_2$ \(l_1\) 从$x$往左数第一个大于$x$的位置 \(l 阅读全文
posted @ 2019-03-28 18:06 tcswuzb 阅读(114) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 题意 给你一棵树 每一次都会删除一个叶子节点 同时树上存在一些有向边$(a,b)$ 必须满足$a$在$b$之前删除 问每一个节点作为根节点时是否存在合法的删边情况 使得跟、根节点被最后一个删除 换根$dp$ ? $No$ ! 首先有向边必定形成一个或者多个$DAG$ 所以先判 阅读全文
posted @ 2019-03-28 06:30 tcswuzb 阅读(264) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 首先我们可以得出计算公式 $$s_i=\prod_{k=1}^i(1 p_k)$$ $$f_i=\sum_{k=1}^i\frac{p_k}{1 p_k}$$ 那么 $$ans(i,j)=\frac{s_r}{s_{l 1}}{f_r f_{l 1}}$$ 强行枚举 $O(n 阅读全文
posted @ 2019-03-27 19:50 tcswuzb 阅读(265) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 神题呀 ! ! ! 首先在线好像没有什么办法 所以考虑离线 我们把询问按照右端点排好序 假设说我们已经维护出了$ans(i,j)=ans[i]$ 那么显而易见的是 $$ans[i]=min\{ans[k]\}(i≤k include include include inclu 阅读全文
posted @ 2019-03-27 15:58 tcswuzb 阅读(266) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 首先我们令答案为$dp[n][k]$ 经过观察可以发现答案是存在积性的 $$dp "n][k] dp[m][k]=dp[n m][k" ==1)$$ 那么为根据质数的唯一分解定理 $x=p_1^{a_1}p_2^{a_2}......p_n^{a_n}$ 然后我们分别计算出$ 阅读全文
posted @ 2019-03-27 06:12 tcswuzb 阅读(155) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 我们仔细分析一下 发现题目要求用最多$k$条路径实现最小权覆盖 首先由于最小路径覆盖针对的是有向图 但是这是一个无向图 所以我们面向对象编程 我们维护一个数组$d[i][j]$ 表示$i,j$之间的最短距离 由于是$n≤150$ 所以我们可以使用$floyed$求 同时由于我 阅读全文
posted @ 2019-03-26 19:17 tcswuzb 阅读(185) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 一句话题意就是 : 让你选出$(k+1)$条不相交的链 使得这些链的边权总和最大 (这些链可以是点) 我们考虑使用树形$DP$ $dp[i][j][0/1/2]$表示以$i$为根的子树选出$j$条链 并且$j$的度数是$0/1/2$的最大总和 那么我们使用树上背包进行转移 $ 阅读全文
posted @ 2019-03-25 11:28 tcswuzb 阅读(160) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 当前等级为$x$的魔法书会对等级在$[x,inf]$的所有人造成$y$的影响 所以除了求平均值之外 就是 区间修改区间求和 需要使用 动态开点 + 标记永久化 需要注意的是 当前点为空的话 需要返回 目标区间长度 下放标记值 CODE: cpp include include 阅读全文
posted @ 2019-03-24 21:46 tcswuzb 阅读(264) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 这个题其实不是期望 就是一共有$C_{2n}^m$种情况 每一种情况选择$k$张牌 然后求最大攻击值的总和 我们考虑 当前抽出了选出了$i$张强化牌 $m i$张攻击牌 首先 可以肯定的是 能出强化牌就尽量出强化牌 我们去枚举$i$ 如果$i include include 阅读全文
posted @ 2019-03-24 21:46 tcswuzb 阅读(168) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 首先 $[u,v]$在树上是一条深度递增的链 那么我们可以使用倍增找 $x$的祖先当中深度最大的值大于$x$的点 然后维护一个$pre$ 重新建树 这样从$x$到根节点 权值严格递增 我们在这个新树上维护好深度以及倍增数组 然后再去倍增找到 最近的权值 z的点 如果不存在或者 阅读全文
posted @ 2019-03-24 21:44 tcswuzb 阅读(242) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 $$\sum_{i=1}^n\sum_{j=1}^mμ^2(gcd(i,j))$$ $$=\sum_{i=1}^n\sum_{j=1}^m\sum_{d=1}^{min(n,m)}μ^2(d)[gcd(i,j)==d]$$ $$=\sum_{d=1}^{min(n,m)}μ^ 阅读全文
posted @ 2019-03-24 21:37 tcswuzb 阅读(317) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 题意分析 由于要么学文科要么学理科 我们考虑用 最小割 解决问题 关键是怎么建图~~网络流的唯二难点~~ 首先我们考虑没有集体加成的时候 由$S$向$(i,j)$建边权为$art_{i,j}$的边 然后由$(i,j)$向$T$建边权为$science_{i,j}$的边 这样的跑出最大流 阅读全文
posted @ 2019-03-24 21:36 tcswuzb 阅读(190) 评论(0) 推荐(1) 编辑
摘要: 写在之前 李超线段树 简称$LCT$ 正式开始 李超线段树主要用于维护这样一类问题 有两个操作 1.插入一条直线(k,b) $y=kx+b$ 2.给出一个值$x$ 求$x=k$与这些直线交点中纵坐标的最大值 我们可以使用$CDQ$分治或者平衡树维护 但是这里有了一种玄学鬼畜的数据结构 李超线段树 $ 阅读全文
posted @ 2019-03-24 21:35 tcswuzb 阅读(372) 评论(0) 推荐(2) 编辑