摘要: 欧拉函数 定义:φ(x)为1至x中与x互质的数的个数. φ(x)=x*∏(p为x的所有质因子)(1-1/p) 简单说明一下,这其实是利用了容斥原理.假设x只有两个不同的质因子p,q,1至x中p的倍数有x/p个,q的倍数有x/q个,把这些数去掉之后,我们也许会重复去掉一些小于x既是p的倍数又是q的倍数 阅读全文
posted @ 2019-08-27 21:34 VBL 阅读(1196) 评论(0) 推荐(1) 编辑
摘要: 原题 题目链接 题目分析 第一眼可能看不出是最小生成树,但仔细想想其实题目所要求的就符合最小生成树的性质.因此只需要用prim算出最小生成树,在求的过程中记录最小生成树中边的最大值即可. 代码 阅读全文
posted @ 2019-08-27 17:12 VBL 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 题目看似要求最大生成树,其实不然,输入时把所有边乘个-1,在求出来的最小生成树其实就是最大生成树了,只需要注意一下有可能无法生成连接所有点的树,这时候要输出-1. 代码 阅读全文
posted @ 2019-08-27 16:54 VBL 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 比较明显的最小生成树模板题,题目给的输入是邻接矩阵,处理一下用prim算法就可以算出最小生成树了. 代码 阅读全文
posted @ 2019-08-27 16:48 VBL 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 给无向图,求次短路.相对于第k短路而言次短路还是好求的,只需要在跑dijkstra的过程中顺便记录次短路就行了. 代码 阅读全文
posted @ 2019-08-27 16:35 VBL 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 了解题意后会发现跑两次最短路就能解决问题了,首先考虑奶牛们回家时的路径,其实只要从聚餐点跑一次最短路,记为dis2[],而考虑奶牛们出发时的最短路,只需要把所有边反置一下,再从聚餐点跑一遍最短路,记为dis[],最后只需要找出牛i使得dis[i]+dis2[i]的值最小即为 阅读全文
posted @ 2019-08-27 15:15 VBL 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 题目要求判断是否存在一条回路,使得回路的距离之和为负数,其实就是图中是否存在负圈,因此可以用bellman来判负圈,如果bellman更新了n次则证明出现负圈,因为n个点构成的图最多只能有由n-1条边构成的最短路.bellman跑了n次则证明存在n条边构成的最短路. 代码 阅读全文
posted @ 2019-08-27 15:05 VBL 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 最短路问题,题目要求与其他牛平均最小分离度,事实上就是先求出这头牛到其他所有牛的最短距离之和在求个平均值.题目所给的一群牛上演一个电影其实就是这群牛之间互相存在一条长度为1的边.由于题目要求任意两点的最短路,所以选用Floyd算法来实现.最后找出最短距离之和ans后,ans 阅读全文
posted @ 2019-08-27 14:49 VBL 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 并查集经典用法,是维护信息的并查集.由于只有两个帮派,那对于每个人需要给它创建两条信息,属于1帮派和属于2帮派.这两条信息是相互矛盾的.当得到一条信息,a和b不是同伙的时候,只需要合并a是1帮派的信息和b是2帮派的信息以及a是2帮派的信息和b是1帮派的信息即可.这道题保证信 阅读全文
posted @ 2019-08-27 14:28 VBL 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 比较明显的并查集题目,先用一个标记数组表示电脑的修复状态,每当修复一个电脑,就用标记数组标记一下,然后遍历一下所有电脑,如果遍历的电脑已被修复且在该电脑连接距离范围内,就合并这两个电脑.查询的话就是常规的并查集查询操作. 代码 阅读全文
posted @ 2019-08-27 14:19 VBL 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 题目要求取中位数,我们可以枚举以每个牛的分数作为中位数,然后选出最省钱的方案,最后只需要看花钱数不超过F中的最高的中位数分数即可.说一下具体实现,先对所有牛按分数从小到大排序,选出最省钱的方案可以用优先队列来选,设half=n/2,当优先队列的牛超过half个的时候就把一个 阅读全文
posted @ 2019-08-27 14:09 VBL 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 原题 题目链接 题目分析 贪心题,想一下就会发现对于一种防晒乳,应该优先给那些最大SPF等级较低的牛用.因为他们能用的防晒乳更少.实现的话只需要把防晒乳的SPF等级按小到大排序,然后没遍历一种防晒乳就把能用这瓶防晒乳的牛全部加入一个优先队列中,优先队列取出最大SPF等级最小的牛即可. 代码 阅读全文
posted @ 2019-08-27 13:12 VBL 阅读(91) 评论(0) 推荐(0) 编辑