算法-二分
FawkesLi
这个作者很懒,什么都没留下…
展开
-
poj 1818
#include <cstdio>#include <iostream>#include <iomanip>#include <string>#include <cstdlib>#include <cstring>#include <queue>#include <set>#include <vector>#include <map>#include <algor转载 2020-07-28 17:17:53 · 143 阅读 · 0 评论 -
poj 2828
网上好多人都用的是线段树,其实树状数组也是可以的。不过也侧面说明了线段树的可扩展性是强于树状数组的。题意:插队的问题,每个案例给出n,代表有n个插队的,每个给出p,v,意思是代号为v的人插在了第p个人的后面,问最后的队伍的排列?题目中一开始整个队列是空的,也就是说如果输入i,j:代表代号为j的人插在了第i个人的后面,也就是说在他之前一定有了i个人,而他的位置是i+1。Sample Input40 771 511 332 6940 205231 192431 38900 31492原创 2020-06-07 12:27:54 · 142 阅读 · 0 评论 -
poj 3179
让1000个大佬给你讲解1000道题你不一定能成为大佬;大佬给你1000个题的代码,不给你讲解,你自己去理解为什么这样写,1000道题看完,你就是大佬题意在一个二维平面上,有N颗草,每颗草的大小是1∗1,左下角坐标为xi,yi.要求一个正方形,正方形的边平行于x或y轴,正方形里面包含至少C颗草.求正方形的最小边长.注意,同一个区域可能生长多颗草.思维很简单,前缀+二分+离散化,但是实现起来细节满满懒得解释了,直接上代码。#include <cstdio>#include <io转载 2020-05-18 22:14:15 · 203 阅读 · 0 评论 -
cf round 643 E
题意:告诉你n,a,r,m,然后给你n个数,要求你把这n个数变得一样大。你可以进行三种操作,给某个数+1,或者给某个数-1,或者把某个数移动1到另一个数(任选两个数,一个+1,一个-1),这三种操作的代价分别是a,r,m。问你要达成目标的最小代价。输入13 1 100 1001 3 8输出112输入25 1 2 25 5 3 6 5输出23思路:首先考虑把所有数都变成x的代价是最小的,那么min(a[i])<x<max(a[i]),假设我们已知x,那么我们就可以暴力的计原创 2020-05-17 11:43:30 · 194 阅读 · 0 评论 -
poj 2018 O(n)求最长后缀
题意给你一个正整数序列,找出一个区间使得平均值最大,要求该区间的长度大于等于f,输出ans*1000的直接取整。输入10 6 //n f64210385941输出6500#include <iostream>#include <cstdio>#include <iomanip>#include <string>...原创 2020-04-10 14:55:55 · 141 阅读 · 0 评论 -
poj 2002
二分查找一个点是否存在,用set无法避免素数陷阱,无法解决负数取模问题,用map也无法解决。只能hash或者二分#include <iostream>#include <cstdio>#include <iomanip>#include <string>#include <cstdlib>#include <cstri...原创 2020-01-11 11:41:07 · 182 阅读 · 0 评论