09 2018 档案

摘要:"传送门" 题目中给的信息很难直接维护,但是可以考虑一条边对答案的贡献 在以$x$为根的子树里,如果一条边$i$的权值为$w_i$,这条边深度更深的端点为$to_i$,那么这条边对这个子树的贡献为$w_i size_x (size_x size_{to_i})$,也就是这条边会被计算边两端点个数之积 阅读全文
posted @ 2018-09-29 14:54 ✡smy✡ 阅读(204) 评论(0) 推荐(0)
摘要:"传送门" 题意是选出两条从左往右的中间点不能重复选的路径,并使得经过的所有点数最大 可以考虑最大费用最大流,即把所有点拆点,入点向出点中间连容量为1,费用为1的边,然后按照题目中的关系把左边点的出点和右边点的入点连容量为1,费用为0的边(起点和终点的中间边容量为2);源点到起点,终点到汇点连容量为 阅读全文
posted @ 2018-09-26 22:22 ✡smy✡ 阅读(169) 评论(0) 推荐(0)
摘要:"传送门" 一个人推箱子,和之前的 "华容道" 中的棋子移动有~~异曲同工之妙~~,因为每次可以让人走到箱子的其他方向上,或者推一下箱子 所以状态可以设成$f_{i,j,k}$,即箱子在$(i,j)$,人在$k$方向的状态是否存在,一开始也要把人移到箱子旁边作为初始状态,然后每次移动人到箱子其他方位 阅读全文
posted @ 2018-09-26 14:35 ✡smy✡ 阅读(260) 评论(0) 推荐(0)
摘要:"传送门" 这道题中,棋子的移动是要移动到空格上去,所以空格要在棋子旁边才能移动棋子;而棋子移动的方向由空格决定 所以我们可以记三维状态$di_{i,j,k}$,表示状态为棋子在$(i,j)$,空格在棋子$k$方向(顺时针编号0到3)上的最短距离 要$bfs$预处理$mv_{i,j,k,l}$,表示 阅读全文
posted @ 2018-09-26 09:56 ✡smy✡ 阅读(115) 评论(0) 推荐(0)
摘要:"传送门" 这里记$s_i$为前$i$个位置下面的球个数之奇偶性($s_0=0$) 我们只要把$s_1$到$s_n$求出来救星了 考虑一个区间询问$(l,r)$,其实求的是 $s_{l 1}\ xor\ s_r$ ,也就是知道其中一个可以推出另一个 我们要知道所有的$s_1$到$s_n$,如果看成图 阅读全文
posted @ 2018-09-25 22:29 ✡smy✡ 阅读(77) 评论(0) 推荐(0)
摘要:"传送门" 要使得经过一系列移动后对角线上全是黑的,也就是要存在$n$个点,满足每行都只有一个,以及每列都只有一个,这$n$个棋子也就是所在行和所在列一一匹配 于是把题目给的矩阵当成二分图邻接矩阵,然后最大匹配救星了 cpp // luogu judger enable o2 include def 阅读全文
posted @ 2018-09-25 22:16 ✡smy✡ 阅读(89) 评论(0) 推荐(0)
摘要:"传送门" 要求断掉某些边使得两个点不连通,~~显然~~是最小割 但是要求选的边数尽量少,,, 可以考虑修改边权(容量),即把边权$c$改成$c (m+1)+1$ 没了 cpp // luogu judger enable o2 include define LL long long define 阅读全文
posted @ 2018-09-25 22:06 ✡smy✡ 阅读(109) 评论(0) 推荐(0)
摘要:"传送门" 题目要求合法的区间个数,这里考虑用总区间个数减去不合法的个数 假设某个数为区间最大值,那么包含这个数的最长区间内,所有数小于他并且所有数没有这个最大值没有的二进制位,可以按位考虑每个数$i$在$j$这一位上向左和向右第一个二进制位为1的位置,分别记为$l_{i,j},r_{i,j}$,然 阅读全文
posted @ 2018-09-22 20:03 ✡smy✡ 阅读(339) 评论(0) 推荐(0)
摘要:"传送门" 跟这个大佬学的 "戳我" 假设只有一个宿管,那么从前往后做的过程中,如果能到达某个寝室范围内的人数不够$b$,那么不如把这个寝室空出来,这样更有利于后面的抉择;反之,就把这个寝室搞正好$b$个人,在前面搞好一个寝室是要比在后面搞好有利的,这样就可以记个前缀和,然后一路贪心 现在有两个宿管 阅读全文
posted @ 2018-09-22 19:48 ✡smy✡ 阅读(250) 评论(0) 推荐(0)
摘要:"传送门" 看到$n$只有16,可以把这些质数分成两半,然后预处理出这些数相乘得出的小于$10^{18}$的所有数,排个序,然后二分最终答案,再用两个指针从前往后和从后往前扫,进行$two pointers$统计答案是第几个,然后再搞搞救星了 cpp // luogu judger enable o 阅读全文
posted @ 2018-09-22 19:36 ✡smy✡ 阅读(126) 评论(0) 推荐(0)
摘要:"传送门" 一群蚂蚁能被吃,也就是走到指定边的两端点之一要走到另一端点时有$k$只,我们可以从这两端点逆推,记两个值为走到某个点时最后会被吃掉$k$只蚂蚁的蚂蚁数量范围,式子下面有,~~很好理解(雾)~~.最后在每个叶子节点二分查找有多少个数在区间内即可 cpp // luogu judger en 阅读全文
posted @ 2018-09-22 19:30 ✡smy✡ 阅读(123) 评论(0) 推荐(0)
摘要:"传送门" 首先,所有军队又要尽量往上走,这样才能尽可能的封锁更多的到叶子的路径 而随着时间的增加,能封锁的路径也就越来越多,所以可以二分最终的时间 然后对于每个时间,就让能走到根的军队走到根,记录到根上一个节点和剩余时间,然后按时间排序;不能走到的就在能走到的最上面的点打标记.然后遍历树一遍,把所 阅读全文
posted @ 2018-09-22 19:20 ✡smy✡ 阅读(146) 评论(0) 推荐(0)
摘要:第一次体会到了$skipped$的快感(逃 ~~mm我再也不 直接 蒯别人code了qwq~~ A 题意 一个长度为$n$的数组,可以给里面的任意单个元素加1$m$次,问最后 数组最大值 的最小值和最大值 题解 普及T1难度 最大的最大值就是最大值+m 最小的最大值是尽量先把所有数加成当前最大值,然 阅读全文
posted @ 2018-09-20 22:25 ✡smy✡ 阅读(330) 评论(0) 推荐(0)
摘要:"传送门" 这里设$f_i$表示时刻$i$的答案 转移的话在$[i p+1,i 1]$之间枚举j,然后考虑从哪个点走过来 复杂度为$O(n^3)$ 阅读全文
posted @ 2018-09-20 20:10 ✡smy✡ 阅读(170) 评论(0) 推荐(0)
摘要:"传送门" 想明白了其实不难 ~~强行瞎扯~~ 这题的限制比较烦,导致了一行行转移几乎不能做(吧) 那么一列列转移呢? 设$f_{i,j,k}$表示前$i$列,取$j$个,其中第$i$列取从上往下前$k$个的答案 因为要取到一个砖块,要把该砖块上方以及右上方的先取走,那么如果这一列取$k$个,下一列 阅读全文
posted @ 2018-09-20 17:32 ✡smy✡ 阅读(155) 评论(0) 推荐(0)
摘要:"传送门" 要求有多少个长度为奇数的区间满足某个数为区间中位数 这样的区间,大于中位数的数个数 等于 小于中位数的数个数 用类似于前缀和的方法,设$X_i$为$i$和数$b$形成的区间内,大于$b$的数个数减去小于$b$的数个数的值,每次从前面那个位置转移过来,加上这个位置的贡献救星 最后用两个桶统 阅读全文
posted @ 2018-09-20 15:53 ✡smy✡ 阅读(161) 评论(0) 推荐(0)
摘要:"传送门" 容易想到设$f_i$表示走到坐标$i$的最少走过的石子数 但是这题数据范围很大,,, 不过一次可以走的步数范围是1 10,石子个数最多100个,所以中间会有很多多出来的没石子的路,可以考虑直接$skipped$掉 我们只要对每个石子之间的路程$mod$2520救星了,因为每次走1 10步 阅读全文
posted @ 2018-09-19 19:54 ✡smy✡ 阅读(98) 评论(0) 推荐(0)
摘要:"传送门" 注:本题解中下标从1开始 这题可以想出一个$O(n^2)$的dp,只要考虑每个偶数位置可以从前面的哪个位置加上一个"B...W..."转移过来 然而数据范围有5e5,,, ~~打表找规律(误),~~可以发现转移的时候,能够转移位置构成的集合 可能 会向前多一个元素,向后多一个元素,或者中 阅读全文
posted @ 2018-09-19 10:16 ✡smy✡ 阅读(214) 评论(0) 推荐(0)
摘要:"bzoj" "洛谷" 这题意~~是不是不太清楚~~ 真正题意:求$$f_i=\sum_{j=1}^{\lfloor i A \rfloor} \frac{M_i M_j}{i j}$$ 似乎只能$O(n \lfloor n A \rfloor)$求 但是 ,注意 于是对于较大的$i$来说,$f_i 阅读全文
posted @ 2018-09-18 21:50 ✡smy✡ 阅读(194) 评论(3) 推荐(0)
摘要:"传送门" 看到唯一的依赖关系,容易想到树型dp,即$f_{i,j}$表示选点$i$及子树内连通的点,代价为$j$的最大价值,然后就是选课那道题 但是要注意 1.题目中的依赖关系不一定是树,可能会有环,我们可以发现环里面的点要么全选要么全不选,要用tarjan把环缩为一个点,同时把代价和价值加到缩后 阅读全文
posted @ 2018-09-18 20:39 ✡smy✡ 阅读(155) 评论(1) 推荐(0)
摘要:"题面传送门" 我们可以画图~~找规律~~ ~~这里没图,要看图可以去看M_sea dalao的题解(逃~~ 可以发现单个节点$i$对答案的贡献为该节点的点权$ \frac{1}{2^{dep_i}}$($dep_i$为从上往下$i$节点所在的层数 1,也就是深度,令根节点的$dep=0$) 我们可 阅读全文
posted @ 2018-09-15 10:47 ✡smy✡ 阅读(142) 评论(1) 推荐(0)
摘要:"传送门" 首先那个$O(n^2)$的dp都会吧,不会自己找博客或者问别人,或是去做 "模板题" (误) 对以下内容不理解的,强势推荐 "flash的博客" 我们除了原来记录最长上升子序列的$f_{i,j}$,再记$g_{i,j}$表示到$i,j$时的最长上升子序列个数,同时设两个字符串为$A,B$ 阅读全文
posted @ 2018-09-08 15:19 ✡smy✡ 阅读(138) 评论(1) 推荐(0)
摘要:"传送门" 这道题可以二进制记录状态搜索 也可以做以下考虑 若一个棋子要移动到另一个位置上去,则步数为两点的曼哈顿距离(横坐标差的绝对值+纵坐标差的绝对值),因为假设路径上有其他的棋子,可以通过移动其他棋子,做到等价于这个棋子无视其他的棋子直接走到目标点 举个栗子 $\begin{matrix}0& 阅读全文
posted @ 2018-09-08 11:36 ✡smy✡ 阅读(118) 评论(0) 推荐(0)
摘要:传送门 "gss1" "gss3" ~~spoj gss系列=最大字段和套餐~~ gss1就是gss3的无单点修改版 有区间查询和单点修改,考虑用线段树维护 我们要维护区间权值和$s$,区间最大前缀和$xl$和最大后缀和$xr$,以及最大子段和$x$ 在pushup的时候,这样维护 ~~代码里有~~ 阅读全文
posted @ 2018-09-08 10:52 ✡smy✡ 阅读(217) 评论(0) 推荐(0)
摘要:"传送门" 要最长链的长度最短,~~一秒想到~~二分,因为如果对于某个长度满足改掉一边的边权后能使得所有链长度不超过该长度,则所有比他长的长度也满足. 二分最终答案.我们要使得原来长度大于二分的$mid$的链删边后小于$mid$,所以要找出一条最长的,被所有长度大于$mid$的链包含的边,使得最长链 阅读全文
posted @ 2018-09-08 10:42 ✡smy✡ 阅读(115) 评论(0) 推荐(0)