kuangbin
iuk11
守得云开见月明
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
kuangbin题单 连通图 双连通分量 Redundant Paths POJ3177
打卡 day 9**这道题的题意:**给定一个无向图,至少添加多少条边才能让任意的两点之间都有两条路可以走。(有重边)其实很好分析,首先怎么才有两条路,环一定每个点都有两条路可以走,只要保证图是强连通就行。怎么确定加几条边,缩点,看有几个叶子节点,我们加(x+1)/2条边即可。因为考虑有重边,我一开始先用set去重,然后发现set内置了一个排序,如果要放进去还要自己写一个重载的<,写完发现。。答案不对了。时间戳的顺序乱了。念念叨叨的明白了这个add()是个邻接表存边。AC代码:#inclu原创 2021-03-30 16:33:42 · 180 阅读 · 0 评论 -
kuangbin题单 连通图 双连通 缩点 桥 LCA Network POJ3694
打卡 day 8定义在无向连通图中,如果将其中一个点以及所有连接该点的边去掉,图就不再连通,那么这个点就叫做割点。在无向连通图中,如果将其中一条边去掉,图就不再连通,那么这条边叫桥。LCA 最近公共祖先定义完了开始解释题,有一个图,q次询问,每次会加一条边,问当前图中桥的数量。哇哇哇,原来桥是这个意思,就是没了这条边不行,就不连通了。缩点我上一道题已经弄明白了,说白了就是把一个环缩成一个点,因为环里面没有桥。。dfn 时间戳low 回溯时寻根node结构体 为了实现链表brige 当原创 2021-03-28 15:39:16 · 223 阅读 · 0 评论 -
kuangbin题单 连通图 强连通分量 缩点 Network of Schools POJ1236
打卡 day 8我也想每日一题呀,可是弄了两天才算有点懂。题意是:每个学校都有一个名单,列出自己学校可以通过网络发给哪些学校信息,如果A在B的列表中,B一定不在A的列表中。问题一:至少要给多少台电脑传信息,信息才能到达全部电脑。问题二:至少要添加多少条边,才能使任意一台电脑发送信息能到达所有电脑。解读一下:怎么解决第一问,首先通过深搜得到连通分量的个数,然后去找入度和出度是零的点,如果入度的点为零,说明没有电脑能发给这个点,只能给这个电脑作为信息源。怎么解决第二问,选取入度、出度个数最多的那个,在原创 2021-03-25 22:35:57 · 163 阅读 · 0 评论 -
kuangbin题单 简单DP 状压DP 记录路径 Doing Homework HDU1074
打卡 day 7之前写的这我找到了一篇解释的很清楚的博客题面就是给n个作业,每个作业有一个截至时间,然后输出超时最少的情况。(有多个最小按字典序输出第一种)状压DP我写的第一感觉就好像大枚举。其实就是二进制的每一位代表一个科目,n<=15,就可以用1<<15(其实需要的是0~14,开大一点内存)表示。状态压缩其实就是一种枚举的方式。先列出来每一个状态,然后去看当前的状态有没有父亲,例如:10010&1001110010\&1001110010&100原创 2021-03-22 17:12:53 · 137 阅读 · 0 评论 -
kuangbin题单 简单DP 背包问题 记录路径 Jury Compromise POJ1015/UVA 323
打卡 day 6昨天写小白月赛,今天又在写大创的申报书,鸽了一天。先写个题面:n个民众选m个组成陪审团,每个民众对于控方和辩方都有一个喜好值,选的这m个民众,对两方的每方喜好值之和的差的绝对值最小,如果有差一样小的,就选和最大的。其实昨天是把这题开了的,但是没想出来怎么做,看了大佬的代码也不是很懂具体的思想。今天抽时间来好好想想。第一个点就是 fix ,修正值,就是每一个人的两个喜好值差值最大是20,然后一共m个人,我们从20*m的位置作为起点,这样差值是负值就避免了数组越界,[0,200)我们定为原创 2021-03-21 19:54:08 · 224 阅读 · 0 评论 -
kuangbin题单 简单DP Phalanx HDU2859
不知道为啥,老是犯一些输入上的错误,然后调半天。打卡 day 5这道题输入的字符是连在一起的,一开始用cin,应该输入一个字符,结果输入了一行字符。害,还楞没看出来。给个题意:求对称子矩阵的的最大值,对称子矩阵是指以左下角到右上角的对角线为对称线的满足对称关系的子矩阵。其实挺好想的,我好像想dp都不觉得这是dp,一开始肯定先找到左下角或者右上角,然后开始做判断,看看第一层满不满足呀,然后再看看下一层满不满足呀…有了起始点,接下来就是想怎么去到下一层,如从1x1到2x2的矩阵,当然手推一下坐标就知道原创 2021-03-19 23:21:47 · 179 阅读 · 0 评论 -
kuangbin题单 基础DP Monkey and Banana HDU1069
打卡 day5延续昨天继续dp这道题的意思:多组输入,n种积木,每种无限个。两层积木叠起来的时候下面的长和宽都要比上面的大,问最高能叠多高。一是每种积木无限个,我们根据题意可知相同长宽的积木不能叠在一起,所以无限也最多只使用三个,摆放的面不同,长宽高会发生变换,可以直接全排列长宽高,待用。然后就是状态转移方程,我们发现数据范围非常小,n小于等于30,我一开始想到的是一定要给待用的长宽高们排序,按照先长后宽,这样在判断的时候可以有一定的顺序。推方程在最小处开始推,只有一个积木,高度是它本身,积木个数原创 2021-03-19 16:06:14 · 147 阅读 · 0 评论 -
kuangbin题单 基础DP 思维 基础二维 优化空间 降维 Max Sum Plus Plus HDU1024
打卡 day4推状态转移方程,感觉差太多了。之前在练习赛上也推过两次,全写糊了。这道题的题面是给m,n,然后给n个数,问分成m个区间累加和最大值。我对着数据推了半天,想先推出个二维的递推式,没想到也废了,一开始的思路是先找每一维所表示的意义是什么,正解是[i]表示取i个区间,[j]表示前j个数,我自己是想歪了。然后有了每一维的意义,我们可以想到应该分两种情况,一种是选第j位,一种是不选第j位。再细想能发现,选择第j位,又分两种情况,一种是第j位是新区间的开头,一种是继续该区间内累加。w[i][j原创 2021-03-18 22:34:11 · 176 阅读 · 0 评论 -
kuangbin题单 进阶搜素 深度优先搜索 哈密顿绕行世界问题 HDU2181
打卡 day4先拿一道题练练手,一会儿再开新题,拒绝水题。这题好像挺简单的,输出全路径,就是深搜搜完一条路径之后不要退,接着搜第二条,直到所有路径都搜完为止。然后就是一个被问过两遍,自己一直也没有太清楚的,就是:vis[next]=1;dfs(next,idx+1);vis[next]=0;到底什么时候需要回溯,为什么有的题不用回溯也结果正确,现在知道是测试数据弱,或者说题面说保证只有一条路径。vis数组再次标记为0代表这个点没有访问过,如果不回溯,记录全路径,不同路径之间会发生“撞车”,我原创 2021-03-18 15:02:19 · 156 阅读 · 0 评论 -
kuangbin题单 进阶搜素 反向广搜 康托展开 哈希 Eight HDU1043
打卡 day3这是一个3X3的数字华容道,我一开始也是毫无头绪,然后去看佬们的博客。首先是康托展开感觉看进去之后很简单,对应到这道题上就是把1~8进行全排列,应用康托展开能确定当前的排列名次,先看比首位小的数有几个,记作a,然后再看第二位,记作b…注意已经用过的数不计入后面位数数字的统计中(比如3412,比3小的有1,2,记a=2,比4小的有1,2,3,但之前已经出现过3,所以只考虑1,2,记b=2…)最后由公式可得X=a·7!+b·6!+c·5!+d·4!+e·3!+f·2!+g·1!+h·0!原创 2021-03-17 20:45:35 · 206 阅读 · 0 评论 -
kuangbin题单 简单搜索 深/广度优先搜索+回溯 迷宫问题 POJ3984
day1 打卡这道题数据范围好小,为了弄明白到底是如何记录路径的,这次特意没有乱搞。我们用maps[][]数组去存迷宫图(注意结尾空格),在入口处进行深搜,用队列存经过的路径。原创 2021-03-16 21:01:15 · 199 阅读 · 0 评论 -
kuangbin题单 并查集 加权并查集 Navigation Nightmare POJ 1984
一定要坚持呀!day1 打卡这道题我先根据样例算了一下结果,知道了题意是n个点相连有m条路径,和向量差不多,带方向的相加减求长度。题目还要求在索引的数字内求长度,测试数据中询问的索引数是非降的,所以才在代码中用了ff控制当前索引的位置有多少条路已连接。补充知识点:带权并查集带权并查集即不仅更新当前节点去寻找根,在找根的同时累加当前节点到父亲节点,父亲节点到爷爷节点,…到根节点的每一段距离(权重)。int f[maxn];int w[maxn];int find(int x){ //累加x寻原创 2021-03-15 16:38:10 · 144 阅读 · 0 评论 -
kuangbin题单 并查集 种类并查集 食物链 POJ1182
再次做经典题day1 打卡方法一 带权并查集刚写完上一题,很自然的就想到用带权并查集解决问题,设x与y为给定的两种动物,可以想到有两种关系:一是x与y之前已经确定过关系,二是x与y之前没有确定过关系。如果是第一种情况,我们根据权值确定之前记录的关系是否满足现在给定的关系,如果不满足假话数加一。如果是第二种情况,我们可以将x与y进行合并,确定一个为另一个的父亲节点,同时更新w[x],w[y]中的权值。我们可以想象合并后的x与y都有一个共同的根(祖先)节点,计算x与y到根节点的差值对三取模,即为x与y原创 2021-03-15 19:50:50 · 160 阅读 · 0 评论
分享