算法
YLWangcpp
这个作者很懒,什么都没留下…
展开
-
最长上升子序列 nlogn
nlogn LIS:开一个栈,每次取栈顶元素top和读到的元素temp做比较,如果temp > top 则将temp入栈;如果temp < top则二分查找栈中的比temp大的第1个数,并用temp替换它。 最长序列长度即为栈的大小top。这也是很好理解的,对于x和y,如果x < y且Stack[y] < Stack[x],用Stack[x]替换Stack[y],此时的最长...原创 2018-06-04 17:50:52 · 526 阅读 · 0 评论 -
割点浅谈
题目:洛谷P3388模板割点if(边 u -> v 是树边(父子边)) low[u] = min( low[u], low[v] ); else low[u] = min( low[u], dfn[v] );关键在于:为什么回边的情况下,为什么不是low[u] = min( low[u], low[v] );,而是low[u] = min( low[u], dfn[v] );...原创 2018-06-05 21:20:01 · 379 阅读 · 0 评论 -
费用流详解
转自https://blog.csdn.net/ripped/article/details/70669955费用流,也叫作最小费用最大流,是指在普通的网络流图中,每条边的流量都有一个单价,求出一组可行解,使得在满足它是最大流的情况下,总的费用最小。 (最大费用最大流同理,费用改成负的就行) 做法一般都是简单地SPFA(也就是和EK算法类似),时间复杂度比较高,所以一般规模都挺小的。 1、找到一条...转载 2018-07-14 16:21:24 · 1622 阅读 · 0 评论 -
高精度类模板
struct bigint{ static const int MAXN = 1005; int d[MAXN], len; void clean() { while(len > 1 && !d[len-1]) len--; } bigint() { memset(d, 0, sizeof(d)); len = 1; } bigint(int n...原创 2018-10-29 20:25:30 · 233 阅读 · 0 评论 -
卖铅笔
此题很水,sort一遍即可。千万别忘记开long long 注意n,m不要读入反,博主就咕在了这里,Time Limit Exceeded 10 / 10 #pragma GCC optimize(3) #include<bits/stdc++.h> #define For(i, j, k) for(int i=(j);i<=(k);i++) #define INF...原创 2018-11-04 17:27:31 · 267 阅读 · 0 评论 -
购物
DP.f[i][j]表示花费为i, 买了j个物品的价值 #pragma GCC optimize(3) #include<bits/stdc++.h> #define For(i, j, k) for(int i=(j);i<=(k);i++) #define INF (2147483647>>1) #define Pair pair<int,int...原创 2018-11-04 17:52:02 · 227 阅读 · 0 评论 -
搜集钻石(树形DP例题)
搜集钻石 Description 蒜国有 n 座城市,编号从 1 到 n,城市间有 n−1 条道路,且保证任意两座城市之间是连通的。每一座城市有一定数量的钻石。 蒜头君想在蒜国搜集钻石。他从城市 1 出发,每天他可以通过城市之间道路开车到另外的城市。当蒜头第一次到一个城市的时候,他可以搜集完这个城市的所有钻石,如果他后面再来到这个城市,就没有砖石可以收集了。 蒜头君只有 K 天时间,...原创 2018-11-26 15:36:15 · 568 阅读 · 0 评论 -
树状数组单点修改模板
#pragma GCC optimize(3) #include<bits/stdc++.h> #define mst(a,b) memset(a,b,sizeof(a)) #define For(i, k, j) for(int i = (k); i <= (j); i++) #define INF 2147483647/3 #define ll long long usin...原创 2018-11-26 18:58:59 · 209 阅读 · 0 评论