随笔分类 -  算法->二分

摘要:题解 直接二分然后建图跑网络流看看是否合法即可 就是源点向每个激光武器连一条二分到的时间×激光武器每秒攻击值的边 每个激光武器向能攻击的装甲连一条边 每个装甲向汇点连一条装甲值的边 代码 cpp include define fi first define se second define pii 阅读全文
posted @ 2018-12-19 14:31 sigongzi 阅读(422) 评论(0) 推荐(0)
摘要:题解 ~~感觉自己通过刷水题混LOJ刷题量非常成功~~ 首先是二进制枚举位,判是否合法 要写两个solve不是很开心,$A$不为1的直接记录状态$f[i][j]$为能否到达前$i$个分成$j$段,转移$n^3$ $A$为1的相当于在一张拓扑图上求到$N$的最短路是否小与$B$,连边方式即为如果$su 阅读全文
posted @ 2018-12-18 19:34 sigongzi 阅读(290) 评论(0) 推荐(0)
摘要:题解 成功把自己写自闭了 离散化之后再二分我是真不会算坐标啊我这个zz 先离散化所有坐标,然后对于每个位置维护一个最小前驱,然后线段树区间维护最小前驱 什么?位置一样?那就给每个大小为1的位置开个multiset,往上维护的时候就直接左右区间取min 然后就是,在线段树上二分了 我们把正无穷和负无穷 阅读全文
posted @ 2018-12-17 19:50 sigongzi 阅读(306) 评论(0) 推荐(0)
摘要:题解 二分一个横坐标,过这个横坐标做一条和y轴平行的直线,相当于在这条直线上做区间覆盖,如果区间有交的话,那么答案是True 否则的话取两个不相交的区间,如果这两个圆相离或相切则不合法 否则看看相交的部分在二分的横坐标的左边还是右边,进行更新 代码 cpp include define fi fir 阅读全文
posted @ 2018-12-10 13:06 sigongzi 阅读(285) 评论(0) 推荐(0)
摘要:题解 卡常卡不动,我自闭了,特判交上去过了 事实上90pts= = 我们考虑二分长度,每个点能覆盖圆的是一段圆弧 然后问能不能匹配出一个正多边形来 考虑抖动多边形,多边形的一个端点一定和圆弧重合 如果暴力枚举重合的点的话,是$O(n^4 log V)$ 但是因为是正多边形,每个端点都等价,我们就把旋 阅读全文
posted @ 2018-11-24 19:17 sigongzi 阅读(263) 评论(0) 推荐(0)
摘要:C Attention 枚举,计算前缀和即可 代码 F Donation 感觉这道题和之前见过的某道题有点一样,又不太一样…… 智商 ,看了好久题解才想明白一点。。。 就是……我们先想一下,我们如果按照每个点交钱的顺序写下一个序列 对于第k次选走的点,我们需要的是我们钱数$w$,需要有$w = \s 阅读全文
posted @ 2018-10-25 14:06 sigongzi 阅读(607) 评论(0) 推荐(0)
摘要:C Candles 题解 点燃的一定是连续的一段,枚举左端点即可 代码 D Median of Medians 二分一个值作为中位数的中位数,把大于这个数的设成1,小于等于这个数的设成0 然后我们就需要知道小于等于这个数做中位数的区间有多少个,用树状数组维护,和全部区间个数的一半比较一下即可 题解 阅读全文
posted @ 2018-10-12 22:14 sigongzi 阅读(365) 评论(0) 推荐(0)
摘要:题解 分数题可以想到分数规划,我们预处理出从i到j卖什么货物赚的最多,然后把每条边的边权改成“利润 效率 × 时间” 用spfa找正环即可 代码 阅读全文
posted @ 2018-10-10 14:25 sigongzi 阅读(282) 评论(0) 推荐(0)
摘要:题解 就是一个回文串拼上左右两端 类似二分找lcp这么做 可以直接用哈希找回文串 注意要找A串前半部分,B串找后半部分 代码 cpp include define enter putchar('\n') define space putchar(' ') define pii pair define 阅读全文
posted @ 2018-08-26 13:21 sigongzi 阅读(241) 评论(0) 推荐(0)
摘要:题解 01分数规划,二分加树背包…… 代码 阅读全文
posted @ 2018-08-26 11:00 sigongzi 阅读(168) 评论(0) 推荐(0)
摘要:题解 看错题了,我以为是询问Q是个数字,问它在哪个位置 我一想这不直接01序列搞一下就好了嘛(事实上是012) 然后呢,我发现样例没过。 啊我看错题了,问的是Q这个位置是啥…… 哦,套用我之前的想法不是直接拿线段树维护01序列然后二分吗……(可以不用012,直接是0表示小于等于mid的值,1表示大于 阅读全文
posted @ 2018-08-19 12:59 sigongzi 阅读(113) 评论(0) 推荐(0)
摘要:题解 波兰人的j是苹果,p是橘子 还真是跟中国过不去啊= =写的时候很难受 我们先求出每个点作为起点,能延伸到的最大长度,这个可以处理成前缀和,查询一下区间最小值是不是小于0,用st表实现,如果区间最小值大于等于0,那么这段区间,以该点作为起点是合法的 然后求出每个点作为终点能延伸到的最大长度,处理 阅读全文
posted @ 2018-06-20 15:06 sigongzi 阅读(196) 评论(0) 推荐(0)
摘要:题解 二分答案 求最小路径点覆盖 由于这里最小路径点覆盖,点是可重的,用floyd求出传递闭包(也就是求出,哪两点之间是可达的) 最后用这个floyd求出的数组建出一个新图,在这个图上跑普通的最小路径点覆盖即可 代码 阅读全文
posted @ 2018-06-14 15:55 sigongzi 阅读(163) 评论(0) 推荐(0)
摘要:题解 做了一下SCOI2015,于是决定搬运SCOI2016= v = 如果没有加法,我们可以向左向右节点查找 每个总权值是2^18 1,然后左右分,那么每次是一个完整的节点 如果有了加法,那么我们如果希望有数满足某一位是1或者0,是一段取值的区间,我们要保证这个区间的左右端点减少x后这个区间里还有 阅读全文
posted @ 2018-06-08 15:15 sigongzi 阅读(133) 评论(0) 推荐(0)
摘要:题解 又是美好的一天,我今天的小目标是LOJ刷题数名次前进两名(虽然巨佬们都是BZOJ千题啊这样的 define MAXN 50005 // define ivorysi define enter putchar('\n') define space putchar(' ') define fi f 阅读全文
posted @ 2018-06-08 07:32 sigongzi 阅读(362) 评论(0) 推荐(0)
摘要:题解 这个图是个二分图,因为如果有一个奇环的话,我们会发现一个数变成另一个数要乘上个数不同的质数,显然不可能 然后我们发现这个不是求最大流,而是问一定价值的情况下最大流是多少,二分一个流量,加上一条边限流,然后求最小费用(其实是最大费用,把权值取反即可)是不是小于等于0,再看流量有没有流满 代码 阅读全文
posted @ 2018-06-01 10:05 sigongzi 阅读(369) 评论(2) 推荐(0)
摘要:C Same Integers 题解 要么三个都达到最大的数,要么三个都到达最大的数+1,判断是前一种情况的方法是不断垫高前两大的,看之后最小的那个和最大的那个差值是不是2的倍数 否则就是第二种情况 代码 cpp include include include include include inc 阅读全文
posted @ 2018-05-18 11:19 sigongzi 阅读(621) 评论(0) 推荐(0)
摘要:A musical melody is represented as a sequence of N (1 <= N <= 5000) notes that are integers in the range 1..88, each representing a key on the piano. 阅读全文
posted @ 2017-02-06 21:25 sigongzi 阅读(511) 评论(0) 推荐(0)
摘要:题目描述 Description 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有N块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点 阅读全文
posted @ 2016-08-24 21:51 sigongzi 阅读(310) 评论(0) 推荐(0)