![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
fengbinstudying
这个作者很懒,什么都没留下…
展开
-
栈排序&最大直方图面积 cs精英挑战营-专题训练课
前沿:自强不息:投入,每一个环节细致。在乎方法;及时沟通想象力,计算机科学相对比较抽象。根据算例,跑一些算例。实地去计算、去使用。栈排序栈 stack pop 出栈 push 进栈 LIFO 后进先出insertionsort:插入排序 O(I+n)( I(inversion):逆序对 度量序列的有序性 n:序列输入长度 )输入敏感:算法复杂度与输入长度有关的假设前面的(pre...原创 2019-07-13 17:36:15 · 167 阅读 · 0 评论 -
倒水问题BFS CS精英挑战营
倒水问题问题分析操作分类:本质上是六种操作。如果采用暴力枚举的方法,O(6^t) (t<=4 可以用搜索算法)采用动态规划算法。 与记忆化搜索类似。通过搜索算法去优化。 只要A杯水u中和B杯水v中的量是相同的,并且操作数为i,dp[i][u][v],那么就可以认为是相同的状态。dp[i+1][x][y] 来表示下一次可以到达的水量x,y。 若为零则表示不能到达。若为一,则表示...原创 2019-08-09 21:07:04 · 463 阅读 · 0 评论 -
计算几何(一) by 邓俊辉老师
计算几何诞生于上世纪八十年代中后期。在竞赛中考察概率不高,因为不易编成竞赛题,但是遇到的情况会非常多。计算几何的特点 - 注重于符号 仅有加法乘法没有除法in-Triangle Test每三个点(P、Q、R)确定一个三角形。如何判断第四个点,落在三角形内部还是在三角形外部。正确且简洁的办法。做一条射线,穿越奇数词(odd)在内部;穿越偶数次(even 0,2)在外部。要用到分而治之和...原创 2019-08-07 21:11:34 · 3320 阅读 · 4 评论 -
背包问题 变式 DP
如果单独将某个物品去除,每次做一个01背包。时间复杂度为O(nqnv)如果将其拆分为,两个体积为V1、V2的背包。采用前缀背包和后缀背包。拆成两部分#include <stdio.h>#include <utility>#include <math.h>#include <algorithm>#include <string....原创 2019-08-10 19:15:03 · 378 阅读 · 0 评论 -
奶牛吃草 DP
奶牛吃草时间限制:4 sec空间限制:256 MB问题描述有一只奶牛在一条笔直的道路上(可以看做是一个数轴)。初始,它在道路上坐标为 K 的地方。这条道路上有 n 棵非常新鲜的青草(编号从 1 开始)。其中第 i 棵青草位于道路上坐标为 x[i] 的地方。贝西每秒钟可以沿着道路的方向向前(坐标加)或向后(坐标减)移动一个坐标单位的距离。它只要移动到青草所在的地方,就可以一口吞掉青草,它...原创 2019-08-10 19:39:47 · 789 阅读 · 0 评论 -
最长公共子序列实质(LIS)最长递增子序列 nlogn做法
最长公共子序列时间限制:1 sec空间限制:256 MB问题描述给定两个 1 到 n 的排列 A,B (即长度为 n 的序列,其中 [1,n] 之间的所有数都出现了恰好一次)。求它们的最长公共子序列长度。输入格式第一行一个整数 n ,意义见题目描述。第二行 n 个用空格隔开的正整数 A[1],…,A[n],描述排列 A。第三行 n 个用空格隔开的正整数 B[1],…,B[n],描...原创 2019-08-10 20:09:43 · 379 阅读 · 0 评论 -
小棕圈地 凸包旋转卡壳
小粽圈地问题描述小粽家里有一块地,地上有 n 个木桩。小粽家的地可以看作是一个平面,并且小粽知道每个木桩的坐标 (xi,yi)。小粽很喜欢四边形,现在她想从这些木桩中选出 4 个来围成一个四边形(这个四边形为简单多边形,即每条边不能和自己相交,但不一定要为凸四边形),并使得这个四边形的面积最大。请你帮小粽算出这个最大值是多少。输入格式第一行一个正整数 n 表示木桩的大小。接下来 n 行...原创 2019-08-20 16:39:45 · 246 阅读 · 0 评论 -
判断点是否在凸包内
周测5描述二维平面上,给定n个点{ai}和m个点{bi},且保证这n+m个点中,任意两个点的x坐标或y坐标均不相同。对于每个bi,判断是否存在由3个ai,aj,ak(1≤i,j,k≤n,i≠j≠k)点组成的三角形包含bi(在三角形边上也算包含;允许三点共线的三角形,此时只有bi在三点中任意两点的线段上才算包含)。输入第一行为一个整数n。接下来n行,其中第i行有两个整数,表示ai的横纵坐标...原创 2019-08-20 19:54:58 · 4592 阅读 · 0 评论 -
凸包模板
凸包描述给定n个二维平面上的点,求他们的凸包。输入第一行包含一个正整数n。接下来n行,每行包含两个整数x,y,表示一个点的坐标。输出令所有在凸包极边上的点依次为p1,p2,…,pm(序号),其中m表示点的个数,请输出以下整数:(p1 × p2 × … × pm × m) mod (n + 1)样例1输入107 9-8 -1-3 -11 4-3 96 -47 56...原创 2019-08-20 20:01:59 · 271 阅读 · 0 评论 -
邓公总结课
python listpython 语法一般从list开始讲起。list 插入、删除元素比较容易,查找比较慢。两种对list进行翻转操作。def reverse_1(L){ lo,hi = 0, len(L)-1 #从首末元素开始 平行赋值 while lo<hi #依次令对称元素 L[lo],L[hi] = L[hi], L[lo] #互换,然后 lo,hi = ...原创 2019-08-25 16:57:35 · 431 阅读 · 0 评论 -
TRIE树 习题-前缀
前缀 CS精英挑战营,trie树典型题#include <cstdio>#include <cstring>#include <iostream>using namespace std;// ================= 代码实现开始 =================const int M = 505, L = 1000005;//...原创 2019-08-16 19:46:25 · 169 阅读 · 0 评论 -
KMP算法。习题两道循环节&字符串匹配。cs精英挑战营
循环节由Next表可知。#include <cstdio>#include <cstring>#define maxl 1000000void getNext(char * s, int len, int next[]){ int t=next[0]=-1; int j=0; do ( 0>t || s[j]=...原创 2019-08-16 21:26:30 · 198 阅读 · 0 评论 -
基数排序 习题
基数排序时间限制:10 sec空间限制:1 GB问题描述给定 n 个 [0,2^k) 之间的整数,请你将它们升序排序。由于 n 可能很大,为了避免过大的输入、输出规模,我们会在程序内部生成数据,并要求你输出排序后序列的哈希值。具体方法如下(用c++代码展示):typedef unsigned int u32;u32 nextInt(u32 x){x^=x<<13;x^...原创 2019-08-17 19:37:47 · 990 阅读 · 0 评论 -
散列 桶排序 最大间隙 基数排序 bitmap by邓俊辉老师
散列call by value 通过值去索引。java 中有 HashMap散列 和 Hashtable散列表 利用key-value pair存到相应的位置。python 中有 dictionary字典 利用hashtable数据结构和算法是硬币的两面。数据存储的问题???1、space 空间大小,效率。2、time 需要做一个初始化。for… memset…哈希算法:如果...原创 2019-08-06 21:36:21 · 608 阅读 · 0 评论 -
计算几何(二) by邓俊辉老师
凸包算法 最简。极点算法—极边算法—incremental javis march or 类似于insertion sort更快地 O(nlogn) R.Graham Scan 线性时间进行扫描就可以了。sort all vertices by polar angle 。关于LTL lowest then leftmost 根据他们的极角进行排序。实际上不用算出每一个角度。无非是对每一个...原创 2019-08-08 22:17:10 · 934 阅读 · 1 评论 -
凑零钱 母函数 cs精英挑战营习题
代码参考博客:http://blog.csdn.net/xiaofei_it/article/details/17042651//母函数即生成函数#include <stdio.h>#include <string.h>#include <iostream>using namespace std;/*v[i]表示该乘积表达式第i个因子的权重,...原创 2019-07-28 13:43:39 · 197 阅读 · 0 评论 -
栈排序的Python实现
class Stack(): def __init__(self): self.items = [] # 为空列表 def empty(self): #确定栈是否为空,返回布尔值 return self.items == [] def size(self): #返回栈的大小 return len(self...原创 2019-07-14 21:11:15 · 827 阅读 · 0 评论 -
数据结构&贪心(二) by邓俊辉老师
数据结构&贪心(二)BST binary search tree 二叉搜索树对一个二叉搜索树,从根节点开始比较大小搜索。任意节点:左后代比根节点小、右后代比根节点大。左小右大。BBST:balanced binary search tree 平衡二叉树。对于深度比较深的节点,步骤会比较多一些。对于树进行平衡化,深度比较平均散列表-哈希表 hashtable怎么去做这么一个映...原创 2019-07-18 21:32:49 · 310 阅读 · 0 评论 -
中位数 cs精英挑战营 OJ
#include <queue>#include <cstdio>using namespace std;/* ===================== 代码实现开始 =================== */typedef priority_queue<int, vector<int>,less<int> > Big...原创 2019-07-23 23:53:00 · 105 阅读 · 0 评论 -
图搜索 (BFS广度优先搜索 DFS宽度优先搜索)by 邓俊辉老师
广度优先搜索BFSBreadth First Search以s为中心,每一单位时间向外传递。以草和火种作为比喻,源头为火种,待点燃的点为草。每单位时间向外蔓延一个单位。前锋面越来越大在图搜索的过程中在模拟这个火种蔓延过程。注二叉树的层次遍历也是有顺序的。图搜索模板:first in first out - queue 每一个前锋面都排成一个队列,先进先出template<t...原创 2019-07-29 21:59:06 · 630 阅读 · 0 评论 -
周测1最大字典序出队。但是进队只能从尾部进 cs精英挑战营
//#include <bits/stdc++.h>#include <queue>#include <deque>#include <vector>#include <stdio.h>using namespace std;// ================= 代码实现开始 =================//...原创 2019-07-25 00:49:57 · 180 阅读 · 0 评论 -
kruskal算法实现 —c++ 最小k生成森林问题 cs精英挑战营 柿子问题
//#include <bits/stdc++.h>#include <stdio.h>#include <vector>#include <iostream>using namespace std;// ================= 代码实现开始 =================#define MAXN 100000+10...原创 2019-07-25 21:43:51 · 330 阅读 · 0 评论 -
动态规划 by邓俊辉老师 fibonacci 快速幂 最短向上路径 最长曼哈顿道路 最长公共子序列 背包问题 传递闭包 任何两点最短路径
分而治之也是存在前提的。 分而治之是一种递归问题可以分,分出来的规模也差不多。分出来的问题,是彼此不相关的,相互独立的。可以分而治之。但是存在一些不是相互独立 的子问题。会造成工作量的爆炸。呈指数级别增加。但是动态规划能够有效发现这类问题,但不能够解决全部此类问题。DP是把递归的思路反向变为递推。最优化子结构。#也是一种贪心Fibnacci:recursion斐波那契数列。每隔一个月就可...原创 2019-07-30 21:32:16 · 502 阅读 · 2 评论 -
等式 清华OJ 训练营 c++实现
等式描述有n个变量和m个“相等”或“不相等”的约束条件,请你判定是否存在一种赋值方案满足所有m个约束条件。输入第一行一个整数T,表示数据组数。接下来会有T组数据,对于每组数据:第一行是两个整数n,m,表示变量个数和约束条件的个数。接下来m行,每行三个整数a,b,e,表示第a个变量和第b个变量的关系:若e=0则表示第a个变量不等于第b个变量;若e=1则表示第a个变量等于第b个变量...原创 2019-07-23 12:08:28 · 328 阅读 · 0 评论 -
排序二叉树 构建与遍历 cs精英挑战营 习题
#include<stdio.h>#include<iostream>#include<vector>using namespace std;const int N = 100001;// 排序二叉树,左小右大struct node{ int val,l,r;}t[N];//利用结构体数组来形成二叉树的数据结构/*java 语言...原创 2019-07-27 20:46:05 · 105 阅读 · 0 评论 -
重编码-k cs精英挑战营 Huffman树/编码构造
#include <queue>#include <cstdio>#include <vector>#include <stdlib.h>using namespace std;typedef long long LL;// =================== 代码实现开始 ========================...原创 2019-07-27 20:59:32 · 140 阅读 · 0 评论 -
字符串匹配 蛮力搜索 KMP BC GS 数据结构Trie by邓俊辉老师
字符串:一连串的字符连在一起。是一种线性结构。仅能存储字符集。特点:非常长、比一般的线性序列长一些。call by pattern 根据模式进行访问。子字符串substr(i,k)=S[i,i+k) 左闭右开。一共k个字符 与 subseqence 子串 不同 前者更多是一些切片slice,后者就是一些子串。substring的特例:前缀prefix(k)=S[0,k)和后缀suff...原创 2019-08-05 21:35:50 · 533 阅读 · 0 评论 -
矩阵hash 习题
描述给定两个矩阵,判断第二个矩阵在第一个矩阵的哪些位置出现过。输入输入的第一行包含四个正整数a,b,c,d,表示第一个矩阵大小为a×b,第二个矩阵的大小为c×d。接下来是一个a×b的矩阵。再接下来是一个c×d的矩阵。保证矩阵中每个数字都为正整数且不超过100。输出若第二个矩阵在第一个矩阵的(i,j)位置出现(即出现位置的左上角),输出i和j。若有多个位置,按字典序从小到大的顺序依次...原创 2019-08-17 20:25:26 · 326 阅读 · 0 评论