
二分/迭代
morejarphone
这个作者很懒,什么都没留下…
展开
-
HDU4791(线段树+二分)
#include #include #include #include #include using namespace std;#define maxn 111111#define INF 1000000009#define pl c<<1#define pr (c<<1)|1#define lson tree[c].l,tree[c].mid,c<<1#define rs原创 2015-10-21 23:44:02 · 376 阅读 · 0 评论 -
HDU 3761 (二分 半平面交)
题目链接:点击这里题意:顺时针给出一个凸包, 问最少炸掉多少点使得凸包面积为0.炸掉的点必然是连续的。 然后二分一下结果, 每次判断半平面的面积。 注意chenk的时候要check面积而不是半平面交的顶点个数。 注意顺时针输入这个trick。#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#inc原创 2016-07-12 19:33:32 · 372 阅读 · 0 评论 -
UVALive 3890 (半平面交 二分)
题目链接:点击这里题意:求凸包离边界最远的点。二分结果ans, 然后把凸包的边界都往内部推进ans距离, 用半平面交判断是否存在解就好了。#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <vector>using namespace std;#define maxn 1000原创 2016-07-12 18:25:10 · 314 阅读 · 0 评论 -
codeforces 689D (二分 RMQ)
题目链接:点击这里题意:给出两个数列, 有多少对[l,r]满足max{al,al+1...ar}=min{bl,bl+1...br}max\left\{ a_l, a_{l+1}...a_{r}\right \}=min\left\{ b_l,b_{l+1}...b_r\right\}如果固定一个左端点,max数组是递增的,min是递减的, 那么需要寻找一段右端点使得区间的max-min等于0. 这原创 2016-07-20 15:45:30 · 489 阅读 · 0 评论 -
NJUST 1968 (二分 2-sat)
题目链接: 点击这里题目内容: Description 小明在玩一个闯关游戏,共n关,必须按顺序通过,每一关会遇到两个数字(可能一样),他要选择其中一个,如果要选的这个数字是他之前选过的就直接过了这关。 但是他如果在某一关选了数字X,那就不能在经过另一关时选择数字Y当X+Y=2*n-1时,如果在某一关没有数可选的时候游戏结束,问在闯关游戏中小明最多可以通过几关。 Input 第一行输入一原创 2016-07-31 17:45:23 · 490 阅读 · 0 评论 -
HDU 5726 (RMQ 二分)
题目链接:点击这里题意:每次询问一个区间的gcd,和这个gcd相同的区间的个数。区间的gcd个数最多不会超过log(max)log(max)个, 而且gcd序列又是递减的,所以直接暴力枚举左端点,对右端点二分求出每一个值的区间扔到map里面统计一下就好了。#include <cstdio>#include <cstring>#include <algorithm>#include <iostr原创 2016-07-20 22:08:12 · 513 阅读 · 0 评论 -
HDU 5558 (后缀数组 二分 RMQ)
题目链接:点击这里求一个串每一个后缀和他最长匹配的他之前的后缀.题意: 给定一个串, 下标从0开始, 从这个下标之前的下标中找到一个最小下标使得这两个后缀的最长公共前缀最大, 设这个值为L. 如果存在, 下标+L, 并输出L和他之前的这个下标; 否则输出-1, 和当前下标字符的ASCLL码, 当前下标+1.后缀的前缀这个东西看着就很后缀数组, 于是就用后缀数组来搞. 第一步是找到L. 可以维护一原创 2016-08-01 17:04:14 · 653 阅读 · 0 评论 -
HDU 5915 (二分 主席树)
题目链接:点击这里题意:给出一个序列,每次询问一个区间[l,r][l,r],假设里面有kk个数字,求第⌈k/2⌉\lceil k/2 \rceil个出现的数字的下标.区间出现的不同数字的个数就是这个题,用主席树写好一套函数以后二分位置每次主席树上query来check一下就好了。#include <bits/stdc++.h>using namespace std;#define maxn 20原创 2016-10-15 12:30:24 · 640 阅读 · 0 评论 -
codeforces 730C (二分)
题目链接:点击这里题意:给出n个点m条边的图,有w个工厂,已知每个工厂的挖掘机数和挖掘机单价。给出q个询问,每次询问要在某一个点获得j个挖掘机并且花费不超过a的最少时间。经过一条边的时间花费是1.如果不考虑时间因素,那么直接按照单价排序从前往后买挖掘机即可。考虑到时间有二分性质,直接二分时间。首先对询问的点做一遍bfs获得其他点到它的时间,然后二分时间,每次check时从前往后将时间内的挖掘机都买进原创 2016-10-25 19:46:12 · 700 阅读 · 0 评论 -
POJ 3621 (最优比率环 二分+SPFA)
题目链接:点击这里题意:找出一个环, 最大化∑vi∑Ei\frac{\sum v_i}{\sum E_i}.假设答案是ans.那么有∑vi∑Ei=ans\frac{\sum v_i}{\sum E_i}=ans也就是∑vi−ans∑Ei=0\sum v_i-ans\sum E_i=0.因为是一个环,所以环上每个点都被算了两次,所以可以给每条边对应一个FiF_i表示边上两个节点权值和的一半,所以所求就原创 2016-11-08 15:32:59 · 459 阅读 · 0 评论 -
HDU 5649 (二分 线段树)
题目链接:点击这里题意:给出一个排列,每次操作[l,r]区间的数原地升序或者降序,询问最后k下标的数。二分最后的结果mid,然后把比mid大的换成1,小于等于mid的换成0,那么升序降序相当于求出区间中0的个数然后把前半段和后半段分别用0\1覆盖。这样只需要维护一个区间查询,区间修改的线段树即可。#include <cstdio>#include <cmath>#include <algorit原创 2016-10-18 19:56:38 · 545 阅读 · 0 评论 -
codeforces 732D (二分 贪心)
题目链接:点击这里题意:给出n天,以及每天能考的科目,给出每个科目需要备考的天数。每一天可以选择备考某一门科目或者考试通过某一门科目(备考天数足够)。求通过所有科目的最少天数。二分天数mid,然后对于前mid天贪心check。具体就是从mid往前扫,如果有没有考试过的科目就选择在这一天考,否则用来备考。 最后从前往后依次判断备考是否足够即可。#include <cstdio>#include <原创 2016-10-18 20:41:51 · 560 阅读 · 0 评论 -
NEUOJ 720 (字典树+LCA || 二分+哈希)
题目链接:点击这里Problem: 头哥的烦恼Time limit: 5s Mem limit: 1000 MB AC/Submission: 16/94 Discuss Problem Description 头哥,众所周知,作为acm队的主力选手,最近遇到了一些烦恼,那就是CET-4临近了,但是他还有很多单词没记住.现在头哥有n个单词没记住,(所有的单词长度加起来不超过原创 2016-06-15 10:27:53 · 417 阅读 · 0 评论 -
HDU 5699 (线性规划 二分)
货物运输Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 119 Accepted Submission(s): 47Problem Description公元2222年,l国发生了一场战争。原创 2016-05-24 20:52:36 · 714 阅读 · 0 评论 -
HDU 2899 (二分 或者 三分)
水题#include using namespace std;#define eps 1e-7double y;double f (double x) { return 42*x*x*x*x*x*x + 48*x*x*x*x*x + 21*x*x + 10*x - y;}double f2 (double x) { return 6*x*x*x*x*x*x*x原创 2015-11-16 12:49:28 · 335 阅读 · 0 评论 -
HDU 3124 (二分+扫描线 最近圆对)
MoonmistTime Limit: 20000/10000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1837 Accepted Submission(s): 618Problem DescriptionAn Unidentifie原创 2015-11-30 16:41:11 · 628 阅读 · 0 评论 -
POJ 1064 (二分)
Cable masterTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 33225 Accepted: 7086DescriptionInhabitants of the Wonderland have decided to hold a regional原创 2016-02-15 16:56:23 · 296 阅读 · 0 评论 -
POJ 2456 (二分)
Aggressive cowsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9377 Accepted: 4663DescriptionFarmer John has built a new long barn, with N (2 His C原创 2016-02-15 17:09:19 · 286 阅读 · 0 评论 -
POJ 2785 (二分)
4 Values whose Sum is 0Time Limit: 15000MS Memory Limit: 228000KTotal Submissions: 18785 Accepted: 5579Case Time Limit: 5000MSDescriptionThe SUM problem can原创 2016-02-17 20:12:45 · 313 阅读 · 0 评论 -
POJ 2976 (二分)
Dropping testsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 8735 Accepted: 3043DescriptionIn a certain course, you take n tests. If you get ai out of原创 2016-03-16 16:54:52 · 319 阅读 · 0 评论 -
POJ 2728 (最优比率生成树+二分或者迭代)
Desert KingTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 23100 Accepted: 6478DescriptionDavid the Great has just become the king of a desert country.原创 2016-03-16 18:46:37 · 370 阅读 · 0 评论 -
codeforces 653D (二分 最大流)
D. Delivery Bearstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputNiwel is a little golden bear. As everyon原创 2016-03-21 20:34:04 · 654 阅读 · 0 评论 -
Codeforces 622C (vector 二分)
题目:点击打开链接题意:给出n个预处理每个数右边第一个不等于自己的下标,用向量存下每一个数字的出现的位置,然后对于询问的数字x,二分找[l,r]中第一次出现的x的位置p,如果p大于l或者不存在那么l就合理,否则判断l右边第一个不等于x的下标是不是#include using namespace std;#define maxn 1000005vector gg[max原创 2016-03-25 15:02:37 · 436 阅读 · 0 评论 -
HDU 5652 (二分 bfs)
India and China OriginsTime Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 235 Accepted Submission(s): 72Problem DescriptionA lon原创 2016-03-26 23:29:48 · 630 阅读 · 0 评论 -
HDU 3943 (二分+数位DP)
K-th Nya NumberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Total Submission(s): 2762 Accepted Submission(s): 869Problem DescriptionArcueid li原创 2016-04-10 23:07:15 · 404 阅读 · 0 评论 -
codeforces 731D (DP 二分 二维RMQ)
题目链接:点击这里题意:给出一个01矩阵,每次询问一个矩形中的最大全1正方形的边长。用dp[i][j]dp[i][j]存储以(i,j)(i,j)为右下角的最大全1正方形,转移方程就是dp[i][j]={min{dp[i−1][j],dp[i][j−1],dp[i−1][j−1]}+10(val[i][j]=1)(val[i][j]=0)dp[i][j]=\left\{\begin{aligned原创 2016-12-02 15:03:57 · 488 阅读 · 0 评论