算法
文章平均质量分 68
Caristra
live for code
展开
-
Paths(升级版)---3011
题意有一棵树,树的节点编号为1,2,…,n。 树上有m条路径,现在要从这些路径中选一些,选出的路径不能有公共点。 每条路径有一个权值,求选出哪些路径,是的权值最大。思路: 如上图,此题实际上就是在可选择的边上多了权值的信息,然而,这就完全不是一道题目了…dp[i]表示以i为根的子树的最大值; sum[i]表示i的子节点的子树的dp之和; 也就是:val + ∑sum[i] - ∑dp[i]原创 2017-10-11 16:19:57 · 598 阅读 · 0 评论 -
浅析2-sat
2-sat简介:sat问题(适定性(Sat**isfiability)问题)——给定一个布尔方程,求出这个方程的解**. 若有KKK个变量,则称为K-sat问题,故K=2K=2K=2时,即为2-sat问题…关于它的解法,常用的有两种——(dfs,tarjan+拓扑).常规操作:在满足布尔方程的性质——一个变量为1或0——下,我们可以建出一个满足对称性的类似于二分图的图...原创 2018-08-11 22:22:07 · 659 阅读 · 0 评论 -
Tarjan 算法介绍及用法
Tarjan简介:这是一个有关图联通的算法,它基于dfs 在解决有环的有向图或无向图的问题时,很多算法不好是操作…那么就先要将环进行缩点,将其转换为DAG(有向无环图)或一棵树,然后问题应会迎刃而解常规操作:首先补几个概念: - 强连通:在一个DAG中,有 a,b 两点,若a可以到达b且b可以到达a,则(a,b)即为强连通 - 强连通图:若在一个DAG中,任意两...原创 2018-08-02 22:29:02 · 646 阅读 · 0 评论 -
初学欧拉回路/路径的判定 & 欧拉图的有关问题
欧拉回路简介:欧拉回路:每条边恰好只走一次,并能回到出发点的路径.欧拉路径:经过每一条边一次,但是不要求回到出发点.欧拉图:图当且仅存在欧拉回路.半欧拉图:图当且仅存在欧拉路径.常规操作:关于欧拉图的问题,一般是判回路的存在性或生成一个(半)欧拉图的代价或方案.判欧拉图,即判存在回路,这里通过判点的度数来实现.生成欧拉图的代价,类似于一笔画,这时候就要通过一些结...原创 2018-08-12 10:30:10 · 1561 阅读 · 0 评论 -
K短路——A*算法
A*简介:A∗A∗A*(Astar),是一种启发式搜索,也是bfsbfsbfs的特例。准确说,bfsbfsbfs是盲目的搜索。 那么A∗A∗A*就是让决策优化,实际上,就是预处理终点到起点的最短路,再在起点到终点时判断第KKK短路。这是一个非常实用的解决第KKK短路问题的算法。常规操作: - 先预处理出终点到起点(反图)的最短路(SPFA,Dijs) - 再通过优...原创 2018-08-20 16:11:01 · 974 阅读 · 0 评论 -
浅谈差分约束系统
差分约束系统简介:背景是给你若干个不等式,形如xi−xj≤bxi−xj≤bxi-xj \le b,需要你判断x的解的存在性或是最优解。而差分约束系统即为这个问题转化为一个图论问题,进而跑最短路来判环或求最值距离(最优解)。这里转化的原理是三角不等式,即d(v)−d(u)≤cost(u,v)d(v)−d(u)≤cost(u,v)d(v)-d(u) \le cost(u,v),可以建...原创 2018-08-21 08:44:40 · 1889 阅读 · 0 评论 -
IOI 2011 米仓
Description:在一条xxx轴上,有nnn个米仓,每个米仓的的粮食都是111,且知道它们的位置pip_ipi,以及坐标范围LLL。问在某个点建一个仓库,在总花费不超过BBB的情况下,求最大的仓库粮食量,一粮食每一单位的运费为111。n≤106,L≤109,B≤2⋅1015n\le10^6,L\le10^9,B\le2\cdot 10^{15}n≤106,L≤109,B≤2⋅1015...原创 2018-10-25 16:49:45 · 256 阅读 · 0 评论 -
USACO 2017 Open Platinum
Description:有一个nnn个点,mmm条边的图,每个点都有颜色,颜色种类的范围为[1,K][1,K][1,K]。现在有qqq个操作,每个操作将点xxx的颜色改为kkk,在每个操作后求不同颜色的最小距离。n≤2⋅105,m≤4⋅105,K≤106,q≤2⋅105,wi≤106n\le2\cdot 10^5,m\le4\cdot 10^5,K\le10^6,q\le2\cdot 10^...原创 2018-10-25 16:53:22 · 416 阅读 · 0 评论 -
Codeforces 526 G Spiders Evil Plan
Description:一棵树,有qqq个询问,每次询问以xxx为中心,建yyy条河,满足河一定与xxx连通,求每次询问的最大价值(河覆盖的路径长度)。n,q≤105n,q\le 10^5n,q≤105Solution:首先,我们可以得到一个定理:对于一个无根树,如果它有2k2k2k个叶子节点,我们只用kkk条路径就足以将其覆盖。所以我们就可以把问题变为:在无根树中找2y2y2y个叶子...原创 2018-11-05 19:17:51 · 303 阅读 · 0 评论 -
COCI 2015/2016 Contest#3 E
Description:有一个长度为nnn的序列AAA,且Ai∈[1,K]A_i \in[1,K]Ai∈[1,K]。现在有m个操作,有2种操作:1 xxx vvv表示将位置AxA_xAx改为vvv;2 输出最短的区间长度,满足该区间包含[1,K][1,K][1,K]的数。n,m≤50000,K≤30n,m\le 50000,K\le 30n,m≤50000,K≤30Solution...原创 2018-11-05 19:18:48 · 490 阅读 · 1 评论 -
IOI 2013 Deaming
Description:有nnn个点mmm条边的图,现在加n−1−mn-1-mn−1−m条长度为LenLenLen的边使之变为一棵树,求树的直径的最小值。n≤105n\le10^5n≤105Solution:比较裸的题了…初始,我们预处理出每个树的直径,求出直径上最佳的中点midmidmid(d=min{max{dis[mid],dis[R]−dis[mid]}}d=min\{max\...原创 2018-11-08 09:01:18 · 365 阅读 · 0 评论 -
DP~斜率优化
简介:在dpdpdp的转移方程中, 对不必要的状态量进行抛弃,对不优的状态量进行搁置,使得在常数时间内找到最优解成为可能。斜率优化依靠的是数形结合的思想,通过将每个阶段和状态的答案反映在坐标系上寻找解答的单调性,来在一个单调的答案(下标)队列中O(1)得到最优解。斜率优化dpdpdp其实是单调队列的推广,单调队列、旋转卡壳、斜率优化都利用了单调性降低时间复杂度。分析:形如...原创 2018-07-24 16:28:09 · 295 阅读 · 0 评论 -
矩阵乘法
Matrix简介: 一种非常重要神奇算法;满足于AAA为m∗pm∗pm*p的矩阵与BBB为p∗np∗np*n的矩阵才有意义。struct mar{ LL a[M][M]; mar(){ mcl(a,0); } void Rd(){ SREP(i,0,M) SREP(j,0,M)scanf("%lld",&a[i...原创 2018-07-05 21:29:54 · 245 阅读 · 0 评论 -
九大常用排序
稳定性: 判断排完序后个个元素的相对位置是否改变的一种定义。(然而至今没有真正用到过…)1.计数排序— 稳定 O(n) 2. 选择排序—不稳定 O(n^2) 3. 冒泡排序—稳定 O(n^2) 4. 快速排序—不稳定 O(nlogn) 5. 基数排序—稳定 O(n*m) (m位元素最多的位数) 6. 归并排序—稳定 O(nlogn) 7.原创 2017-10-06 19:50:58 · 418 阅读 · 0 评论 -
最小生成树
前言最小生成树的使用范围应该不大,但还是常用的。Primcode : struct Prim{ bool used[M]; int mincost[M]; int cost[M][M]; void solve(){//O(n log m) mcl(mincost,63); mcl(u原创 2017-11-07 22:31:35 · 262 阅读 · 0 评论 -
最短路大全
前言最短路是算法中比较常用的,它的思想也贯穿着整个竞赛的。 这里蒟蒻我就总结一下。Floydcode: struct Floyd{//O(n^3) int dis[M][M]; void solve(){ //这里dis在读入前初始为INF,一边读一边存边 REP(k,1,n)原创 2017-11-07 21:41:09 · 391 阅读 · 0 评论 -
高精度(从简版)
前言高精度想必大家再熟悉不过了,这里我就不再赘述它的原理(模拟),但大部分同学的高精度用得都太零散了,蒟蒻我就将常用的运算符号用struct封装一下,请大佬们笑纳。code:struct Big{ #define N 1005 #define P 10000//这里是压万位,当然可以压更多(注意在Rd和Pr中修改一下)... int num[N],len; Big()原创 2017-11-07 20:56:33 · 297 阅读 · 0 评论 -
并查集与带权并查集
并查集1.找点的祖先 fa[i]=i 并查集的快主要在于路径压缩。 (1) 递归写法int Find(int x){return x==fa[x]?x:fa[x]=Find(fa[x]);}(2) 非递归写法 int Find(int x){ int r=x; while(r!=fa[r])r=fa[r]; int y=x; while(y!=r){原创 2018-02-05 14:15:50 · 235 阅读 · 0 评论 -
SRM548 Div1 Medium
Kingdom And Dice题意:有aaa,bbb数组,其中aiaiai可能为0。你需要将ai中的0修改,使其满足: 1.aiaiai ∈∈\in [0,x][0,x][0,x] 2.所有的aiaiai和bibibi出现的次数不超过1 3.在此基础上,设 ppp为“随机两个 [1,n][1,n][1,n] 之间的整数 iii,jjj”后,“ai>bjai>bjai...原创 2018-04-22 10:36:27 · 282 阅读 · 0 评论 -
SRM549 Div1 Medium
Magical Hats题意:给出一个n×mn×mn×m 的地图,'.'′.′′. ′表示空地,'H'′H′′H ′表示帽子; 一开始玩家BBB将kkk个硬币放在帽子下面,每个帽子最多放一个硬币,每个硬币有一个价值VVV; 玩家BBB始终需要满足: 1.每一行的硬币数量加上帽子数量的和为偶数 2.每一列的硬币数量加上帽子数量的和为偶数玩家AAA有numGuessesnumG...原创 2018-04-22 14:13:02 · 302 阅读 · 0 评论 -
SRM550 Div1 Medium
Checker Expansion题意:AAA , BBB 二人在一个二维坐标系中放置检测器。 第一次操作AAA在(0,0)(0,0)(0,0)放上一个检验器。 之后每次操作中,对于空方格(x,y)(x,y)(x,y),放置需要满足下列某一条件: 1.(x−2,y)(x−2,y)(x−2,y)上有一个对方的检验器,且(x−1,y−1)(x−1,y−1)(x−1,y−1)上没有检验器 ...原创 2018-04-22 14:29:44 · 419 阅读 · 0 评论 -
SRM551 Div1 Medium
Colorful Wolves题意:有一只狼可以把自己的颜色在nnn种颜色之间切换,每次切换需要花费一天的时间,颜色编号为0∼n−10∼n−10∼n−1,给定n×nn×nn×n的由'Y'′Y′′Y′和'N'′N′′N′组成的字符矩阵colormapcolormapcolormap,colormap[i][j]='Y'colormap[i][j]=′Y′colormap[i][j]=′Y...原创 2018-04-22 14:54:54 · 468 阅读 · 0 评论 -
SRM552 Div1 Medium
Fox And Flower Shop Div One题意:给定一块N×MN×MN×M的田地,每格田地上只可能是花LLL、PPP,空地(.)这三种可能。 找出两块无交集(不同时覆盖同一块土地)的矩形区域,满足这两块区域内|L的数量−P的数量|≤K|L的数量−P的数量|≤K|L的数量-P的数量|\le K,且使得区域内花的数量之和最大。2≤N,M≤30,0≤K≤9002≤N,M≤30,...原创 2018-04-22 18:43:34 · 302 阅读 · 0 评论 -
COCI 2013/2014 Contest#2 E
Description:有nnn个点,KKK种颜色,现在有nnn个条件,形如第iii个点不能与第fif_ifi个点同色。求染色方案数。对1e9+7取模n,K≤106n,K\le10^6n,K≤106Solution:比较常规的题目。在nnn个条件下,图中只包含树和基环树组合成的森林。分类讨论。对于单纯的树,显然除了根有KKK种颜色选择,接下来的儿子都被它的父亲影响,其它点都是K−...原创 2018-11-08 09:06:05 · 433 阅读 · 0 评论