- 博客(33)
- 资源 (4)
- 收藏
- 关注
原创 牛客练习赛25A题-找规律
链接:https://www.nowcoder.com/acm/contest/158/A 来源:牛客网题目描述q次询问,每次给一个x,问1到x的因数个数的和。输入描述:第一行一个正整数q ; 接下来q行,每行一个正整数 x输出描述:共q行,每行一个正整数表示答案 示例1 输入 4 1 2 3 10 输出 1 3 5 27说明...
2018-08-31 17:45:02
354
原创 Swap HDU - 2819 二分图最大匹配
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2819 题意: 给定一个01010 1矩阵,是否可以通过行变换或列变换使其主对角线全文111,如果可以输出该变换序列,否则输出−1−1-1。分析: 如果主对角线全为111,那么这些111的横纵坐标刚好分别使用了1 n1 n1~n,那么对应变换会原来的矩阵中,同样...
2018-08-24 17:36:35
302
原创 Friend-Graph HDU - 6152 图论 拉姆齐定律 最大团
题意: 在一个团队中如果有三个或更多人之间互相认识或互相不认识,那么这个团队就被称为”Bad Team”,否则被称为”Great Team”。给定一个团队的信息,然你判定这个团队是哪一种。分析: 问题可以抽象为在一个点数为NNN的无向图中是否存在一个完全图KnKnK_n(KnKnK_n代表定点数为nnn的完全图。),3≤n≤N3≤n≤N3 \le n \le N,又由于Kn,...
2018-08-23 15:20:25
396
原创 Computer HDU - 2196 树的直径
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2196题意: 在一个树中,求各个点到其他点的最远距离。思路: 我们可以使用搜索求出一个点到其他点的最远距离,因此很容易想到对每个点进行一次搜索,但这个复杂度就比较高了,会超时。树上直径有一个性质:假设aaa和bbb是树上直径的两端点,那么对于其他任一点iii到其他点的最远距离...
2018-08-21 17:47:42
183
原创 POJ 3255 次短路径
#include <bits/stdc++.h>#define N 105#define INF 1e10#define fp(_p,_q,_r) for(int _p = _q;_p < _r;_p ++)using namespace std;int ro,n,co[N][2];double cost[N][N];double d[N];bool used[N...
2018-08-21 15:37:17
149
原创 牛客Wannafly挑战赛9C题-简单Hash哈希
链接:https://www.nowcoder.com/acm/contest/71/C 来源:牛客网时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld题目描述小W在计算一个数列AnAn{A_n},其中A1=1,A2=2,An+2=An+1+AnA1=1,A2=2,An+2=An+...
2018-08-21 15:33:08
178
原创 Max Sum HDU - 1003 简单动态规划
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003题意: 题中给出一个数组,让你求出子数组和的最大值,以及起始位置。思路: 首先很容易想到 O(2N)O(2N)O(2^N) 的解法,但这明显是不行的。我们可以使用动态规划的思想解这道题。用 curcurcur 结构体保存当前子数组最大值的相关信息(最大值和起始位置),cu...
2018-08-19 22:04:00
191
原创 Remember the Word UVALive - 3942 字典树 + 动态规划(Trie + dp)
题目链接:https://cn.vjudge.net/problem/UVALive-3942题意: 给出一个由小写字母组成的长串和若干个小串,求由这些小串来组成这个长串共有多少种可能。思路: 计数问题很容易想到 dp,但本题使用纯 dp 会超时,原因在于每次小串和长串匹配太耗时。我们可以使用字典树来保存这些小串,使得我们匹配时更新快速。设长串用sss表示,设用数组 r...
2018-08-18 14:57:24
276
原创 异或最大值 CSU - 1216 0-1字典树(0-1Trie)
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1216 题意: 给定一串数字(int范围内),求这些数字的两两最大异或值。思路: 首先肯定可以暴力枚举,但是O(N^2)的时间复杂度太高,这道题应该使用字典树。将每个数分解成二进制串存储到字典树中,根在高位的方向,容易知道,这棵树的高度为32,每一层对应32位整...
2018-08-17 17:45:27
430
原创 Assemble UVALive - 3971 二分法
题意: 你需要组装电脑,一共有n个配件,b的预算,n个配件中包含了各类电脑配件的价格和品质。组成一台计算机的配件的品质可能不同,但其性能取决于品质最差的那个配件。问在预算内可以使得电脑达到的最大性能是多少。思路: 大致思路是在0~最大品质之间二分,看某个品质当前预算是否能够满足品质为q的电脑,每次选取零件的时候我们总是选择满足条件中的最便宜的零件。如此二分下去,最终就能得到答...
2018-08-17 10:42:30
360
原创 Milking Time POJ - 3616 简单DP 最长递增子序列变形
题目链接POJ3161 题意: 一头奶牛为自己未来 n 小时的产奶做规划,共有m个时间段,每个时间段用三个字母表示,s:该时段开始时间,d:该时段结束时间,p:该时间段产奶量。并且每次产完奶之后需要休息 r 小时休息才能进行下一次产奶。问最大产奶量是多少?分析: 这也是一道求子序列的题目,该子序列需要满足的条件是1.和最大;2.子序列中前一个元素的结束时间+休息时间 <...
2018-08-16 21:19:33
473
原创 Super Jumping! Jumping! Jumping! HDU - 1087 最长递增子序列变形
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1087 题意: 有一种游戏,给定你一个数字序列,从一头走到另一头,可以跳任意步,每经过一个点,该点的数字就会累加到你的分数中,问最多可以获得多少分。思路: 这个归根到底是求一个递增的序列,这个序列满足某种限制,这样一来就和最长递增子序列有些相似,在最长递增子序列中,是求一个递增的子...
2018-08-16 20:02:17
353
原创 The Accomodation of Students HDU - 2444 二分图判定 + 二分图最大匹配
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2444 题意: 有一组学生(点),他们之间有相互认识的关系(边),问能否分成两组使得组内没有相识的人,不能的话输出“No”,注意不是“NO”,因为这个wa了半天=_=,如果能的话则对他们安排住宿,使得两个相互认识的人住在一个双人间里,问需要多少个双人间。分析: 分组就是二分图判定,...
2018-08-16 09:29:36
475
原创 Fire Net HDU - 1045 二分图最大匹配模板+缩点
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1045题意: 在一个用网格表示的城市中有若干个墙,还有可以向四方扫射的机枪,机枪的子弹可以可以打穿机枪,但不能打穿墙,给出城市的地图,计算可放置机枪的最大数目。思路: 很容易想到的是使用搜索,穷举即可。但是这道题也可以巧妙的使用二分图匹配来做。分别按照横向和纵向将每行每列的连续空...
2018-08-15 19:44:59
476
原创 Drainage Ditches POJ - 1273 裸最大流
题目链接:http://poj.org/problem?id=1273 题意: 就是排水问题,裸裸的最大流。代码:#include &lt;cstring&gt;#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;vector&gt;#define INF (1 &lt
2018-08-10 16:33:10
771
原创 Dining POJ - 3281 最大流
题目链接:http://poj.org/problem?id=3281 题意: 农场有很多牛,不同的牛有着多种不同的食物和饮料偏好,每顿饭吃一种食物和饮料,每种饮料和食物只能被一头牛吃,问最多能使多少牛即吃到喜欢食物又喝到喜欢的饮料。分析: 将牛拆分为2个点,一个跟食物连边,另一个跟饮料连边,然后对应的牛之间进行连边。最后虚拟出一个源点和汇点,计算从源点到汇点的最大流即可。...
2018-08-10 15:45:03
796
原创 Roadblocks POJ - 3255 次短路径
题目链接:http://poj.org/problem?id=3255 题意: 主人公想要找到一条道目的地的次短路径,问次短路径的长度为多少。这题裸次短路,直接套模板即可。#include &lt;bits/stdc++.h&gt;#define N 105#define INF 1e10#define fp(_p,_q,_r) for(int _p = _q;_p &lt;...
2018-08-10 14:51:26
865
原创 畅通工程再续 HDU - 1875
#include &lt;bits/stdc++.h&gt;#define N 105#define INF 1e10#define fp(_p,_q,_r) for(int _p = _q;_p &lt; _r;_p ++)using namespace std;int ro,n,co[N][2];double cost[N][N];double d[N];bool used[N...
2018-08-02 10:52:12
891
原创 Truck History POJ - 1789 最小生成树
题意: 给定若干个定长字符串,规定两个字符串之间的距离为两个字符串对应位置不同自付的个数。然后求从一个字符串最少经过多少距离可以变异成这个字符串集。思路: 构建一副图求最小生成树的权重即可。注意一点,这里使用 string 会TLE。#include <cstring>#include <iostream>#include <cstdi...
2018-07-31 21:23:23
883
原创 Networking POJ - 1287 最小生成树水题 Prim 模板
题意: 这道题其实就是在 N 个点的图中装宽带,要求全部互联。因为有重边,而且数据范围比较小,我们直接使用邻接矩阵存储,使用 Prim 算法就ok。代码:#include &amp;lt;iostream&amp;gt;#include &amp;lt;cstdio&amp;gt;#define N 55#define E 2000#define INF (1&amp;lt;&amp;l
2018-07-31 19:33:36
928
原创 Jungle Roads POJ - 1251 最小生成树水题
题意: 没什么意思,就是最小生成树,直接贴代码,坑在于输入。代码:#include &lt;iostream&gt;#include &lt;cstring&gt;#include &lt;cstdio&gt;#include &lt;algorithm&gt;#define E 100#define N 30#define fp(_p,_q,_r)
2018-07-31 16:52:20
854
原创 Invitation Cards POJ - 1511 往返最短路径
题目链接http://poj.org/problem?id=1511 题意: 在一个有向图中,求从源点出发到达所有点,再返回源点的总花费。其实所有点的往返路径的最小值的和。思路: 普通的往返路径类题目可以直接转置邻接矩阵,但是这道题的点比较多,我们需要采用邻接表的形式存储图。但通过邻接表建立反向图的过程又比较复杂,所以我们直接在输入的时候分别建立两个不同方向的图。然后使用 ...
2018-07-31 13:27:41
1236
原创 最长连续递增子序列(Longest Continuous Increasing Subsequence)
题目解释: 最长连续递增子序列是在一个未经排序的整数数组中,最长且连续的的递增序列,简称 LCIS。 例如: [1,3,5,4,7], 最长连续递增序列是 [1,3,5], 长度为3,尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 [2,2,2,2,2], 最长连续递增序列是 [2], 长度为1。思路分析: ...
2018-07-31 09:59:56
3694
原创 最长公共子序列——Longest Common Sequence
名词解释: 所谓最长公共子序列就是在一个序列中按原顺序抽出若干项组成的新序列,注意子序列中各元素顺序应与原序列相同。 此题可用动态规划来解。#include &lt;bits/stdc++.h&gt;using namespace std;int dp[25][25];int lcs(string x,string y){ memset(dp,0,sizeof...
2018-07-31 09:59:20
1088
原创 最长递增子序列——Longest Increasing Subsequence
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 O(n)的解法: 我们设立一个数组 dp ,使用 dp[i] 记录 以 nums[i] 结尾的LIS 的长度,那么 dp[i] 就等于 num[i] 跟 dp[0…i - 1] 所组成...
2018-07-31 09:59:07
1072
原创 Currency Exchange POJ - 1860 负权环检测变形
题意: 在一个城市中有 n 个货币交换点,每个交换点可以接受两种货币的交换,不同的交换方式有不同的汇率和手续费。问是否存在一种交换方式使得某人在这个交换过程中可以获利。 思路: 这道题不难,本题类似于负权环的检测,经过负权环之后,成本可以不断减少。如果我们在这道题中存在一个环可以使得我们不断获利,那么我们必然可以在整个过程中获利。我们在 Bellman-Ford 算法或者 SP...
2018-07-30 23:00:17
1025
原创 最短路问题模板——迪杰斯特拉算法(Dijstra)、Bellman-Ford算法、弗洛伊德算法(Floyd-Warshall)、SPFA算法
Dijstra算法://POJ 2378#include &amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt;using namespace std;#define MAXN 1005const int INF = (1 &amp;amp;amp;lt;&amp;amp;amp;lt; 30);int t,V,d[MAXN],costs[MAXN][MAXN];bool used[MAXN]
2018-07-30 19:44:15
1399
原创 Heavy Transportation POJ - 1797 && Frogger POJ - 2253 Dijstra 算法变形
这两道题都对 Dijstra 进行了改造,继承了 Dijstra 的精髓,也就是贪心和松弛。我们先找贪心的从未访问过的点中找到最符合条件的点,因为通过这个点确定的边进行松弛之后有可能改善之前的情况,比如最短路中先找到当前最短的边,然后利用这条边进行松弛,就可能通过这条边找到到其他点的最短路径,然后重复此过程即可。POJ 1797 题目链接题意: 在一个图中,每条边都有一定的承载力,...
2018-07-30 10:32:23
878
原创 Silver Cow Party POJ - 3268 往返最短路径
题目链接 题意: 在一个有向图中,求所有点到一个目标点 X 的往返路径和的最大值。思路: 首先很容易想到 Floyd 算法求得任意两点之间的最短路径,然后再算 min(d[i][X] + d[X][i]) (d[i][j] 表示 i 到 j 的最短路径),但是 O(N^3) 的复杂度会超时。 我采用 Dijstra 算法,先计算以目标点 X 为单源点的最短路径,也就是...
2018-07-29 22:09:42
1059
原创 LeetCode-684/685 冗余连接
题目描述: 在本问题中, 树指的是一个连通且无环的无向图。 输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。 结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ,满足 u &amp;lt; v,表示连接顶点u 和v的无向图的边。 返回一条可以删去...
2018-07-24 15:21:04
1470
原创 2018年网易秋招笔试真题——游历魔法王国
题目描述: 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树。 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次。 如果小易到达过某个城市就视为小易游历过这个城市了,小易现在要制定好的旅游计划使他能游历最多的城市,请你帮他计算一下他最多能游历过多少个城市(注意0号城市已经游历了,游历过的城市不重复计...
2018-07-21 17:35:45
1526
原创 二分图判定
二分图判定是指给定一个具有 n 个顶点的图,要给图上每个顶点染色,并且要使相邻的顶点颜色不同。问是否能用最多 2 种颜色进行染色?保证图中没有重边和自环。 把相邻顶点染成不同颜色的问题叫做图的着色问题。对图进行染色所需要的最小颜色数称为最小着色数。最小着色数是 2 的图称作二分图。例如:上图显然不是一个二分图,因为三个顶点两两相连,至少需要三种不同颜色;而这个图显然是一个二...
2018-07-20 22:33:10
1552
C++ STL源码
2018-08-07
Introduction to Algorithms, Third Edition(算法导论原书英文第三版)
2018-08-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人