摘要:
Acwing 920 阅读全文
摘要:
题面 题目链接 我们可以用拓扑序实现下面三种功能: 1.有唯一拓扑序 2.存在多个拓扑序 3.有环(不存在拓扑序) 经典的错误 一个经典的错误就是误认为,\(top\_sort\) 开始阶段,入队时有大于 1 个节点入队拓扑序就不唯一,即: // -1: 不唯一 // 0: 不存在 // 1: 唯一 阅读全文
摘要:
题目链接 思路:拆点 将一个节点 \(node\) 拆为 \(node[0]\) 和 \(node[1]\),其中 \(node[0]\) 是 \(node\) 的最短路,\(node[1]\) 是 \(node\) 的次短路,如果不拆点的话,那么每个 \(node\) 只会出队更新其他节点一次(即 阅读全文
摘要:
题目链接 思路:二分枚举答案 + \(dijkstra\) 验证答案 二分枚举答案 \(mid\),通过 \(dijkstra\) 求最短路,将需要升级的边的权值看作 \(1\),不需要升级的边的权值看作 \(0\),这样求得的最小值就是需要升级的次数 这个将边权值根据需要设置为 \(0/1\) 的 阅读全文
摘要:
\(spfa\) 的优化都是基于 \(deque\) 的,我们通常使用 \(LLL\) 优化,代码简单,优化效果最好,详情可见参考这里,例题可以参考这里 1. \(LLL\) 优化(入队优化) Large Label Last 优化:思路就是将 \(dist\) 更大的点放入队尾,将 \(dist\ 阅读全文
摘要:
01分数问题通常需要借助二分和图论 -- WIKI Example1 Example2 阅读全文
摘要:
1. \(01\) 背包求恰好装满方案数 HERE f[i][j]: 从前i个物品中选,体积正好为j的方案数 状态转移方程和 \(01\) 背包问题求最大价值是一样的 朴素版 #include <iostream> #include <cstring> #include <algorithm> us 阅读全文
摘要:
// printf 四舍五入 printf("%m.nlf", x); // 保留n位小数,整个浮点数占m字符(包括整数部分,小数点,小数部分) printf("%0m.nlf", x); // 不满m字符补充前导0 /* example */ double x = 3.146; printf("% 阅读全文
摘要:
一、剪枝优化 1.优化搜索顺序:有限考虑分支较少的搜索方式,常见的比如从大到小排序 2.排除等效冗余:排除等效的情况,本题就是很好的例子,稍后解释 3.可行性剪枝 4.最优性剪枝 二、本题的排除等效冗余 1.如果是木棒的第一段就搜索失败了,则一定搜不到方案 2.如果是木棒的最后一段搜索失败了,则一定 阅读全文
摘要:
unordered_map::[] 查询或插入元素 阅读全文