【技巧与思想】二分
文章平均质量分 79
【技巧与思想】二分
A_zjzj
衢州华茂外国语学校郑钧
展开
-
洛谷 P4022 [CTSC2012]熟悉的文章 / YbtOJ「字符串算法」第3章 后缀自动机 J. 相似子串 题解--zhengjun
题目大意给定 nnn 个主串和 mmm 个询问串。对于每个询问串,求出最大的 lll,使得存在一种将当前询问串拆分成若干个长度 ≥l\ge l≥l 且在任一主串中出现过的子串的方案。思路蒟蒻还是不会广义后缀自动机,所以我们就用 SA + st 表 + 二分 + 单调队列解决这道问题。首先,可以用 SA + st 表求出每一个询问串的任意一位为左端点时,最大的在主串中出现过的子串的长度。可以直接在 sasasa 数组上记录前后第一个是主串的后缀的位置,然后前后求 LCPLCPLCP 取 max\原创 2022-05-30 21:09:10 · 171 阅读 · 0 评论 -
P5815 [CQOI2010]扑克牌题解-zhengjun
题目描述你有 nnn 种牌,第i种牌的数目为 cic_ici 。另外有一种特殊的牌:jokerjokerjoker,它的数目是 mmm。你可以用每种牌各一张来组成一套牌,也可以用一张 jokerjokerjoker 和除了某一种牌以外的其他牌各一张组成 111 套牌。比如,当 n=3n=3n=3 时,一共有 444 种合法的套牌:{1,2,3},{J,2,3},{1,J,3},{1,2,J}\...原创 2020-02-09 17:54:55 · 480 阅读 · 0 评论 -
洛谷P1014Cantor表题解--zhengjun
题目描述现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:1/11/11/1 , 1/21/21/2 , 1/31/31/3 , 1/41/41/4 , 1/51/51/5 , ………2/12/12/1 , 2/22/22/2 , 2/32/32/3 , 2/42/42/4 , ………3/13/13/1 , 3/23/23/2 , ...原创 2020-02-13 10:33:20 · 758 阅读 · 0 评论 -
洛谷P1182数列分段题解--zhengjun
思路首先,看到题目“每段和最大值最小为多少每段和最大值最小为多少每段和最大值最小为多少”,就知道是二分答案了,我们可以二分“每段和最大值”,再来判断是否合法,就可以了。在判断时,应该用一个变量保存当前加到了多少,如果再加上一个就大于当前mid, 就将组数加一,只要组数小了,就把right移到mid,(当前mid大了),否则,就把left移到mid。代码实现#include<bits/...原创 2020-02-13 10:36:29 · 451 阅读 · 0 评论 -
洛谷P1024一元三次方程求解题解--zhengjun
题目描述有形如:ax3+bx2+cx1+dx0=0ax^3+bx^2+cx^1+dx^0=0ax3+bx2+cx1+dx0=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,da,b,c,da,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在−100-100−100至100100100之间),且根与根之差的绝对值 ≥1\ge 1≥1。要求由小到大依次在同一行输出这三个...原创 2020-03-05 14:21:46 · 417 阅读 · 0 评论 -
洛谷P1083借教室题解--zhengjun
题面传送门思路一看嘛,立刻想到了线段树,然后呢,又不想打,感觉太长,于是呢,因为如果从第iii个订单开始出问题,那么i+1i+1i+1以及以后的都会出问题,所以就可以二分,然后二分呢,重要的是checkcheckcheck。我们就要看看前面这么多订单每天的加在一起够不够,所以是区间修改,然后,就要O(n)O(n)O(n)枚举每一天看看会不会不够就可以了。代码#include<bit...原创 2020-04-22 12:50:35 · 346 阅读 · 0 评论 -
洛谷P1084疫情控制题解--zhengjun
题面传送门我去我TM没有去掉freopen调了一下午⋯\cdots⋯思路因为如果第iii分钟可以控制住疫情,那么第i+1i+1i+1以及之后的都是可以的,所以,就可以二分了。然后就是checkcheckcheck函数如何写,有一个显而易见,就是每一个军队都要尽量靠近根节点,这样才会拦掉更多的点,所以,就要把每个军队向上提,如果可以到达根节点,就先放在一边,然后再处理,然后,因为到了根节点了...原创 2020-04-22 17:47:03 · 627 阅读 · 0 评论 -
题解 CF492D 【Vanya and Computer Game】
竟然又没有人做这题了一道二分题其实就是要找什么时候这个怪兽被打了 aia_iai 次,可以知道,这是有单调性的,我们就可以二分。因为 VanyaVanyaVanya 一秒打 xxx 次,那么每 1x\frac{1}{x}x1 他就打一次,所以我们直接把 mid÷x+mid÷ymid\div x+mid\div ymid÷x+mid÷y 就知道这个怪兽在 midmidmid 秒时被打了几次。#include<cstdio>using namespace std;int n,x,y,原创 2020-08-22 09:23:45 · 259 阅读 · 0 评论 -
P6473 [NOI Online #2 入门组] 未了 题解--zhengjun
这个题目名称十分诡异。然后我可以提供两种做法,复杂度一样,都是O(nlogn)O(n\log n)O(nlogn)的。方法一因为我们每一次使用魔法,就会让那个什么鬼畜的人物多走个aia_iai天,所以就可以贪心,每一次只要取大的就可以了,然后因为每一次都要加在一起看看够不够,所以就可以二分了。代码#include<bits/stdc++.h>#define maxn 2......原创 2020-05-01 08:16:34 · 1105 阅读 · 0 评论