思路讲解
多源广搜经典套路,如果该点到达时间没有别的点早,就可以不用走了
然后把所有点加入q,实现多源广搜
1 | FOR(i,1,N){ |
AC代码
https://atcoder.jp/contests/abc383/submissions/62366428
1 | // Problem: C - Humidifier 3 |
多源广搜经典套路,如果该点到达时间没有别的点早,就可以不用走了
然后把所有点加入q,实现多源广搜
1 | FOR(i,1,N){ |
https://atcoder.jp/contests/abc383/submissions/62366428
1 | // Problem: C - Humidifier 3 |
https://atcoder.jp/contests/abc383/submissions/62366428
1 | // Problem: C - Humidifier 3 |
在kruskal的过程中求解这个问题,然后如果发现合并的复杂度太高,看看用数量代替set的合并可不可以?
然后记得结构体的全部数组要初始化
https://atcoder.jp/contests/abc383/submissions/62364335
1 | // Problem: E - Sum of Max Matching |
https://atcoder.jp/contests/abc383/submissions/62364233
类的数组记得要init()
1 | inline void init(ll range){ |
给定正整数 N,求不超过 N 的正整数中,恰好有 9 个正约数的数的个数。
输入格式:
输出格式:
样例说明:
约数个数定理(因数个数定理)
这篇解释了该定理

https://atcoder.jp/contests/abc383/submissions/62341051
1 | // Problem: D - 9 Divisors |
暴力,TLE
1 | // Problem: D - 9 Divisors |
这个第一个贪心做法我觉得有点玄学,当然也敲了一遍,下面的第一个就是二分法
有些时候,你发现一个问题可以排序,这个时候就非常有可能是二分答案了
二分答案就是要剪枝,而且一旦发现rank ≥ m就立即返回,不要犹豫(也算是一种剪枝)
1 | inline bool check(ll x){ |
https://atcoder.jp/contests/abc391/submissions/62332464
1 | #include <bits/stdc++.h> |
https://atcoder.jp/contests/abc391/submissions/62335145
二分法
1 | #include <bits/stdc++.h> |