![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分
Nightmare丶
登高必自卑,行远必自迩
展开
-
Stammering Aliens
题意:输入一个k,和一个字符串,询问是否存在出现次数>=k的子串,若存在,输出长度最长的子串和这些子串中起始下标最靠右的(下标从0开始),否则输出"none";例如:3baaaababababbababbab其中babab出现了3次,长度为5,起始下标分别出现在5,7,12,输出最靠右的也就是12题解:先用SA对所有后缀排序,由于一段区间的LCP表示的子串一定出现在每个后缀里...原创 2020-02-14 17:15:21 · 95 阅读 · 0 评论 -
P4251 [SCOI2015]小凸玩矩阵
题目描述小凸和小方是好朋友,小方给了小凸一个 n×m(n≤m)n × m (n \leq m)n×m(n≤m)的矩阵 AA,并且要求小凸从矩阵中选出 n 个数,其中任意两个数都不能在同一行或者同一列。现在小凸想知道,选出的 n 个数中第 k 大的数的最小值是多少。输入格式第 1 行读入 3 个整数 n,m,k。接下来 n 行,每一行有 m 个数字,第 i 行第 j 个数字代表矩阵中第 i ...原创 2020-02-04 17:52:54 · 141 阅读 · 0 评论 -
P3324 [SDOI2015]星际战争
题目描述3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战。在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai。当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了。X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值。激光武器的攻击是连续的。这种激光武器非常奇怪,一个激光武器只能攻击一些...原创 2020-01-29 22:52:08 · 68 阅读 · 0 评论 -
P3153 [CQOI2009]跳舞
题目描述一次舞会有n个男孩和n个女孩。每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞。每个男孩都不会和同一个女孩跳两首(或更多)舞曲。有一些男孩女孩相互喜欢,而其他相互不喜欢(不会”单向喜欢“)。每个男孩最多只愿意和k个不喜欢的女孩跳舞,而每个女孩也最多只愿意和k个不喜欢的男孩跳舞。给出每对男孩女孩是否相互喜欢的信息,舞会最多能有几首舞曲?输入格式第一行包含两个整数n和k。以下n行每行包...原创 2020-01-29 16:38:30 · 114 阅读 · 0 评论 -
P2857 [USACO06FEB]稳定奶牛分配Steady Cow Assignment
题目描述有N头牛,B个牛棚.告诉你每头牛心里牛棚的座次,即哪个牛棚他最喜欢,哪个第2喜欢, 哪个第3喜欢,等等.但牛棚容量一定,所以每头牛分配到的牛棚在该牛心中的座次有高有低.现 在求一种最公平的方法分配牛到牛棚,使所有牛中,所居牛棚的座次最高与最低的跨度最小.题解:二分答案然后最大流用超级源点将牛全部连边,用超级汇点将牛棚全部连边,然后二分最小差值,每次枚举最小值,最大值也就知道了,将...原创 2020-01-27 17:34:38 · 209 阅读 · 0 评论 -
BZOJ 4698: Sdoi2008 Sandy的卡片(SA+二分)
DescriptionSandy和Sue的热衷于收集干脆面中的卡片。然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型。每一张卡片都由一些数字进行标记,第i张卡片的序列长度为Mi,要想兑换人物模型,首先必须要集够N张卡片,对于这N张卡片,如果他们都有一个相同的子串长度为k,则可以兑换一个等级为k的人物模型。相同的定义为:两个子串长度相同且一个串的...原创 2020-01-12 20:38:53 · 90 阅读 · 0 评论 -
BZOJ 2946.公共串(SA+二分/SAM)
题目描述给出几个由小写字母构成的单词,求它们最长的公共子串的长度。输入格式文件的第一行是整数 n,1≤n≤51\le n \le 51≤n≤5,表示单词的数量。接下来nn行每行一个单词,只由小写字母组成,单词的长度至少为1,最大为2000。输出格式仅一行,一个整数,最长公共子串的长度。题解:把所有串接在一起,中间用其他符号连接,然后二分答案,判断一段中的LCP是否来自所有串即可...原创 2020-01-12 17:16:51 · 156 阅读 · 0 评论 -
HDU 4417 Super Mario(划分树)
题意:给出一个长度为n的序列,Q次询问l,r,H,询问在[l,r]区间中小于H的数有多少个?题解:用划分树求第k小的,然后二分答案即可AC代码:#pragma GCC optimize(2)#include<bits/stdc++.h>#include<ext/rope>using namespace std;using namespace __gnu...原创 2019-12-26 00:26:50 · 145 阅读 · 0 评论 -
Substrings POJ - 1226(后缀数组+二分)
ProblemYou are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of any of the given strings...原创 2019-11-29 00:33:17 · 93 阅读 · 0 评论 -
E - Locker Room Gym - 101954E(后缀数组+二分)
题目链接题解:我们直接开2倍长度跑SA就好了,因为我们要找一个满足能标记完n个字符的排名最小的长度为k的子串,所以我们可以二分排名check一下长度是否大于等于n就好了。AC代码:#include<bits/stdc++.h>using namespace std;const int MAXN = 1e6+50;char ss[MAXN]; int s[MAXN];i...原创 2019-11-27 21:41:53 · 218 阅读 · 0 评论 -
POJ-1743 男人八题-第七题-后缀数组
题意:给你一个长度为n(1<=n<=20000)的数字串。如果一个串在母串出现的次数大于一次那么这个串就是母串的重复子串。子串的每个位置同时加上一个数字重复出现在另一个位置也算重复。现在问这个母串最长的不相交即没有重复元素的重复子串的最大长度。题解:对于可相交的最长重复子串。可以狠轻松的想到后缀数组。对于题目所给的加上一个数字重复的情况。可以令s[i]=s[i+1]-s[i]...原创 2019-11-22 23:21:24 · 103 阅读 · 0 评论 -
SPOJ 220 PHRASES - Relevant Phrases of Annihilation(后缀数组)
题意:询问在每个字符串都出现两次且不重叠的最长子串的长度。题解:利用后缀数组分组的性质,求出每一组有没有满足条件的子串,然后二分答案,其中在原字符串中出现两次可以用这个字符串里max(sa[i])−min(sa[i])max(sa[i])-min(sa[i])max(sa[i])−min(sa[i])解决,不重叠就是判断这个maxmaxmax是不是大于等于mid,最后判断是否是每个字符串都满...原创 2019-11-22 00:22:10 · 98 阅读 · 0 评论 -
POJ 3294 Life Forms(后缀数组)
题意:有n个字符串,询问找出一个最长的子串在一半以上的字符串中出现过,若没有,则输出-1题解:把每个字符串链接在一起,中间加上分隔符,计算出h数组,利用h数组将后缀分组的性质,我们就可以二分长度,然后再判断每一组的前缀是否出现过一半以上即可。AC代码:#include<iostream>#include<cstring>#include<cstdio&...原创 2019-11-21 22:52:16 · 94 阅读 · 0 评论