随笔分类 -  高效算法思想

摘要:$n \leq 300000$的一个排列,每次能交换相邻两个数,并且有一次机会交换不相邻的两个数,可以不用这个机会。问使这个排列升序最少操作几次。 如果没有“不相邻”,那就是当年入门的时候学的逆序对了。也就是说,这次机会希望把逆序对数尽可能减少。把排列变成点放在二维平面上,$(i,a_i)$,可以发 阅读全文
posted @ 2018-07-12 08:55 Blue233333 阅读(569) 评论(0) 推荐(0)
摘要:$n \leq 500000$个区间,从中挑出一些,使得至少有一个点被$m$个选中区间包含,且选中区间长度的极差最小。 区间题死脑筋晚期:把区间按左端点排序,然后右端点用个优先队列来弹,然后需要维护下标相差$m$的数字差的最值,可以在$n^2$的时间完美拿到签到题的60分。 求极差嘛,就是关注最大最 阅读全文
posted @ 2018-07-02 19:36 Blue233333 阅读(235) 评论(0) 推荐(0)
摘要:$n \leq 100000$种蔬菜,每个蔬菜有:一单位价格;卖第一单位时额外价格;总量;每天腐烂量。每天能卖$m \leq 10$单位蔬菜,多次询问:前$k \leq 100000$天最多收入多少。价格、量$ \leq 1e9$。 我也不知道为啥88分QAQ 求大佬看看啊 把第一单位蔬菜和其他的拆 阅读全文
posted @ 2018-07-01 21:45 Blue233333 阅读(378) 评论(0) 推荐(0)
摘要:$n \leq 100000$个点在数轴上运动,给初始位置和速度。能删$k$个点,问最晚什么时候发生第一次碰撞。 这个贪心题有点惊。。 首先肯定二分答案,然后就是判断怎么删这$k$个点。我想可以把有冲突的点连条边,虽然是平方的但可能可以用数据结构优化,实际上就是求这个图的。。最大独立集?还要一般图匹 阅读全文
posted @ 2018-06-24 19:43 Blue233333 阅读(272) 评论(0) 推荐(0)
摘要:$n \leq 2000000$的正数列,有一次机会把一段长度不超过$d$的数变成0,问最长的和不超过$p$的序列。 选的$d$区间一定是答案区间$[L,R]$的最大字段和。可以证明$R$往右时$L$不会往左。反证一下,假如出现了这种情况: 其中蓝色和绿色表示选中的$d$区间(绿不可能在R1左边,否 阅读全文
posted @ 2018-06-20 10:08 Blue233333 阅读(138) 评论(0) 推荐(0)
摘要:$n \leq 100000$的数列,数字范围$-1e9,1e9$,现$q \leq 1e5$个每次问在一个区间玩游戏,能得到的最大的数。“游戏”:选相邻两个数$a_x,a_y$,然后把他们删掉,变成$a_x+2a_y$,直到序列中只剩一个数。答案$\mod \ \ 1e9+7$。 单次询问可用贪心 阅读全文
posted @ 2018-06-16 14:24 Blue233333 阅读(409) 评论(0) 推荐(0)
摘要:数轴上$n \leq 100000$个不重叠的云,给坐标,长度都是$l$,有些云速度1,有些云速度-1,风速记为$w$,问在风速不大于$w_{max}$时,有几对云可能在0相遇。每一对云单独考虑。 多动一不动--相对运动。假设是原点在左右跑(当然这只是一种观点,暴力解不等式也是可以的),风速$w$时 阅读全文
posted @ 2018-06-12 14:44 Blue233333 阅读(505) 评论(0) 推荐(0)
摘要:$n \leq 50000$的序列,问选不超过$m \leq 50000$个区间使得和最大。 如果正数区间总数比$m$小那肯定全选。否则有两种方式减少区间数量:丢掉一个正区间;补一个负区间连接两个正区间。贪心即可。 先把左右端的负数去掉,然后把正区间和负区间处理出来。优先队列维护区间值,然后开个链表 阅读全文
posted @ 2018-06-11 13:35 Blue233333 阅读(248) 评论(0) 推荐(0)
摘要:$n \leq 1e5$,$x \leq 1e9$。 1e9呵呵,暴力处理$a_n$的前几项直到1e9。然后处理出差的数列,每次在这里面找,找得到就回答,找不到,那有贡献的只有$a_i-a_{i-1},a_i>1e9$,并且是越来越大的,那在原有的里面二分一下看要补几个即可。 注意$Max=1e9+ 阅读全文
posted @ 2018-05-24 21:55 Blue233333 阅读(245) 评论(0) 推荐(0)
摘要:$n \leq 1e6$,$n$进制下的$0,1,...,n-1$每个数有$a_i$个,$1 \leq a_i \leq 1e6$。$q \leq 1e5$个询问,每次问用这些数字拼成的$n-1$的倍数的最大的那个数(不一定全选),它的某一位是多少。 这个数字用传统十进制表示就是$\sum_{i=0 阅读全文
posted @ 2018-05-24 19:35 Blue233333 阅读(165) 评论(0) 推荐(0)
摘要:$n \leq 1e6$个区间,定义一个区间集合的权值为:并集大小-交集大小。求一个权值最大的大小至少为2的集合。 好题。 在一个区间集合中,可以发现除了左右端点涉及的区间外,里面剩余的区间越少,并集不会变但交集会越大,因此答案会更优。但我们需要集合大小至少为2,因此变成选两个区间。 左右端点可能涉 阅读全文
posted @ 2018-05-23 14:09 Blue233333 阅读(345) 评论(0) 推荐(0)
摘要:$n \leq 100000$个矩形,一个一个覆盖在坐标系上,每个颜色都不一样,问最后能看到几种颜色。 由于后面的颜色可以覆盖前面的颜色,可以把颜色与时间联系上,第$i$个矩形颜色$i$来把时间维变成Max,接下来就是二维操作。 把矩形差分后按$x$排序可以得到一个y轴上的区间操作:区间加上或删除某 阅读全文
posted @ 2018-05-21 14:05 Blue233333 阅读(453) 评论(0) 推荐(0)
摘要:$n \leq 2000$的树有$m \leq 40$个洞,其他点上有各不相同的人,人走一个单位要一个时间,每个洞一秒只能让一人过。问最少多少时间所有人通过洞。 二分答案,然后由于洞口不多,可以把洞口每个时间的状态都表示出来,一个人如果能在$t$时间到达洞就可以向$t,t+1,...$连边。 但边太 阅读全文
posted @ 2018-04-24 20:56 Blue233333 阅读(110) 评论(0) 推荐(0)
摘要:$n \leq 1000,m \leq 2000$的图,每条边是双向的,双向分别有边权,求从1号点的最大边权最小的欧拉回路。 最大值最小--二分,注意图不连通时直接不合法。 接下来就是找是否有欧拉回路,注意这里有些边是不定向的有些边是定向的。为使每个点的入度等于出度,在调整边的时候会有类似“增广”的 阅读全文
posted @ 2018-04-24 12:39 Blue233333 阅读(211) 评论(0) 推荐(0)
摘要:$n \leq 200000$的序列,支持以下$q \leq 4e4$个操作:区间异或$k$;查询区间能异或出多少不同的数。数字$0 \leq a_i \leq 1e9$。 大概是要区间线性基。区间修改用差分。异或也是可以差分的:$b_i=a_i \ \ xor \ \ a_i-1$,则$a_l,a 阅读全文
posted @ 2018-04-23 21:46 Blue233333 阅读(235) 评论(0) 推荐(0)
摘要:$n \leq 500000$个数字,给实数$k$,问用这些数字填上的,满足$d_i \geq d_{\left \lfloor \frac{i}{k} \right \rfloor}$的字典序最大的序列。 如果数字不同的话按后序遍历从大到小填就行了。 如果数字相同的话就不行。比如输入4 2 1 1 阅读全文
posted @ 2018-04-19 10:41 Blue233333 阅读(221) 评论(0) 推荐(0)
摘要:cdq时,注意横坐标相等的情况,以及横坐标是否为0。--Blue233333 阅读全文
posted @ 2018-04-09 16:33 Blue233333 阅读(134) 评论(0) 推荐(0)
摘要:$n \leq 100000$的$a$序列和$m \leq n$的$b$序列,问$a$有多少子串和$b$能匹配。匹配:俩串长度相同,且俩串的数存在一种一一对应的关系使得每一对的和都$>=h$。 把$b$排个序,这样一个$a_i$就能配$b$的一个后缀。设$a_i$能配上后缀$p_i$。一个$b_j$ 阅读全文
posted @ 2018-04-09 16:08 Blue233333 阅读(157) 评论(0) 推荐(0)
摘要:$n \leq 1000000$的字符串,对每一个子串$i$~$n-i+1$,求他最长的一个既是前缀又是后缀的子串。 这题要求的东西具有“对称性”,不充分利用难以解决。这里的“对称性”不仅指询问是对称的,更指要求的那个公共部分是对称的——不对称的相同的子串对答案没有丝毫贡献。 从贡献的角度入手,就是 阅读全文
posted @ 2018-04-06 16:52 Blue233333 阅读(210) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-03-31 10:03 Blue233333 阅读(3) 评论(0) 推荐(0)