摘要: "传送门" 这道题中,棋子的移动是要移动到空格上去,所以空格要在棋子旁边才能移动棋子;而棋子移动的方向由空格决定 所以我们可以记三维状态$di_{i,j,k}$,表示状态为棋子在$(i,j)$,空格在棋子$k$方向(顺时针编号0到3)上的最短距离 要$bfs$预处理$mv_{i,j,k,l}$,表示 阅读全文
posted @ 2018-09-26 09:56 ✡smy✡ 阅读(95) 评论(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✡ 阅读(63) 评论(0) 推荐(0) 编辑
摘要: "传送门" 要使得经过一系列移动后对角线上全是黑的,也就是要存在$n$个点,满足每行都只有一个,以及每列都只有一个,这$n$个棋子也就是所在行和所在列一一匹配 于是把题目给的矩阵当成二分图邻接矩阵,然后最大匹配救星了 cpp // luogu judger enable o2 include def 阅读全文
posted @ 2018-09-25 22:16 ✡smy✡ 阅读(77) 评论(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✡ 阅读(89) 评论(0) 推荐(0) 编辑
摘要: "传送门" 题目要求合法的区间个数,这里考虑用总区间个数减去不合法的个数 假设某个数为区间最大值,那么包含这个数的最长区间内,所有数小于他并且所有数没有这个最大值没有的二进制位,可以按位考虑每个数$i$在$j$这一位上向左和向右第一个二进制位为1的位置,分别记为$l_{i,j},r_{i,j}$,然 阅读全文
posted @ 2018-09-22 20:03 ✡smy✡ 阅读(313) 评论(0) 推荐(0) 编辑
摘要: "传送门" 跟这个大佬学的 "戳我" 假设只有一个宿管,那么从前往后做的过程中,如果能到达某个寝室范围内的人数不够$b$,那么不如把这个寝室空出来,这样更有利于后面的抉择;反之,就把这个寝室搞正好$b$个人,在前面搞好一个寝室是要比在后面搞好有利的,这样就可以记个前缀和,然后一路贪心 现在有两个宿管 阅读全文
posted @ 2018-09-22 19:48 ✡smy✡ 阅读(221) 评论(0) 推荐(0) 编辑
摘要: "传送门" 看到$n$只有16,可以把这些质数分成两半,然后预处理出这些数相乘得出的小于$10^{18}$的所有数,排个序,然后二分最终答案,再用两个指针从前往后和从后往前扫,进行$two pointers$统计答案是第几个,然后再搞搞救星了 cpp // luogu judger enable o 阅读全文
posted @ 2018-09-22 19:36 ✡smy✡ 阅读(114) 评论(0) 推荐(0) 编辑
摘要: "传送门" 一群蚂蚁能被吃,也就是走到指定边的两端点之一要走到另一端点时有$k$只,我们可以从这两端点逆推,记两个值为走到某个点时最后会被吃掉$k$只蚂蚁的蚂蚁数量范围,式子下面有,~~很好理解(雾)~~.最后在每个叶子节点二分查找有多少个数在区间内即可 cpp // luogu judger en 阅读全文
posted @ 2018-09-22 19:30 ✡smy✡ 阅读(105) 评论(0) 推荐(0) 编辑
摘要: "传送门" 首先,所有军队又要尽量往上走,这样才能尽可能的封锁更多的到叶子的路径 而随着时间的增加,能封锁的路径也就越来越多,所以可以二分最终的时间 然后对于每个时间,就让能走到根的军队走到根,记录到根上一个节点和剩余时间,然后按时间排序;不能走到的就在能走到的最上面的点打标记.然后遍历树一遍,把所 阅读全文
posted @ 2018-09-22 19:20 ✡smy✡ 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 第一次体会到了$skipped$的快感(逃 ~~mm我再也不 直接 蒯别人code了qwq~~ A 题意 一个长度为$n$的数组,可以给里面的任意单个元素加1$m$次,问最后 数组最大值 的最小值和最大值 题解 普及T1难度 最大的最大值就是最大值+m 最小的最大值是尽量先把所有数加成当前最大值,然 阅读全文
posted @ 2018-09-20 22:25 ✡smy✡ 阅读(301) 评论(0) 推荐(0) 编辑