摘要: "传送门" 题目要求合法的区间个数,这里考虑用总区间个数减去不合法的个数 假设某个数为区间最大值,那么包含这个数的最长区间内,所有数小于他并且所有数没有这个最大值没有的二进制位,可以按位考虑每个数$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) 编辑