algorithm
文章平均质量分 65
Peiwen123
Clear code
展开
-
[分治][暴力剪枝]HDUOJ 1007 Quoit Design 平面最近点对 (旋转瞎搞法)
先引流以前写的平面最近点对的模板[分治][暴力剪枝]Vijos P1012 平面最近点对 模板当时是用分治法和暴力剪枝写的, 文章最后也提到了旋转瞎搞的办法, 当时是这样描述的思路;然后,大神说还有一种乱搞的办法解这道题;先对所有点按照x坐标排序之后,对于每一个点,不去遍历其他的所有点,而是只遍历它x轴附近的一些点,随便设定一个阈值,比如100个点,然后可能可以过;但是这样的搞法容易被数据卡,所以还能优化;想到,这样的解法如果有问题,肯定是有这样的点,比如点a和点b的x轴相距很近,但是y轴相聚很原创 2020-11-16 23:26:23 · 530 阅读 · 0 评论 -
Dijkstra算法 寻找最优路径
方法1: 引入path数组, 记录下每个节点 想要走最短路径到达终点的下一跳节点;方法2: 从起点开始遍历, 遍历邻接节点, 如果当前节点到下一节点的距离+下一个节点到终点的距离=当前节点到终点的距离, 则认为该下一节点是最优路径上的节点原创 2020-01-05 11:20:31 · 2376 阅读 · 1 评论 -
ALDS1_1_B Greatest Common Divisor 最大公约数 Java
题目链接 给2个数求最大公约数 代码:import java.io.*;import java.util.*;public class Main{ public static void main(String args[]) throws Exception { Scanner cin=new...原创 2018-08-23 01:38:44 · 174 阅读 · 0 评论 -
[树状数组]Leetcode 307. 区域和检索 - 数组可修改
不太熟悉leetcode的做题姿势 - - 本来是想在leetcode上找几道线段树的模板题做一下,没想到找到的是个树状数组的模板题…要做的就是简单的单点更新和区间求和lowbit,add和sum都是模板里的,注意的是题目要求的NumArray里要把输入的数组保存到类里,然后要借助c.resize来实现类似于开数组的操作;class NumArray {private: ...原创 2018-07-28 14:30:09 · 497 阅读 · 0 评论 -
洛谷P3373 【模板】线段树2
在洛谷随便找了一题线段树的模板题,洛谷大牛的题解真是好评~题目链接大神题解题目先给一个数组,然后给出一些操作操作1: 格式:1 x y k 含义:将区间[x,y]内每个数乘上k操作2: 格式:2 x y k 含义:将区间[x,y]内每个数加上k操作3: 格式:3 x y 含义:输出区间[x,y]内每个数的和对P取模所得的结果然后在询问时要输出区间和,要模p;注意题目...原创 2018-07-28 02:07:33 · 1010 阅读 · 1 评论 -
[线段树模板]CodeVS 1082
整理一下标准的线段树模板,区间更新,求区间和两种操作;还是用数组的方法来表示线段树;先是定义节点:struct node{ long long sum,lazy; }c[maxx<<2];再是建树:(记得l==r时,c[u].sum=a[l],l和r表示的是线段的端点)void build(int u,int l,int r){ c[u].lazy=0;...原创 2018-07-29 18:06:29 · 206 阅读 · 0 评论 -
[树状数组模板] 洛谷P3368
树状数组比较适合于对于给定数组求前缀和(区间和),但是只能单点更新,不容易做区间更新,但是今天学会了可以利用差分的方法来做区间更新,可以很快实现单点查询;上模板~首先是lowbit:inline int lowbit(int k){return (k&(-k));}然后是单点更新:inline void add(int x,long long k){ for(...原创 2018-07-29 18:20:07 · 560 阅读 · 1 评论 -
[二分]JoyOI 收入计划 (tyvj 1359) 二分答案法
题目链接 本来是tvyj1359的题目,但是现在这个oj迁移到JoyOI上了 是夏令营里讲二分答案的一道例题,就当做是二分答案的模板用吧; 题目意思是这样的,现在给一个序列,现在要把这个序列分成m段,然后每一段都有一个和,要求这m段中的和的最大值最小; 就是一个最大值最小化的问题; 对于二分答案的题,需要满足几个前提: 1.答案的范围容易知道; 2.答案区间上是单调的; 3.容易判...原创 2018-08-04 10:40:21 · 401 阅读 · 0 评论 -
[二分]51Nod 1105 第K大的数
题目链接 题目大概是这样,给两个序列,长度都是n: a[0]-a[n-1] b[0]-b[n-1] 现在把a和b两个序列中的每个元素分别相乘,生成n*n个数,即: a[0]*b[0],a[0]*b[1],a[0]*b[2]…… a[1]*b[0],a[1]*b[1],a[1]*b[2]…… …… 然后给出一个数字k,要求出这n*n个数中,第k大的数;思路:二分套二分首先...原创 2018-08-05 15:06:18 · 288 阅读 · 0 评论 -
[二分]POJ2976 Dropping tests(浮点数优化)
题目链接 题目给出了n对数对( a[i],b[i] ),a和b均为正整数; 给出一个k,表示,你可以从这n对数中,任意丢弃k组; 使得 这个值能取到最大值; 首先,我们思考一个问题:能不能找到一个x使得满足 ∑a[i]∑b[i]≥x∑a[i]∑b[i]≥x\frac{\sum a[i]}{\sum b[i]}\geq x 我们只需要找到所有满足x的值中的最大值,这个值就是上面的式子中能取...原创 2018-08-06 01:03:39 · 173 阅读 · 0 评论 -
[二分]洛谷U33405 纽约
题目链接 题目给n个重量w[i],现在要用一个承重为w的卡车来装货物,然后要求不超过r次装完,要求w的最小值; 题目中给定了装货物的方案,是使用贪心的方法,即,每一次选择装上车的货物,都是目前所剩的货物中,最重的而且能装上车的; 注意,装上车的货物不一定是剩下的货物中最重的,而是所剩的货物中,而且能装上车的货物中的最重的; 首先我们想,能不能用一辆承重为x的车,来运完货物,这个函数为che...原创 2018-08-06 17:18:28 · 354 阅读 · 0 评论 -
[分治][暴力剪枝]Vijos P1012 平面最近点对 模板
题目链接 题目大意是,给你n个点,要求出这n个点中,距离最近的两个点的距离; 这题正解应该是分治; 先上一篇大牛的blog 计算几何 平面最近点对 nlogn分治算法 求平面中距离最近的两点 然后说一下我自己的理解和思路; 首先是分治的思想,对于n个点,我们可以把这些点按照x轴排序后,再分成两半,每一半中点的数量都不超过n/2,可能还有一部分点处于分割线上; 然后我们只要求出左边和右...原创 2018-08-07 18:28:09 · 327 阅读 · 0 评论 -
[单调队列] 洛谷P1886 滑动窗口
题目链接 dalao题解 题目给一个长度为n的序列,然后给一个值k,要求出长度为k的窗口在数列滑动过程中的最大值和最小值; 图示如下: 比如给一个长度为n=8的序列为: 1 3 -1 -3 5 3 6 7 窗口长度是k=3 那么窗口滑动中的 最小值就是 -1 -3 -3 -3 3 3 最大值就是 3 3 5 5 6 7 这题大概是一个单调队列的模板题… 单调队列就是...原创 2018-08-10 01:44:26 · 357 阅读 · 0 评论 -
[单调栈]牛客网 直方图内最大矩形
题目链接 题目给一个向量,里面存一个序列,表示一个直方图的各个元素高,要求出这个直方图中的最大矩形面积;构建一个递增的单调栈: [单调栈就是一个栈,栈底元素向栈头元素递增,新加入的元素如果小于栈顶元素,就把栈顶元素pop,直到栈顶元素小于新加入的元素] 我们使用这样的数据结构 pair&amp;amp;amp;amp;amp;amp;lt;int,int&amp;amp;amp;amp;amp;amp;gt;pair&amp;amp;amp;amp;原创 2018-08-14 17:18:49 · 563 阅读 · 0 评论 -
[二分] 洛谷P1024一元三次方程求解
题目链接给一个一元三次方程 ax3+bx2+cx+d=0ax3+bx2+cx+d=0ax^3+bx^2+cx+d=0 求这个方程的解,保证该方程存在三个不同实根(根的范围在 -100到100之间),且根与根之差的绝对值 ≥1 。思路:因为根与根之差的绝对值大于等于1,保证了在长度为1的区间上最多只有1个解;所以可以在-100到100之间遍历答案,找到一段区间上有解之后,可以二分来寻找答案的...原创 2018-08-20 01:03:41 · 237 阅读 · 0 评论