- 博客(30)
- 收藏
- 关注
原创 POJ 3254 Corn Fields (状压DP) 解题报告
传送门:http://poj.org/problem?id=3254这题算是状压DP的入门题吧。之所以用状压DP来解,是因为这个题可以利用状压DP的优势。状压DP可以利用数字表示一个状态,从而降低问题的空间和时间复杂度,而且也能方便问题的表示和解决。如果不用状压,那么表示一个状态将会有很多维度。既然是DP问题,那么就要有递推方程啦~这个题的话首先要思考怎么构造数组来进行DP。我们可以用一个...
2018-08-21 21:41:08
227
原创 POJ 3181 Dollar Dayz (高精度完全背包) 解题报告
传送门:http://poj.org/problem?id=3181此题是高精度完全背包,主要考点就是递推公式和高精度。高精度这里是个比较tricky的写法,就是用两个滚动数组保存,因为总方法数可能超过long long的范围。所以用两个数组,第一个数组保存的是方法数的前1e18个数,第二个数组保存的是方法数的后1e18个数字,那么就可以保存1e36位的方法数。为啥取1e18呢?因为long ...
2018-08-20 17:49:07
328
原创 POJ 1062 昂贵的聘礼 解题报告 (Dijkstra)
传送门:http://poj.org/problem?id=1062这题比平常的模板水题难度提高了一些,但是也不是不能做,这题特别需要慎重和全面,也是一道经典题目,坑过无数人了……真的锻炼人的耐操能力啊这些算法题。先讲一下大体思路吧。首先就是要建图,图的每一个点就是一个物品,边是交换关系,边权是优惠价格,所以这个图也是有向图,而酋长的点是终点不是起点,这题主要是要求你找起点,在哪里开始花费...
2018-08-03 04:57:09
261
原创 HDU 1546 Idiomatic Phrases Game 解题报告 (Dijkstra + map容器)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1546这题……神他妈史前亚特兰大巨坑。题意还是挺好明白的,就是成语接龙,只要把每一个成语当作一条有向边来处理,起始的四个字符当作有向边的起始点,最后四个字符当作结束点,前面输入的查找时间当作边权就行了,再利用map容器转换成数字处理,其实挺好想的,但是又几个坑点需要注意一下。第一:要注意虽然说是成...
2018-08-03 04:09:21
223
原创 POJ 3310 Caterpillar 解题报告 (树的直径)
传送门:http://poj.org/problem?id=3310这题题意结合图示比较好理解,就是判断一个图是否可以找到一条直径,使得所有的边,要不在这个直径上,要不有其中的一个端点在这一条直径上,而且这个图不能有环,而且还必须是连通图。这估计也是为啥这个题叫毛毛虫的原因吧……第一次看到这个题,说实话我想的是先判断树直径的两个端点,再深搜一下标记上这个直径上所有的点,再判断剩下的未标记的...
2018-08-03 03:38:33
465
1
原创 POJ 1094 Sorting It All Out 解题报告 (拓扑排序 BFS)
传送门:http://poj.org/problem?id=1094这题看着好吓人的样子,其实不难,主要是用了拓扑排序的一些结论。本来是想用DFS做可能更方便……判断回路更直观一点,然而技艺不精不是很会,写了一大半接不下去了……以后想明白怎么写再上吧,一题多解嘛。#include <iostream>#include <cstdio>#include <...
2018-08-01 14:33:20
170
原创 51 NOD 1459 迷宫问题 解题报告 (优先队列 dijkstra)
传送门:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1459这题题意很明显是最短路的裸题,迪杰斯特拉或者是Bellm—Ford算法都可以,虽然是模板题,但是还是要自己独立实现一下,模板可以算是算法实现的基础吧,有时候其实自己觉得模板都理解了,但是自己实现的时候就会遇到很多细小的困难。最好还是不看答案独立实现一遍。...
2018-08-01 11:24:59
275
原创 POJ 2631 Roads in the North 解题报告 (树的直径)
传送门:http://poj.org/problem?id=2631这题是求树的直径的裸题,没啥的,原理也挺简单,两次BFS就出了,需要注意的可能就是数据范围,数据读入吧,没判断重边也没啥坑好像……上一波C艹实现#include <iostream>#include <cstdio>#include <queue>#include <c...
2018-07-30 20:41:37
308
原创 拓扑排序的简单实现 (DFS && BFS && 静态邻接表)
果然还是码力不足啊……上午学长讲了一发静态邻接表的拓扑排序的BFS实现,感觉贼鸡儿简单,贼鸡儿明白,然而下午还是一条咸鱼打不出……刷了一遍算法导论看了看伪码差不多有点儿数了,话说算法导论上只有DFS实现心好累,说好的“瑞典式自助餐”呢【手动滑稽】?下面上一发拓扑排序的DFS实现,DFS实现好像很难按字典序排列,想了半天翻了无数博客也没找到,若有大神想到了如何在使用DFS的时候按字典序输出烦请评论告...
2018-07-30 19:22:53
520
原创 HDU 1576 A/B 解题报告 (求逆元)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1576这个题可以是乘法逆元的模板题,基本上只要理解了乘法逆元的求法和扩展欧几里得都能顺利写出来。然而我一开始看了很多网上题解,都是推导之后再用扩展欧几里得,这个方法还是比较好想明白什么意思的。但是我一直不明白为啥这个题很多人说用求逆元做,冥思苦想之后(对我是才接触数论的小白)终于明白了。其实我...
2018-07-23 20:35:47
217
原创 POJ 1182 食物链 解题报告 (种类并查集)
传送门:http://poj.org/problem?id=1182这题真是……我尼玛啊……弄到我吐血。其实如果搞懂了原理的话,也就是几行核心代码的事儿。某个大牛的向量思维对于解这种种类并查集特别有帮助,建议百度一下找找。我的题解和大牛们的不一样啊首先说,我每个权值代表的方向基本和网上的题解都是相反的,比如 权值1 代表 x 吃 他的父亲节点,权值2 代表 x 被 他的父亲节点吃。其实这样...
2018-07-22 15:13:30
259
原创 POJ 1703 Find them,Catch them 解题报告 (种类并查集 并查集偏移量)
传送门 : http://poj.org/problem?id=1703这题和POJ 2492难度和考点都相同,看完本题的题解后不妨去做一下这个题。这两个题都是考的种类并查集,种类并查集其实就是带权的一种并查集,其权值就是偏移量,因为在同一集合中的所有元素必定相互之间都有关系,这个关系我们就可以用偏移量来表示。这个题很简单,就在于两个同一集合中的元素只有两种关系,在或不在同一个帮派里。我们...
2018-07-22 10:34:00
181
原创 HDU 3172 Virtual Friends 解题报告 (并查集 + map)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3172这题就思维难度的话几乎没有……基本上只要会路径压缩和并查集基本操作就可以了(听说不用路径压缩会T)。可能最难的是用map容器吧……不是很明白的可以看一波C++ Primer Plus。上一波C艹实现#include <cstdio>#include <iostrea...
2018-07-22 09:47:57
203
原创 POJ 2236 Wireless Network 解题报告 (并查集)
传送门:http://poj.org/problem?id=2236题意是有一个几个电脑需要连接起来,给出他们在直角坐标系里的坐标,每次有两种操作,可以修复一台电脑或者检测两台电脑是否可以联通。具体实现方法主要是并查集,并查集弄这种无向图的连通性判断还是挺方便的……每次维修一台电脑之后,首先用一个re数组记下已维修电脑的编号,然后再那这个电脑和其他所有已维修的电脑循环判断,如果距离小于等于...
2018-07-22 08:55:00
224
原创 POJ 3250 解题报告 Bad Hair Day (单调栈)
传送门:http://poj.org/problem?id=3250 这题……水题啊,单调栈可解。上一波C艹实现#include <iostream>#include <cstdio>using namespace std;const int MAXN = 80010;const int INF = 0x3f3f3f3f;int sta[MAXN],...
2018-07-21 22:19:41
259
原创 HDU 1213 How Many Tables 解题报告 (并查集)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1213这题就是简单的并查集,最后统计根节点的数量就可以了,水题。有什么不懂的欢迎评论提问~~~~C艹实现一波#include <bits/stdc++.h>using namespace std;const int MAXN = 1010;int fa[MAXN];v...
2018-07-21 19:56:35
227
原创 CodeForces 566D Restructuring Company 解题报告 (并查集 区间合并)
看题传送门:http://codeforces.com/problemset/problem/566/D这个题和普通的并查集不同的一点就是操作二要求合并一个区间的节点,如果用朴素的n平方的方法会超时,因为会有很多重复的操作,比如要是让合并1 - 10,然后又让合并 5 - 7,这就有冗余操作了。所以我们新开了一个pre数组,用于记录每一个节点向前第一个不在同一个集合里的节点。#inclu...
2018-07-18 11:42:59
257
原创 POJ 3250 解题报告 (单调栈)
看题传送门:http://poj.org/problem?id=3250这题单调栈裸题,模拟栈就行。有个little trick就是可以在输入末尾多加一个INF,这样可以保证栈中所有的有效元素全部被弹出。(POJ不支持万能头好烦……)#include <iostream>#include <cstdio>using namespace std;const i...
2018-07-18 11:17:08
341
原创 CodeForce 853A 解题报告 (贪心 并查集)
传送门:http://codeforces.com/problemset/problem/853/A这题首先是用贪心和并查集,虽然不知道怎么证明……但是贪心应该是对的,只要让花费大的飞机尽量早的起飞就可以了。主要难点是怎么判断这个时间点被占用了,我们可以用并查集来解决,Next数组中的Next[i]表示在 i 时间之后最近的可以起飞的时间点。相当于如果 i 时刻已经被占用的话,那么Next[ ...
2018-07-18 11:09:17
275
原创 HDU 2473 解题报告 Junk Mail Filter(并查集删除,虚拟节点)
看题传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2473这题可以说是经典了,涉及了并查集的删除操作。由于并查集是树状的结构,导致不能直接简单删除一个一个节点而又不影响其他节点的连通性。前人给出的解决方法是使用虚拟节点,一种类似于金蝉脱壳的思路,直接增加一个新的集合。具体的操作方面,可以开辟两个n长度的数组,也可以直接用一个2 * n + m的...
2018-07-17 21:58:34
222
原创 HDU 1863 畅通工程 解题报告 (Kruskal)
看题传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1863 这题是最小生成树的裸题,具体的算法内容挺简单的,记录一下实现过程中踩的坑……首先这题用优先队列应该是最简单的,直接在结构体里重载运算符,我tm只记得用队列方便,却忘了优先队列更方便……像这种判断连通分量的,循环看看谁的父亲是自己就行了。再一个就是kruskal算法里merge函...
2018-07-17 20:07:55
174
原创 HDU 1506 解题报告 Largest Rectangle in a Histogram (单调栈)
看题传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1506题意比较明显,就是找以某一个矩形为高的最大的矩形。这个题可以用单调栈来求解,需要注意的是如果从左到右再从右到左两次循环的话容易TLE,其实只要从左到右一次循环就能出答案。这题可以用模拟栈,也可以用STL,其实都差不多……先介绍一下简单说一下单调栈。所谓单调,就是保持栈中的元素保持...
2018-07-17 19:40:50
300
原创 A Bug‘s life POJ 2492 解题报告 (种类并查集)
看题链接:http://poj.org/problem?id=2492 这也算是种类并查集的一道经典例题了吧,题意就不多解释了,先写一些我对种类并查集的一些理解。 种类并查集比普通的并查集多一个relation数组,relation[i] 记录了 i 和 其直接父亲节点的关系,这个关系的表示因题目而异,种类并查集的重点和难点就是对这个relation数组的维护。种类 ...
2018-07-17 19:05:04
532
原创 POJ 3320(尺取法)
Jessica's Reading ProblemTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 15707 Accepted: 5429DescriptionJessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The fi...
2018-06-11 09:13:29
306
原创 POJ 3312 (二分)
看题传送门~~http://poj.org/problem?id=3122PieTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 21286 Accepted: 6829 Special JudgeDescriptionMy birthday is coming up and traditionally I'm serving pi...
2018-06-05 16:50:30
239
原创 HDU1465(错排)
看题传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1465 这个题其实比较水,如果学习过错排公式或者对DP很熟悉的话应该很快得出递推公式,一开始想的太简单了……上来就交了一发f(n) = f(n-1) * (n-1),当然就WA了,其实这样想是少考虑了一种情况的,下面我们来仔细分析一下错排公式,争取下一次看见能反应过来。 这个题可以分两步进行,首先...
2018-03-28 21:33:14
241
原创 POJ 1664(动规)
看题传送门 :http://poj.org/problem?id=1664 沃尼玛这题如此之水当时我居然想了好长时间……又是剪枝又是去重的…… 其实这个题是很简单的动态规划,根据题意,这个问题可以分成两种状态: 1.当nPlate > nApple时,此时必然有(nPlate - nApple)个盘子是空的,即使把这几个必空的盘子去掉也不会影响最后的结果,状态转移方程为...
2018-03-27 22:43:57
323
原创 PAT1052
看题传送门 :https://www.patest.cn/contests/pat-b-practise/1052 这个题很有意思的,用二维数组其实很难处理,主要原因是每个方括号内的字符数目其实是不确定的,这样导致很难储存,输出时也很难根据标号输出。而string容器和vector容器却能很好的解决这一问题,因为可以通过函数很方便的确定总符号数,而且在储存的时候也很好储存,一个string容器可...
2018-03-22 11:31:54
243
原创 关于DFS 与 BFS (1)
DFS与BFS本质上是对图的遍历,只是在遍历方式上有不同之处,下面就这两种方式谈一些我自己浅显的见解(来自完全没学过图论的蒻鶸)。DFS DFS(Deepth First Search)深度优先搜索,根据字面意思我们就可以知道,DFS对树的遍历方式是优先搜索一个路径,也就是一条路走到黑,直到走完所有可能的路径或者搜索到了结束状态。DFS通常需要配合DP来进行剪枝,以保证不会超时。DF...
2018-03-16 21:31:11
359
转载 PAT1008 数组循环右移问题(非暴力输出解法)
原题地址https://www.patest.cn/contests/pat-b-practise/1008这道题很早之前就用暴力输出AC过了,可是本题解法众多,这里介绍两种方法。第一种方法来源于网上的博客,非常有趣。第二种方法也不是本人原创,不敢夺人之功。第一种:翻转法这是一种很有技巧性的解法,经过三次翻转即可得到结果。我们设数组长度为N,右移位数为M。1. 首先将区间(以0位首位), 【N- ...
2018-03-11 18:11:13
700
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人