- 博客(34)
- 收藏
- 关注
转载 链表加bfs求补图联通块
https://oj.neu.edu.cn/problem/1387 给一个点数N <= 100000, 边 <= 1000000的无向图,求补图的联通块数,以及每个块包含的点数 由于点数太大,补图会是稠密图,甚至建立补图都要O(n^2),只能挖掘一下联通块,bfs,补图的性质,从原图入手求补图的联通块: 在原图中不直接相邻的点,在补图中一定属于同一个联通块 每...
2018-06-21 23:54:00
258
转载 dc的博客翻修计划启动
紫书大部分学习完毕,等待一轮补完计划; 白书正在攻略中,进度百分之30; 博客翻修计划启动,我会在本学期内逐渐写系统性的学习笔记,我学习时遇到的困难的地方会有说明; 每个部分一定会放上经过验证的实现; 绝得很赞的题目会放到题目区,而不是与理论部分混到一起; 课程满满当当,破实验天天上,时间被掏空 转载于:https://www.cnblogs.com/DearDongc...
2018-03-20 22:35:00
172
转载 最优矩阵链乘
poj1651 按区间长度递增的顺序递推... #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 105, inf = 0x3f3f3f3f; int a[maxn], dp[maxn][maxn...
2018-02-03 16:57:00
154
转载 2sat
之前做的两发 https://vjudge.net/problem/UVALive-3211 #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; const int maxn = 2007...
2017-11-20 22:10:00
145
转载 最大团问题
https://vjudge.net/problem/UVA-11324 把每个强连通分量缩成一个点,构造新图 在新图上搞个记忆化搜索 施工完毕 #include<cstdio> #include<cstring> #include<algorithm> #include<stack> #include<vecto...
2017-11-02 16:23:00
173
转载 Raiden Charge
2017年10月22 周日 这是个元气满满 值得纪念的一天(不好意思走错片场了) 虽然有各种乱遭的客观元素 但我们队确确实实地打铁了 那些我们轻视的 野鸡(误)大学 都在我们前面 都说知耻而后勇 虽然也不是很羞耻 不过确实需要一些勇气吧... 比赛在哈理工举行。 哈理工的校园很有生气。在东大人们匆匆地从教室走向食堂,匆匆地从寝室走向图书馆 感觉很是沉闷 在哈理工感觉...
2017-10-24 19:34:00
137
转载 hash表
https://oj.neu.edu.cn/problem/60 学习哈希姿势 #include<cstdio> #include<cstring> using namespace std; const int maxn = 120007, HASH = 119993; int head[HASH], nxt[maxn], INDEX; ...
2017-10-16 21:44:00
129
转载 芽衣:染上你的颜色
染色初步... 给图上的顶点指定颜色,使图上任何临接的顶点都被染成不同的颜色 我们想要知道的是最少使用几种颜色以及具体方案 《组合数学》上面有个贪心的染色法... 设G是图,它的顶点按某一顺序记为x1,x2, ..., xn。 (1)对顶点x1指定颜色1 (2)对每个i=2,3,...,n,令p是不与xi邻接的顶点的颜色重复的, (序号)最小的颜色,对xi指定颜色p ...
2017-10-07 20:53:00
391
转载 有上下界的网络流
有了上下界问题就分成三种: 最小流 最大流 可行流 http://blog.youkuaiyun.com/water_glass/article/details/6823741 这个讲的非常好...mark一下 不过求最小流的方法少了一个细节,要注意把t到s的inf边去掉 转载于:https://www.cnblogs.com/DearDongchen/p/7630305.ht...
2017-10-06 00:05:00
110
转载 准备工作...
upper_bound(S, S+n, num) 非下降序列S,返回第一个大于num的值的指针 1 2 2 2 3 lower_bound,第一个大于等于num的值的指针 1 2 2 2 3 string A,BA.find(B) 返回B出现在A中位置 没有就返回-1 A.c_str() string转成c式字符数组 A.substr(0, 2) 临时一个string存A的前两个...
2017-10-05 17:35:00
85
转载 poj 3422 最小费用流
如果不是从费用流区做这个题几乎不会想到用费用流 点有权值很容易想到拆点 问题是求最大sum ... 把权值取负 这样最小费用流的相反数就是最大sum 源点S汇点T k为移动次数 矩阵中的点拆成入点出点 入点到出点连: 一个1容量,-1*点权费用; 一个k容量,0费用 两条边。 这样能保证只在第一次经过点时获得点的权值,并且可以多次经过一个点 矩阵中的点:出点连向下面和右面的...
2017-10-03 22:03:00
283
转载 费用流
边们增加了费用 求费用最少的最大流 在残余网络中,用spfa跑费用的最短路,然后沿着这条花费最少的增广路进行增广 (表示怀疑这样做的时间复杂度会比较高 因为他甚至都没有沿着分层图上最短路去增广...不过貌似没有别的办法...) 看起来很容易出现负圈并且死循环的样子 负圈的问题感觉大佬解释得比较清楚: 在费用最短路增广的过程中产生的剩余网络不可能存在负圈,原因是最短增广路...
2017-10-03 19:52:00
173
转载 最优比率环
POJ 3621 - Sightseeing Cows 找到一个圈,要求这个圈的点权和/边权和在所有的圈中最大,输出这个比率 设最大比率为ans ,∑V/∑E为一般的圈的比率k 最大的圈的k,即ans,>=所有的圈的k 即ans>=∑V/∑E 变形:∑(ans*E-V) > 0 图中边权改为ans*E-V (实际上不需要改边权,在使用时调整一下就行)(...
2017-10-03 17:12:00
182
转载 混合图欧拉回路
http://acm.pku.edu.cn/JudgeOnline/problem?id=1273 给一组边 有的是有向边有的是无向边 问是否存在欧拉回路 我们知道如果每个点入度等于出度 就存在欧拉回路 这里有无向边 可以任意指定方向, 有向边已经没法改了 只统计度数 不加边 那我们不妨指定方向为u->v 然后尝试更改这些边的方向来使每个点入度等于出度 使边u->v...
2017-09-29 23:36:00
129
转载 最大流sap
带当前弧优化 gap优化的sap 甚至省去了开始的bfs分层 虽然花了一些时间了解原理 但是感觉不亏 现在能完全独立靠原理写出具体实现了 #include<cstdio> #include<cstring> using namespace std; const int maxn = 1007, maxm = 10007, inf = 0x3f3f3...
2017-09-25 23:35:00
232
转载 网络流 ek
hdu3549求最大流果题 ek算法 先bfs出一条流 然后通过不断地添加增广路 得到最大流(证明在算法书上都有) 增加了一个流 就加反向边 允许程序通过走方向边的方式进行“回滚” i^1 = i+1(i为奇数), i^1 = i-1(i为偶数)这样偶数位置放正边 奇数位置放反边 就可以快速找到边的逆边 pre记录路径 具体是pre存到达当前点的边的序号 pre还顺便可以记录...
2017-09-19 00:32:00
134
转载 变形最短路
http://poj.org/problem?id=3635 有没有感觉神似 ACMER的出行计划 我们知道dijkstra是贪心策略的dp嘛,贪心的是距离 然而有时除了距离还有别的限制,在这里是油。这时候花费最小不一定是最优,还要考虑剩余的油 dp(i,j)表示到i点时剩余j油时最少的花费 在一个点可以选择向下走(油够的情况)或者加1份油(多次加一份油就相当于加任意份油...
2017-09-15 12:10:00
126
转载 tarjan算法
tarjan用来求有向图上强连通分量 强连通分量就是图的一个子图,这个子图上任意两点都可以相互到达 tarjan是基于dfs的算法,从一个点开始探索,dfn数组存每点探索的时间戳,low数组存每点下面能找到的最小的时间戳 显然当一个点dfn==low时 这个点是一个强连通分量的根 虽然是dfs不过没有回溯,每个点每个边只访问一次 复杂度O(n+m) https://...
2017-09-13 14:31:00
156
转载 经过N条边的最短路
http://acm.pku.edu.cn/JudgeOnline/problem?id=3613 求经过N条边的最短路(2 ≤N≤ 1,000,000) 倍增floyd,主体是矩阵乘法。考虑一个x边的路径矩阵和y边的路径矩阵,两个矩阵用类似floyd的方法结合起来,就得到x+y边的路径矩阵,现在想要得到N边路径矩阵 然后就是“快速幂”的思想啦...把N拆成2的幂,只需...
2017-09-08 23:34:00
276
转载 第k短路
http://acm.pku.edu.cn/JudgeOnline/problem?id=2449 有向图上求两点st, ed间的第k短的路径 emmm...... 朴素的想法就是priority_queue,从原点出发向外探索,当取出终点k次时就得到第k短路 类似“bfs”的思想,缺陷是越往后状态数越多 改进一下,这里有个A*算法,比果体的搜索要好 在A*里面我们通过优先...
2017-09-08 00:29:00
120
转载 次短路
POJ 3463 - Sightseeing http://acm.pku.edu.cn/JudgeOnline/problem?id=3463 求最短路和比最短路多一的路的个数 主体还是dijkstra。其实dijkstra有种动态规划的味道,仔细理解一下然后动态规划出次短路的长以及个数 开数组d[n][2],cnt[n][2]。[0]表示最短路, [1]表示次短路 计...
2017-09-05 23:52:00
124
转载 逆元的几种求法
1.扩展gcd ax≡1(mod m) , ax+my=1, 调用一次扩展gcd就可以求出x。 2.费马小定理 如果gcd(a,p)= 1, 那么a^(p-1)≡ 1(mod p) 也就是a^(p-2)*a≡ 1(mod)p, a^(p-2)就是a的逆元,调用快速幂算出a^(p-2)即可 3.欧拉定理 f(x):[1-x-1]内与x互素的数的个数, a^f(p)≡ 1(...
2017-08-22 18:48:00
728
转载 扩展欧几里得学习笔记
欧几里得算法功能是求两个正整数a和b的最大公因数。函数名一般设为gcd,利用的性质是gcd(a,b) = gcd(a%b, b)。 简单证明:不妨设a = kb+r, d为a,b公因数, d|a, d|b。r = a-kb,所以d|r。而r = a%b,d|a%b, d|b, 所以d = gcd(a%b,b) = gcd(a, b) 这样不断递归下去,a%b=0时,下次调用变成gc...
2017-08-22 17:15:00
111
转载 求逆序数数目(树状数组+离散化)
404在玩忍者印记(Mark of the Ninja)操纵忍者时遇到这样一个场景,两栋大楼之间有许多绳索,从侧面看,就像这个样子: 我们的忍者非常有好奇心,他可以观察到每个绳索的端点在两栋楼的高度,想知道这些绳索有多少个交点(图中黑色的点)。他观察到不会建筑上不会有一点上有两个绳索,并且没有三条绳索共点。 输入描述 第一行:整数T,代表有T组数据。 (1 <=...
2017-08-13 23:14:00
112
转载 隐式图的遍历
好久不看都快忘了... 一些奇怪的问题可以归为隐式图的遍历 NEUOJ544 Problem Description there is an old saying,"You can not do anything without water"or"Water is the source of life". Besides, human beings are made o...
2017-07-19 00:11:00
200
转载 随机数生成
遇到了这么个题 1949, 2012, 1946, 1874, 2046, 1994, 1839, 1824, 1999, 1024Choose one number from the ten numbers mentioned above. Only one is correct. 正好复习一下生成(伪)随机数的rand和srand... time(0)获得从某个值得纪念的时刻...
2017-07-17 22:00:00
138
转载 推倒重来
赞颂我王的新生 本博客将包含: 所开新坑 有趣的题目 日常吹逼 确信理解的知识 删去: 理解不能的知识 过于直球的知识 意味不明 棒读 转载于:https://www.cnblogs.com/DearDongchen/p/7196654.html...
2017-07-17 17:39:00
133
转载 动态规划初步
终于开了动态规划的坑,经过一番挣扎算是会了最基本的东西。详细的讲解到处都有,这里想说的是我的一点理解... 有这样一类问题:问题有多步决策;后面的决策不影响前面的决策。比如01背包: 有四个物品:(重量,价值)为(2,4),(3,5),(4,8),(1,3),在总重不超过4的情况下怎么拿价值最大。 为什么不能贪心? 我先想到的解法是按性价比大小排序,先拿性价比高的直到拿不动...
2017-06-10 19:41:00
120
转载 子集生成
紫书188子集生成,当时看不懂给跳过去了== 生成从0到n-1, n个数的子集 增量构造法,一次选出一个元素放到集合中,感觉是深度优先遍历解答树 void print_subset(int n, int* A, int cur) { for(int i = 0; i < cur; i++) printf("%d ", A[i]); ...
2017-06-04 14:49:00
114
转载 东大oj1155 等凹函数
Problem Description 定义一种数字称为等凹数字,即从高位到低位,每一位的数字先递减再递增,且该数是一个回文数,即从左读到右与从右读到左是一样的,仅形成一个等凹峰,如543212345,5544334455是合法的等凹数字,543212346,123321不是等凹数字。现在问你[L,R]中有多少等凹数字呢?L,R<=1e18(小于等于2位的无凹峰) ...
2017-06-02 15:38:00
390
转载 关于0x3f3f3f3f
发现有人把无穷大设成0x3f3f3f3f,好像还真不是随便设的。 0x3f3f3f3f比10^9大一点,比一般数据范围大; 乘2之后比2147483467小,满足正无穷加正无穷还是正无穷; 每个字节都是0x3f,可以memset整个dis数组,免得写循环。 服气。 转载于:https://www.cnblogs.com/DearDongchen/p/69170...
2017-05-28 23:57:00
193
转载 求最小生成树的kruskal算法
连通无向图有最小生成树,边权从小到大排序,每次尝试加入权最小的边,如果不成圈,就把这边加进去,所有边扫一遍就求出了最小生成树。 判断连通分支用Union-Set(并查集),就是把连通的点看成一个集合,只关心哪些点在一个集合里,而不关心相互的连接方式。x父节点用fa【x】保存;如果x没有父节点,fa【x】 = x。查找一条长链的时候每次用递归把链上的点的父节点全设置成根节点,方便下次查找...
2017-05-27 20:48:00
207
转载 求最短路的三种方法:dijkstra,spfa,floyd
dijkstra是一种单源最短路算法。在没有负权值的图上,vi..vj..vk是vi到vk最短路的话,一定要走vi到vj的最短路。所以每次取出到起点距离最小的点,从该点出发更新邻接的点的距离,如果更新成功则把新点加入priority_queue。储存图使用的是邻接表。代码如下: #include <bits/stdc++.h>//有向图 using namespace...
2017-05-26 19:42:00
180
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅