二分
meopass
即使摸爬滚打,满身泥泞,我也要前进
展开
-
codeforces314D 二分+滑窗
首先先将坐标轴旋转,之后二分答案,维护滑窗,前后缀优化判定连通性即可。#include <bits/stdc++.h>using namespace std;const int maxn = 110000;const double eps = 1e-8;int n;double premax[maxn], premin[maxn];double sufmax[maxn], sufmin[max原创 2017-08-16 15:46:02 · 337 阅读 · 0 评论 -
POJ 1743 后缀数组
简略题意:求不可重叠的最长重复子串。这题有以下坑点。 1. 给出的n个数不是我们要处理的串,差方之后的串才是。 2. 不可重叠指的是原数组之间不可重叠,例如”1 2 3 4 5 6 7 8 9”的答案为0,而不是5。注意之后,我们只需要二分答案k,按height不小于k分组,存在一组最大最小位置差大于k即可(不能为k,理由见坑点2)。复杂度O(nlogn)。#include <iostream>原创 2017-09-12 16:53:57 · 189 阅读 · 0 评论 -
POJ 3261 后缀数组
简略题意:求可重叠的至少出现t次的最长重复子串。 (数值好像很大啊,我们来离散化一下吧) 先二分长度k,随后按照height不小于k分组,若存在一组的个数不小于t即可满足条件。#include <iostream>#include <cstring>#include <map>#include <cstdio>#include <vector>#include <algorithm>u原创 2017-09-12 17:00:28 · 264 阅读 · 0 评论 -
HDU6000 Wash 二分+贪心
简略题意:L件衣服,n个洗衣机,m个甩干机,问最短多少时间可以洗完所有衣服并甩干。首先二分时间,得到每个洗衣机能最多在这段时间洗多少衣服,从而得到洗完每个衣服的时间是多少。 同理二分时间,得到每个甩干机能最多在这段时间甩干多少衣服,从而得到甩干每个衣服的时间是多少。那么我们只要贪心的把最早洗完的衣服最晚甩干,从而使得全局时间花费最小即可。#define others#ifdef poj#inc原创 2017-11-25 23:27:10 · 447 阅读 · 0 评论