二分
文章平均质量分 81
克莉丝汀娜
此时一名自称平民的玩家路过
展开
-
514D (二分+区间最值)
题目传送 题目大意:n*m的矩阵,最多可进行k次操作,每次使得一列上的所有数值-1,若一行的数值全变为0,则该行被破坏。问最长可连续破坏多少行。输出此时对于每一列的操作数。 思路很直接:对于每一列,二分区间长度,枚举起点,求区间最大值。将每一列的区间最值相加,若不超过k,则该长度可行。 对于输出方案,可开设数组a[i]记录长度为i的起点,若最终长度为len,则再次求区间[a[len],a原创 2015-03-26 10:10:23 · 544 阅读 · 0 评论 -
LA 3635 Pie (二分)
题目大意:F+1个人分N个派,要求每个人所得的派的面积相同且每个人只能获得一份派(即不能是多个派合成一起),求每人得到的派的面积的最大值。 二分答案x,用每个派的面积去除x,得到该派能够分给的人数。累加起来判断是否能否分给至少F+1个人。 #include using namespace std; typedef double db; #define pi acos(-1.0)原创 2015-06-23 15:55:54 · 500 阅读 · 0 评论 -
hdu 5439 Aggregated Counting(找规律)
题目大意: 一个序列1、2、2、3、3、4、4、4、5、5、5…… 第i项的数a[i]表示连续的i的个数,依次下去。 现给出n(n 规律:last[last[n]]=a[1]+a[2]+……+a[last[n]]。比如last[3]=5,则last[5]为序列的前5项的和,为11 知道了这个还不能算,因为n太大了。 再对上式进行归纳整理,可以得到: last[last[n]]原创 2015-09-16 13:29:25 · 519 阅读 · 0 评论 -
快排求第K大的数O(n)
关于各类排序的详细说明 #include #include #include #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; typedef原创 2015-08-20 19:30:22 · 1848 阅读 · 0 评论 -
uva 11478 Halum (差分约束+二分+SPFA判负环)
n个顶点,m条边的有向图。定义Halum操作:选择一个结点和一个整数d使得所有以v为终点的边权值减少d,同时所有以v为起点的边的权值增加d。最后让所有边权值为正(大白书上的题意说明有误)并且尽量大。输出最小边权的最大值。 分析: 1、操作相互独立且同一个结点的多次操作可以合并。设对于顶点u,操作若干次后,与u关联的边权和为sum[u]。 2、那么,对于一条边a->b,操作后权值为w(原创 2015-06-23 17:09:15 · 380 阅读 · 0 评论 -
hdu 1007 Quoit Design (最近点对)
题目大意:给出n件玩具坐标,制作一个圆环,使得其半径尽可能大,并且最多只能够圈中其中一件玩具。求此时的半径。 问题的本质就是求最近点对。方法是二分法。 #include #include #include #define N 100005 using namespace std; typedef double db; struct P{ db x,y; }p[N],pt[N];原创 2015-04-18 15:22:18 · 345 阅读 · 0 评论 -
hdu 5199 (二分||Hash||map)
问题描述 很久很久以前,有一个叫Jack的枪手。他非常喜欢打猎。一天,他去了一个小树林。那儿有n只鸟,还有n棵树。第i只鸟站在第i棵树的顶端。这些树从左到右排成一条直线。每一棵树都有它的高度。Jack站在最左边那棵树的左边。当Jack在高度为H的地方向右发射一棵子弹时,站在高度为H的树上的鸟儿就会落下来。 Jack会射击多次,他想知道每次射击会有多少鸟儿落下来。 输入描述 多组测试原创 2015-04-04 22:09:11 · 392 阅读 · 0 评论 -
SGU 111 Very simple problem
给一个数X (1≤X≤101000).求出平方后不超过X的最大整数。 法一:二分区间[1,10500],寻找符合的数。 import java.math.BigInteger; import java.util.Scanner; public class Solution { public static void main(String[] args) { BigInteger l原创 2015-03-16 20:25:57 · 373 阅读 · 0 评论 -
hdu 5178 pairs (二分)
求序列x中满足a 排序后二分查找每个数加上k后的上界pos,结果累加pos-i即可 #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL __int64 int x[100005]; int mai原创 2015-03-26 15:58:34 · 533 阅读 · 0 评论 -
xdu 1068 Clinton’s beliefs
题目 两个数组,求所有乘积中的第k大的。 方法:二分。 #include #include #include #include using namespace std; typedef long long LL; #define N 10001 LL n1,n2, k, a[N], b[N], flag; LL cal(LL num) { LL i, j, ans; i原创 2015-05-29 18:18:35 · 441 阅读 · 0 评论