算法-二分
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 · 126 阅读 · 0 评论 -
poj 2828
网上好多人都用的是线段树,其实树状数组也是可以的。不过也侧面说明了线段树的可扩展性是强于树状数组的。 题意: 插队的问题,每个案例给出n,代表有n个插队的,每个给出p,v,意思是代号为v的人插在了第p个人的后面,问最后的队伍的排列? 题目中一开始整个队列是空的,也就是说如果输入i,j:代表代号为j的人插在了第i个人的后面,也就是说在他之前一定有了i个人,而他的位置是i+1。 Sample Input 4 0 77 1 51 1 33 2 69 4 0 20523 1 19243 1 3890 0 31492原创 2020-06-07 12:27:54 · 121 阅读 · 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 · 185 阅读 · 0 评论 -
cf round 643 E
题意: 告诉你n,a,r,m,然后给你n个数,要求你把这n个数变得一样大。你可以进行三种操作,给某个数+1,或者给某个数-1,或者把某个数移动1到另一个数(任选两个数,一个+1,一个-1),这三种操作的代价分别是a,r,m。问你要达成目标的最小代价。 输入1 3 1 100 100 1 3 8 输出1 12 输入2 5 1 2 2 5 5 3 6 5 输出2 3 思路: 首先考虑把所有数都变成x的代价是最小的,那么min(a[i])<x<max(a[i]),假设我们已知x,那么我们就可以暴力的计原创 2020-05-17 11:43:30 · 168 阅读 · 0 评论 -
poj 2018 O(n)求最长后缀
题意 给你一个正整数序列,找出一个区间使得平均值最大,要求该区间的长度大于等于f,输出ans*1000的直接取整。 输入 10 6 //n f 6 4 2 10 3 8 5 9 4 1 输出 6500 #include <iostream> #include <cstdio> #include <iomanip> #include <string>...原创 2020-04-10 14:55:55 · 120 阅读 · 0 评论 -
poj 2002
二分查找一个点是否存在,用set无法避免素数陷阱,无法解决负数取模问题,用map也无法解决。 只能hash或者二分 #include <iostream> #include <cstdio> #include <iomanip> #include <string> #include <cstdlib> #include <cstri...原创 2020-01-11 11:41:07 · 164 阅读 · 0 评论