- 博客(23)
- 收藏
- 关注
转载 01分数规划
01分数规划是这样的一类问题,有一堆物品,每一个物品有一个收益ai,一个代价bi,我们要求一个方案使选择的∑ai/∑bi最大。首先我们来一道例题吧,01分数规划的大体方法都是一样的。例: Dropping Tests poj2976给出n个物品,每个物品有两个属性a和b,选择n-k个元素,询问∑ai/∑bi∑ai/∑bi的最大值。1<=n<=1000,0<=k<n,0<...
2018-06-02 00:53:17
188
转载 最小生成树模版与次小生成树
prim算法:类似于dij算法,将每个点距离已经加入的点的集合的最短距离算出,每次取出这些距离里最短的点加入集合,并在每次加入新的点后更新这些距离即可。算法模版:#define INF 32767;void Prim(MGraph g,int v){ int lowcost[MAXV]; int min; //就是对应的元素下标的顶点的连接的上一个顶点 int ...
2018-06-01 20:03:07
291
转载 矩阵快速幂模版
const int N=10; int tmp[N][N]; void multi(int a[][N],int b[][N],int n) { memset(tmp,0,sizeof tmp); for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int k=0;k&l...
2018-05-16 01:11:39
1413
原创 (位运算的妙用与线段树)2018湘潭大学校赛H题-统计颜色
原题链接:https://www.nowcoder.com/acm/contest/105/Hn个桶按顺序排列,我们用1~n给桶标号。有两种操作:1 l r c 区间[l,r]中的每个桶中都放入一个颜色为c的球 (1≤l,r ≤n,l≤r,0≤c≤60)2 l r 查询区间[l,r]的桶中有多少种不同颜色的球 (1≤l,r ≤n,l≤r)暴力枚举可以过,但遇到此类区间问题更偏向于线段树...
2018-04-27 16:42:49
283
原创 二分查找模版(最大值,最小值,浮点数的二分)与三分搜索模版
最大化最小值(二分值最小越小越容易满足条件,求最大值)区间长度为1时的写法:解的范围为 [lb,rb][lb,rb]// 计算区间为[lb, rb]while( rb > lb ) // 区间长度为1时终止循环{ // 防止溢出 int m = lb + (rb - lb + 1) / 2; // 由于是区间长度为1时终止循环,所以要加1 if( ok(m...
2018-04-19 15:18:33
1335
1
转载 线段树与树状数组模版
线段树(递归实现,以求和为例):定义部分#define maxn 100007 //元素总个数 #define ls l,m,rt<<1 #define rs m+1,r,rt<<1|1 int Sum[maxn<<2],Add[maxn<<2];//Sum求和,Add为懒惰标记 int A[maxn],n;//存原数组数据下标[...
2018-04-13 18:01:05
153
转载 区间DP+平行四边形优化分析
区间DP模版:for (int len = 1; len < n; len++) { //操作区间的长度 for (int i = 0, j = len; j <= n; i++, j++) { //始末 //检查是否匹配(非必须) for (int s = i; s < j; s++) { ...
2018-03-16 22:51:17
906
转载 单调栈模版+简析
单调栈:栈内的元素都保持单调递增或者单调递减的栈。应用:可以在O(N)的时间复杂度内用于求对于一组数列的中的某个元素,向左/右第一个比它大/小的元素的位置。(如果不采用单调栈而是暴力查找的话,时间复杂度为O(N^2)图解:假设下图是一个栈内元素的排列情况(单调递增的栈):此时插入情况有两种: (1).插入元素大于栈顶元素 当插入7时,因7 > 6,满足单调递增的条件,故可以直接加入栈 此时:...
2018-03-16 11:41:24
752
原创 收藏夹
贪心-区间问题:http://longgongshiye.blog.163.com/blog/static/1714825972011712105027741/CCCC天梯赛L3-011“直捣黄龙”:https://blog.csdn.net/qq_27601815/article/details/69344260树状数组+逆序对 HDU-2838 https://blog.csdn.net/u...
2018-03-09 16:56:39
150
原创 浅谈差分约束算法
参考:http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html (理论部分) https://www.cnblogs.com/zhangmingcheng/p/3929394.html (题集举例)差分约束系统有两种方式可以求解,最短路和最长路。当我们把不等式整理成d[a]+w<=d[b]时,我们求最长...
2018-03-09 00:08:16
2276
转载 并查集
并查集是一种可以高效完成以下操作的数据结构:1.查询元素a与元素b是否属于同一分组。2.合并元素a和b所属的分组。对于并查集,每次查询如果不使用路径压缩,在极端情况下将会退化为一条链,如下:int findfat(int x){ if(fat[x] == x) return x; return findfat(fat[x]);}在树型数据结构里,如果发生了退化的情况,那么复杂度就会变得很高...
2018-03-06 10:40:45
108
原创 最小生成树(森林):Prim算法与Kruskal算法 (以POJ1287为例)
Prim算法:Prim算法类似于Dijkstra算法,但又不尽相同。我们首先设一个只包含一个随机选取的结点v的集合T(T即为已加入最小生成树的点的集合)然后贪心地选取其他未加入集合中的点与T的距离最短的点即可,如此迭代这一过程,直到所有的点都已加入集合T,即得到了最小生成树。图示分析:https://www.61mon.com/index.php/archives/199/POJ1287-NETW...
2018-03-06 10:35:55
2461
转载 CodeForces - 782C Andryusha and Colored Balloons
C. Andryusha and Colored Balloonstime limit per test 2 secondsmemory limit per test 256 megabytesinput standard inputoutput standard outputAndryusha goes through a park each day. The squares and paths...
2018-03-02 17:44:24
339
转载 【二分】 Codeforces Round #403 (Div. 2)B. The Meeting Place Cannot Be Changed
B. The Meeting Place Cannot Be Changedtime limit per test5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThe main road in Bytecity is a straight line from south to n...
2018-03-01 23:23:31
122
原创 我没写出来的题 开个帖子记录 用来自己看
CF#822C:Hacker, pack your bags!优秀题解:http://blog.csdn.net/junior19/article/details/74536958时间段处理问题,先按照开始或结束时间完成排序,再使用贪心法解决问题。...
2018-02-27 22:24:50
119
转载 STL中的一些实用而有趣的数据结构
优先队列1.可以插入一个数值。2.取出最小/大数值,获得数值,并且删除。头文件&说明#include<queue>usingnamespacestd;复杂度:对每个元素,插入和删除只是修改了堆顶和堆底,不需要所有的都排序,只是需要再次调整好堆,因此时间复杂度都是O(logN)常用格式:priority_queue <node> q;//node是一个结构体//结...
2018-02-18 23:55:40
2174
转载 EOJ Monthly 2018.2 (Good bye 2017) A2. 坑爹的售票机【完全背包】
题目:http://acm.ecnu.edu.cn/contest/51/problem/A2/因为所给纸币面值可以用来贪心,所以先用贪心算法得出买n张票的所需最少纸币数。接着,因为没有规定总共可以买几次票,就是一个完全背包问题。背包容量为买票数目,每种买票方式为一个物品,方式所花纸币数目为物品价值,所买票数为物品重量。但由于题中所给数据过大,无法创造如此庞大的dp[数组],故我们采用类似于滚动数...
2018-02-14 01:23:55
447
原创 图的存储与遍历(链式前向星中的DFS与BFS)
图的存储方式:1.图的数组(邻接矩阵)存储表示,其中无向图的存储方式为对称矩阵数组,有向图的存储方式为非对称矩阵数组。求最短路径时常常采用数组存储表示各点间的路径。2.边集方法 边的定义: stuct edge_set{ int u,v; int weight; }edge[N];边的结点:edge[i].u...
2018-02-13 22:11:20
1456
原创 「关于单源最短路径的三种算法的思考(不包括计算多点路径的Floyd算法)」
从Bellman-Ford算法(可以处理负值,检测负权回路,但复杂度过高)开始,Bellman-ford算法是求含负权图的单源最短路径算法;效率很低,但代码很容易写;复杂度很高:O(VE) v为顶点数,e为边数。思想:进行不停地松弛,每次松弛把每条边都更新一下,直到一次遍历所有边的松弛操作无法更新结点间的最短距离。若n-1次松弛后还能更新,则说明图中有负环(因为最短路不会同时经过同一个点两次,也就...
2018-02-13 00:55:52
428
原创 【线段树】Codeforces 767C Garland
C. Garlandtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputOnce at New Year Dima had a dream in which he was presented a fairy garland. A garland i...
2018-02-11 13:35:41
227
转载 【DP】 CodeForces - 766C Mahmoud and a Message
题意:给定一个长度不超过1000的由小写英文字母组成的字符串。将字符串分解,要求每个小写字母i所在子串长度均不超过a[i]。输出符合要求的方案数,最大子串长度,最少子串个数。很明显的dp题。。。比赛时没有想到如何处理可行方案数。。。核心在于对于i-j段如果是合法的子串,则dp[j]+=dp[i];题解:用dp[i]记录到当前位置的可行方案,dp[i]可以由dp[j]的状态加上一段合法的长度为j-i...
2018-02-11 13:16:54
162
原创 【递归】CodeForces - 768B
题意:给定一个数N,对大于1的数在原来的位置拆分为N/2,N%2,N/2三个数。对拆分出的大于1的数同样进行拆分,直至所有的数均为0或1。对拆分后的0/1序列,询问L到R区间中1的数量。。。类似于线段树的区间查询题解:简单题,递归思想。对于给定的N,可以计算出最终0/1序列的长度。递归模拟,一层层往下分解,将得到的数分解到序列的对应指定位置中,当无法分解时则返回值,最后递归得到区间内所有的1的个数...
2018-02-11 13:11:27
385
转载 关于逆元
逆元详细解释:[对于缩系(https://baike.baidu.com/item/缩系/4763557?fr=aladdin)中的数字]逆元一般用扩展欧几里得算法来求得,扩展欧几里得:这个方程可以转化为ax-my=1 然后套用求二元一次方程的方法,用扩展欧几里得算法求得一组x0,y0和gcd 检查gcd是否为1 gcd不为1则说明逆元不存在 给定模数m,求a的逆相当于求解ax=1(mod m)若...
2018-02-08 23:42:45
213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人