![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
文章平均质量分 56
nielaishan
这个作者很懒,什么都没留下…
展开
-
ST算法
文字转载作用:ST算法是用来求解给定区间RMQ的最值,本文以最小值为例举例:给出一数组A[0~5] = {5,4,6,10,1,12},则区间[2,5]之间的最值为1。方法:ST算法分成两部分:离线预处理 (nlogn)和 在线查询(O(1))。虽然还可以使用线段树、树状链表等求解区间最值,但是ST算法要比它们更快,而且适用于在线查询。(1)离线预处理:运用DP思想,用于求解区间最值,并保存到一个二原创 2017-06-09 20:32:09 · 483 阅读 · 0 评论 -
后缀数组 倍增算法
/* 后缀数组 倍增法 sa[i]表示从字符串sa[i]开始的后缀数组,排列第i S[sa[i]]<S[sa[i+1]] ran[i]表示从i下标开始的后缀数组,从小到大排列的名次*/#include<iostream>#include<cstdio>#include<algorithm>#include<vector>#include<cstring>#include<cma原创 2017-03-16 17:23:00 · 408 阅读 · 0 评论 -
hdu 3001 状压DP+三进制
hdu 3001 Travelling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7007 Accepted Submission(s): 2266Problem Description After coding so转载 2017-02-15 18:06:00 · 324 阅读 · 0 评论 -
poj 2686 状态压缩
题目链接解析状态:现在在城市u,此时还剩下的车票集合为S dp[S][u]dp[S][u]就是这个状态。 从这个状态出发,使用一张车票ii在SS中移动到相邻城市v,就相当于转移到“在城市v,此时还剩下的车票的集合为S\{i}S\{i}”这个状态。代码#include <stdio.h>#include <string.h>#include <iostream>#include <algor原创 2016-08-13 00:12:37 · 365 阅读 · 0 评论 -
hdu 3038 带权并查集
题目链接题意玩游戏,每次说a到b区间的和为S,但是可能与以前说的相悖。计算错了多少次。解析a到b区间的和,等价于b的权值比a-1的权值大S。这样就转化为普通带权并查集。代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#include <vector>#i原创 2016-08-06 15:57:53 · 363 阅读 · 0 评论 -
矩阵快速幂
#include<cstdio>#include<iostream>#include<cmath>#include<vector>#include<cstring>#include<set>#include<algorithm>#include<map>using namespace std;typedef long long LL;typedef vector<int> ve原创 2017-04-07 11:36:11 · 287 阅读 · 0 评论 -
斯特林数 HDU 3625
/* 斯特林数第一类 n个元素的集合分成k个环排列的方法 s[n][0] = 0; s[1][1] = 1; s[n][k] = s[n-1][k-1]+n*s[n-1][k]; 当放入第n个元素,n可以为单独的循环排列,当n-1个元素已经占据了k个环排列,n可以插入n-1个元素的任意地方 该题要去除1号门的单独排列,所以。。。*/#include<cstdio>#include<原创 2017-03-14 14:41:06 · 447 阅读 · 0 评论 -
hdu 3006 状压
The Number of setTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1417 Accepted Submission(s): 883Problem Description Given you n sets.All p原创 2017-02-23 20:09:34 · 424 阅读 · 0 评论 -
hdu 5894 组合Lucas
题目链接题解:n个座位不同,m个人去坐(人是一样的),每个人之间至少相隔k个座位问方案数思路: 定好m个人 相邻人之间k个座位 剩下就剩n-(k+1)*m个座位 剩下座位去插m个不同的盒子==就等价n个相同的球放m个不同的盒子 然后组合数出来了 乘n的话是枚举座位,除m是去掉枚举第一个座位的时候,剩下人相邻的座位相对不变的情况代码#include<iostream> #include原创 2016-09-20 09:32:07 · 327 阅读 · 0 评论 -
hdu 5776 鸽巢定理的应用
相关知识链接 http://blog.csdn.net/pi9nc/article/details/8506306题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5776解析预处理前缀和,一旦有两个数模m的值相同,说明中间一部分连续子列可以组成m的倍数。代码#include <iostream>#include <cstdio>#incl原创 2016-07-31 15:02:23 · 350 阅读 · 0 评论 -
poj 3155 最大密度子图 最小割+01分数规划
解析详见:最小割模型在信息学中的应用代码:#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <algorithm>#include <cmath>using namespace std;const int maxn = 1000+10;const double inf=0x3原创 2016-11-09 14:31:25 · 403 阅读 · 0 评论 -
poj 2728 最优比例生成树
题目链接相关知识解法之一 0-1分数规划 设x[i]等于1或0, 表示边e[i]是否属于生成树. 则我们所求的比率r=∑(benifit[i]∗x[i])/∑(cost[i]∗x[i]),0≤i<m r = \sum(benifit[i] * x[i]) / ∑(cost[i] * x[i]), 0≤i<m . 为了使 r 最大, 设计一个子问题—> 让 z=∑(benifit[i]∗x[i]转载 2016-08-13 11:56:50 · 373 阅读 · 0 评论 -
hdu 4126 prim+树形dp
链接 http://acm.hdu.edu.cn/showproblem.php?pid=4126题意一个N个点的无向图,先生成一棵最小生成树,然后给你Q次询问,每次询问都是x,y,z的形式, 表示的意思是在原图中将x,y之间的边增大(一定是变大的)到z时,此时最小生成数的值是多少。最后求Q次询问最小生成树的平均值。 N<=3000 , Q<=10000解析先用prim算法,求得最小生成树的权原创 2016-08-05 15:40:55 · 252 阅读 · 0 评论 -
hdu 3371 并查集+最小生成树
链接 http://acm.hdu.edu.cn/showproblem.php?pid=3371解析不同连通块的最小生成树,用并查集处理一个连通块,进行缩点。之后用最小生成树的prim算法即可。代码#include <iostream>#include <cstdio>#include <cstring>#include<queue>#include <algorithm>#inc原创 2016-07-29 11:23:34 · 476 阅读 · 0 评论 -
HDU 5855 二分搜索+最大流
题目链接题意一个商店的货源,需要k个工厂同时供货,若满足则收到pro[i]的利益,但是需要减去成本pay,注意工厂建造好,只需一个商店支出成本。建造工厂时,每个工厂都需要ti的时间。最后求最小时间内收到大于等于L的利益。解析根据题意,可以建图超级源点到工厂,工厂到商店,商店到超级汇点。在最小时间内,求出最小割即可,超级源点到工厂时间满足便建容量为pay[i]的边,不满足容量无穷大即可。工厂和商店根据原创 2016-08-17 15:08:21 · 354 阅读 · 0 评论 -
hdu 5772 最大权闭合图
链接 http://acm.hdu.edu.cn/showproblem.php?pid=5772相关知识 http://www.blogbus.com/oibltx-logs/125657936.html http://wenku.baidu.com/link?url=3tP4ZRiEQIEB63pXFj936pH3Gxk6NMnwks3d4do7WtbRmKjPcEC30YA9V原创 2016-07-30 12:27:58 · 481 阅读 · 0 评论 -
2016 Multi-university-training-contests-2 1006 点双连通分量
链接http://acm.hdu.edu.cn/showproblem.php?pid=5739题意给一个有n个节点和m条边的无向图,每个点有自己的点权wi,Gi的定义是删除i点形成的子图。 Gi的权值计算方法为 - 若为连通的图,是每个点的点权的乘积。 - 不连通,每个连通图或者孤立点的和。 最后求S=∑ni=1Gi∗iS = \sum_{i=1}^{n} Gi*i解析首先我想说说原创 2016-07-23 11:34:39 · 346 阅读 · 0 评论 -
2016multi-university1005 KM算法
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5727题目大意有一串项链,形成的是环,每个宝石都有自己的属性,例如阴阳。但是宝石连接的时候只能阴阳交错。但是在连接的时候,有的阳性的宝石和阴性的宝石,会让阳性的宝石失去价值,最后求最少有多少宝石在排列的时候,失去价值。解析:因为在放置的时候,阴性影响阳性,所以先放置阴性,第一个不需要变化,全排列后面的阴性宝原创 2016-07-20 17:23:11 · 322 阅读 · 0 评论 -
2016 Multi-University Training Contest 1
Abandoned countryTime Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 378 Accepted Submission(s): 104Problem DescriptionAn abandoned c原创 2016-07-19 19:51:01 · 239 阅读 · 0 评论 -
最短路 多条路径
#include<cstdio>#include<iostream>#include<queue>#include<algorithm>#include<cmath>#include<cstring>#include<vector>#include<fstream>using namespace std;const int maxn = 900+10;const int inf =原创 2017-05-08 08:45:11 · 654 阅读 · 0 评论 -
最小生成树计数 lydsy 1016
证明:(摘录) 定理一: 如果 A,BA, B 同为 GG 的最小生成树,且 AA 的边权从小到大为 w(a1),w(a2),w(a3),⋯w(an)w(a_1), w(a_2), w(a_3), \cdots w(a_n),BB 的边权从小到大为 w(b1),w(b2),w(b3),⋯w(bn)w(b_1), w(b_2), w(b_3), \cdots w(b_n),则有 w(ai)=w(b原创 2016-10-14 15:01:25 · 317 阅读 · 0 评论 -
hdu 3018 欧拉回路 一笔画问题
题目链接解析给你一张图,你能最少几笔画完整张图? 不同的连通块,就有一个,若该连通块是欧拉回路,就一笔画完;则画度数为奇数的点的一半的笔画,代码#include<iostream> #include<cstdio> #include<ctime> #include<cstring> #include<cstdlib> #include<vector> #include <al原创 2016-09-21 21:08:42 · 579 阅读 · 0 评论 -
最大团概念+算法实现+例题
相关知识http://www.cnblogs.com/zhj5chengfeng/archive/2013/07/29/3224092.html原创 2016-09-20 16:11:41 · 789 阅读 · 0 评论 -
图的最大独立集
相关链接: http://blog.csdn.net/whosemario/article/details/8513836之后在整理。原创 2016-09-20 09:33:46 · 1566 阅读 · 0 评论 -
hdu 1531 差分约束
题目链接题意求一组不等式是否有解,这些不等式要么是Xa+X(a+1)+.......+Xb<kXa+X(a+1)+.......+Xb<k要么是Xa+X(a+1)+.......+Xb>kXa+X(a+1)+.......+Xb>k解析差分约束的不等式小于等于常数,所以要处理为小于等于的情况,之后, 根据ai<=aj+ka_i <= a_j + k 在建边<j,i><j, i>,还要考虑一个点到每一原创 2016-09-16 12:36:43 · 407 阅读 · 0 评论 -
Codeforces #386 D dfs+bitset
题目链接相关知识bitset使用 :http://blog.csdn.net/qll125596718/article/details/6901935解析本题的棘手之处在于题目中的第4个操作。在不能改变时间的情况下,状态只能随着时间的推进而转移(一维)。现在可以改变时间,那么状态的转移目的地就不唯一了,也就是说状态的转移会出现分叉。那么状态的转移的图示就从一个数轴变成了一棵树(二维)。如果我们能够构原创 2016-09-14 15:40:30 · 263 阅读 · 0 评论 -
HDU 5876 2016 ACM/ICPC Asia Regional Dalian Online BFS+set
题目链接解析完全图删去m个边,求最短路。 set维护没有访问的点。代码#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <cmath>#include <map>#include <set>#include <algorithm>using原创 2016-09-12 17:57:24 · 304 阅读 · 0 评论 -
hdu 2586 最近公共祖先
题目链接题意n个村子,被n-1个条边连接,每次询问u和v的最近距离。解析求u和v的到他们的最近公共祖先的距离即可。基本算法 在线算法 倍增法 每次询问O(logN) d[i] 表示 i节点的深度, p[j,i] 表示 i 的 2^j 倍祖先 那么就有一个递推式子 p[j,i]=p[p[j,i-1],i-1] 这样子一个O(NlogN)的预处理求出每个节点的 2^k 的祖先 然后对于每原创 2016-08-08 10:41:38 · 289 阅读 · 0 评论 -
hdu 2121 无固定根的最小树形图
题目链接解析本题为不是固定根的最小树形图,我们可以虚拟出一根来,然后在把这个根跟每个点相连,相连的点可以设为无穷大,或者设为所有边和大一点,比如为r,然后就可以利用最小树形图进行计算了,计算出的结果减去r,如果比r还大就可以认为通过这个虚拟节点我们连过原图中两个点,即原图是不连通的,我们就可以认为不存在最小树形图。关于输出最小根也挺简单,在找最小入弧时,如果这条弧的起点是虚拟根,那么这条弧的终点就是原创 2016-08-07 20:11:59 · 428 阅读 · 5 评论 -
hdu 4009 最小树形图(O(m))
题目链接基本算法 最小树形图基于贪心和缩点的思想。 1. 求最短弧集合E0E_0 从所有以viv_i为终点的弧中取一条最短的,若对于viv_i,没有入边,则不存在最小树形图,算法结束;如果能取,则得到有n个点和n-1条边组成的图GG的一个子图G′G',该子图的权值一定是的最小的,但是不一定是一棵树。 2. 检查E0E_0 若E0E_0没有有向环且不含收缩点,则计算结原创 2016-08-07 19:38:37 · 433 阅读 · 5 评论 -
hdu 3047 带权并查集
题目链接相关知识 http://blog.csdn.net/shuangde800/article/details/7983965题意有n个人坐在zjnu体育馆里面,然后给出m个他们之间的距离, A B X, 代表B的座位比A多X. 然后求出这m个关系之间有多少个错误,所谓错误就是当前这个关系与之前的有冲突。解析用带权并查集做, 对于并查集中的每一棵数, 树根的距离为0,然后以树根作为参照,原创 2016-08-05 20:33:21 · 527 阅读 · 0 评论 -
hdu 3861 强量通分量+最小路径覆盖
链接 http://acm.hdu.edu.cn/showproblem.php?pid=3861相关知识有向图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联;(如果把这些路径中的每条路径从它的起始点走到它的终点,那么恰好可以经过图中的每个顶点一次且仅一次);如果不考虑图中存在回路,那么每条路径就是一个弱连通子集.对于一个路径覆盖,有如下原创 2016-08-01 19:08:59 · 311 阅读 · 0 评论 -
poj 3180 有向图的强连通分量 模板
链接 http://poj.org/problem?id=3180解析找有多少个强连通分量中点的个数大于1,将强连通分量染色,染色为第几个强连通分量。然后计算同一个强连通分量的点的个数。代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#include原创 2016-08-01 16:02:10 · 343 阅读 · 0 评论 -
hdu 4081 次小生成树
链接 http://acm.hdu.edu.cn/showproblem.php?pid=4081题意找到一个生成树,并且保证A/B最大,所以B要尽量小, A尽量大。解析B尽量小,就要想到最小生成树,但是最小生成树里面,可以删除一个边,这样就转化为次小生成树中找A/B最大的情况。或者prim+并查集。代码1运行时间:46ms#include<iostream>#include<cstdio>原创 2016-08-01 12:07:48 · 267 阅读 · 0 评论 -
hdu 3926 并查集
链接 http://acm.hdu.edu.cn/showproblem.php?pid=3926题意有n个小孩,他们之间手拉手,形成一个图,图的每个点都是0、1、2个度。在给出一个图,判断是否两个图同构。解析因为图的每个节点的度都是0、1、2。因此可以拿并查集做,但是你要记录每个块的是否有环,注意在一个块为两个节点的时候,出现不了环。最后判断环的个数和每个块的节点个数是否相同即可。代码#in原创 2016-07-31 13:05:40 · 265 阅读 · 0 评论 -
hdu 1811 并查集+拓扑排序
链接 http://acm.hdu.edu.cn/showproblem.php?pid=1811原创 2016-07-31 10:19:02 · 202 阅读 · 0 评论 -
k短路 SPFA+A*算法 poj 2449
Remmarguts’ Date Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 26115 Accepted: 7097Description “Good man never makes girls wait or breaks an appointment!” said the mandarin du原创 2016-07-27 11:52:43 · 425 阅读 · 0 评论 -
poj 2112 最大流+二分法
链接 http://poj.org/problem?id=2112原创 2016-07-27 10:56:24 · 258 阅读 · 0 评论 -
树的同构 poj 1635
链接 http://poj.org/problem?id=1635题意判断两个有根树是否同构。解析判断两个有根树是否同构,本质上是hash应用,每个点的权值是这个子树的权值和。树上某一组合不同都会导致最终结构的不同。代码#include <cstdio>#include <cstring>#include <vector>#include <algorithm>#include <io原创 2016-07-24 11:55:34 · 426 阅读 · 0 评论 -
最大流dinic
基本思路:在求图的最大流时,首先用bfs把图分层,分层时注意流量是否大于零,和该点是否已分层。每一次分层都需要重置level数组,如果分层后,终点没有被分层,说明没有增广路了,,之后用dfs进行增广路搜索,如果流量不为零, 并且该节点到下一个节点,正好为差为1,就在可以在搜索增广路,如果增广路搜索到的流量大于零,就要构建残余网络,就返回该流量,若找不到返回零。#include#incl原创 2016-07-22 09:39:00 · 255 阅读 · 0 评论