上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 75 下一页
摘要: 原题链接 考察:01分数规划 思路: 由奶牛观光所说,01分数规划基本是在考察二分与其他算法的结合.这里也可以化为累加 a[i] - mid*b[i] 注意原式子*100,所以mid需要/100 我们用C数组保存a[i] - mid*b[i]的值,然后选出最大的n-k个,如果和>=0就说明正确. 1 阅读全文
posted @ 2021-05-06 10:35 acmloser 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:二分+SPFA 引入:形如 ${\sum_1n f[i] \over \sum_1n g[j]}$求其最大值,称为01分数规划问题.通过二分最大值,检验解的存在性,这样的存在性具有单调性,所以可以用二分解决. 思路: 想到二分之后,我们可以假设最大值 = mid,对于每一个环,检验$ 阅读全文
posted @ 2021-05-06 01:12 acmloser 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:次小生成树 思路: yysy,切模板题很爽,但是莫得进步555 时间复杂度:O(T*(mlog2m+n2+m)) 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 using namespace s 阅读全文
posted @ 2021-05-05 15:13 acmloser 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:次小生成树 思路: 模板题,这里我用的方法一,时间复杂度O(N*M+Mlog2m) 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <vector> 5 using namesp 阅读全文
posted @ 2021-05-05 13:25 acmloser 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:次小生成树 思路: 求免去费用道路两端玩具之和A/生成树权值B的最大值. 按贪心思想,应该是让B尽可能的小.对于A可以枚举每一条边,对于B是先求最小生成树的权值和. 如果免费的边在最小生成树中 ans = max(ans,A/最小生成树的权值和-road[i].w) 如果免费的边不在 阅读全文
posted @ 2021-05-05 13:00 acmloser 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:最(次)小生成树 思路: 很明显是求解严格次小生成树. 在当前图所有能构造树的方法中,边权和是第二大的生成树. 求次小生成树的两种方法: 1.先求最小生成树,枚举删取最小生成树的一条边,然后再做最小生成树 时间复杂度O(mlog2 m+nm) 但只能求非严格次小生成树 2.先求最小生 阅读全文
posted @ 2021-05-05 09:55 acmloser 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:最小生成树 思路: 本题要求完成图的最小生成树依旧是原树.考虑Kruskal算法,每次都是选择当前边两端合并为一个集合,我们要保证为完全图的话需要让左右端点的集合两两之间连一条边,同时保证原树的边是当前集合最小的边.因为原边不能代替所以考虑取road[i].w+1的边,边的数量是左端 阅读全文
posted @ 2021-05-04 17:07 acmloser 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:最小生成树 思路: 一眼扫过去超像Prim算法,实际上最小生成树的两种方法皆可.当我们刚开始建矿井时就像有个虚拟源点向实点伸展了一条边,所以建立个虚拟原点即可. 这道题是无向边所以不用管u,v到底哪个是被建矿井的端点. 1 #include <iostream> 2 #include 阅读全文
posted @ 2021-05-04 10:32 acmloser 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:Floyd 思路: 每次0操作都是加入一个点,这个操作有点像Floyd,Floyd算法也是每次操作加入一个点,然后更新.但直接每次加入新点就Floyd会超时,所以要对Floyd算法优化. 每次加入一个新点,就直接更新与该点有关的边.但有个误区是不能只更新已加入点与新点直接的边.比如1 阅读全文
posted @ 2021-05-03 20:18 acmloser 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:floyd 思路: 很明显的传递闭包,但是我们直接敲板子上去会TLE.神级剪枝在floyd的第三重循环,如果g[i][k] = 0那么第三重循环没必要进行. 1 #include <iostream> 2 #include <cstring> 3 using namespace st 阅读全文
posted @ 2021-05-03 17:37 acmloser 阅读(47) 评论(0) 推荐(0) 编辑
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 75 下一页