
二分
文章平均质量分 78
克莉丝汀娜
此时一名自称平民的玩家路过
展开
-
514D (二分+区间最值)
题目传送题目大意:n*m的矩阵,最多可进行k次操作,每次使得一列上的所有数值-1,若一行的数值全变为0,则该行被破坏。问最长可连续破坏多少行。输出此时对于每一列的操作数。思路很直接:对于每一列,二分区间长度,枚举起点,求区间最大值。将每一列的区间最值相加,若不超过k,则该长度可行。对于输出方案,可开设数组a[i]记录长度为i的起点,若最终长度为len,则再次求区间[a[len],a原创 2015-03-26 10:10:23 · 594 阅读 · 0 评论 -
LA 3635 Pie (二分)
题目大意:F+1个人分N个派,要求每个人所得的派的面积相同且每个人只能获得一份派(即不能是多个派合成一起),求每人得到的派的面积的最大值。二分答案x,用每个派的面积去除x,得到该派能够分给的人数。累加起来判断是否能否分给至少F+1个人。#includeusing namespace std;typedef double db;#define pi acos(-1.0)原创 2015-06-23 15:55:54 · 547 阅读 · 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 · 575 阅读 · 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 · 1889 阅读 · 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 · 414 阅读 · 0 评论 -
hdu 1007 Quoit Design (最近点对)
题目大意:给出n件玩具坐标,制作一个圆环,使得其半径尽可能大,并且最多只能够圈中其中一件玩具。求此时的半径。问题的本质就是求最近点对。方法是二分法。#include #include #include #define N 100005using namespace std;typedef double db;struct P{ db x,y;}p[N],pt[N];原创 2015-04-18 15:22:18 · 380 阅读 · 0 评论 -
hdu 5199 (二分||Hash||map)
问题描述很久很久以前,有一个叫Jack的枪手。他非常喜欢打猎。一天,他去了一个小树林。那儿有n只鸟,还有n棵树。第i只鸟站在第i棵树的顶端。这些树从左到右排成一条直线。每一棵树都有它的高度。Jack站在最左边那棵树的左边。当Jack在高度为H的地方向右发射一棵子弹时,站在高度为H的树上的鸟儿就会落下来。Jack会射击多次,他想知道每次射击会有多少鸟儿落下来。输入描述多组测试原创 2015-04-04 22:09:11 · 420 阅读 · 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 · 404 阅读 · 0 评论 -
hdu 5178 pairs (二分)
求序列x中满足a排序后二分查找每个数加上k后的上界pos,结果累加pos-i即可#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define LL __int64int x[100005];int mai原创 2015-03-26 15:58:34 · 578 阅读 · 0 评论 -
xdu 1068 Clinton’s beliefs
题目两个数组,求所有乘积中的第k大的。方法:二分。#include #include #include #include using namespace std;typedef long long LL;#define N 10001LL n1,n2, k, a[N], b[N], flag;LL cal(LL num){ LL i, j, ans; i原创 2015-05-29 18:18:35 · 468 阅读 · 0 评论