二分
~无相~
这个作者很懒,什么都没留下…
展开
-
Acwing257. 关押罪犯(染色法+二分)
题目S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为 c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为 c 的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到 S 城 Z 市长那里。公务繁忙的 Z 市长只会去原创 2020-09-24 13:29:24 · 171 阅读 · 0 评论 -
AcWing 1165. 单词环 (边点)
题目我们有 n 个字符串,每个字符串都是由 a∼z 的小写英文字母组成的。如果字符串 A 的结尾两个字符刚好与字符串 B 的开头两个字符相匹配,那么我们称 A 与 B 能够相连(注意:A 能与 B 相连不代表 B 能与 A 相连)。我们希望从给定的字符串中找出一些,使得它们首尾相连形成一个环串(一个串首尾相连也算),我们想要使这个环串的平均长度最大。如下例:ababcbckjacacaahoynaab第一个串能与第二个串相连,第二个串能与第三个串相连,第三个串能与第一个串相连,我们按照此顺序原创 2020-09-22 16:58:52 · 163 阅读 · 0 评论 -
AcWing 361. 观光奶牛(二分+点权值变为边权值+判断正环)
思路题目要求一个环,满足sum(f[i])/sum(l[i])取最大值,f[i]为环上每个点的权值,l[i]为环上每个边的权值,这种一个数除以一个数取最大的,一般用二分,这题变一下形,sum(f[i])/sum(l[i])>=mid,变为sum(f[i])-sum(l[i])*mid>=0,mid为二分的最大值,这样可以把点的权值放在该点的出边上,因为这是在一个环上,所以经过一个点的环,该点的出边必然也在环上,所以可以这么做之后只要判断一下是否存在正环就可以了,即对于每一个mid判断是否存原创 2020-09-22 13:08:01 · 179 阅读 · 0 评论 -
Enduring Exodus
思路题意:对于连续房间,选择k+1个房间给1个人和k个牛住,求人离牛的最大距离最小是多少方法:枚举人的位置,然后二分即可代码#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N=1e5+5;char s[N];int sum[N];int n,k;int main(){ cin >> n >>原创 2020-05-18 10:06:27 · 292 阅读 · 0 评论 -
Sand Fortress
思路题意:对给定的n,H,把n划分为a1,a2,a3,…a1,a2,a3,…,要求首项a1≤Ha1≤H,相邻两项之差不大于1,而且最后一项必须是1。总个数要最少,输出这个最小的总个数。我们先不想沙袋总数加起来为n的最小解,我们想总长度为k,满足题目条件的沙墙的取值区间是多少下界肯定是一个1的墙,n=1,上界有一下两种情况我们可以证明这样的沙墙的总和n是连续的对于情况1,按照以上图的方法去掉1格,即可变为情况2,这样不断减1,可实现从上界到下界的n的连续并且k如果可以,k+1一定可以,所以k原创 2020-05-18 09:37:51 · 260 阅读 · 0 评论 -
AcWing 1221. 四平方和
题目四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多 4个正整数的平方和。如果把 0包括进去,就正好可以表示为 4个数的平方和。比如:5=02+02+12+227=12+12+12+22对于一个给定的正整数,可能存在多种平方和的表示法。要求你对 4个数排序:0≤a≤b≤c≤d并对所有的可能表示法按 a,b,c,d为联合主键升序排列,最后输出第一个表示法。...原创 2020-01-20 10:15:29 · 241 阅读 · 0 评论