= ̄ω ̄=
追踪最近的用户名外显变动记录。
最近的文章、讨论、云剪贴板与社区记录
**此题数据量大,数据量又大,一个细节的遗漏可能就会导致爆零** 1. 可能有自环,显然此时不行 1. 可能有重边,但是理论上不影响答案 1. 当 `l==r` 时不用考虑这条边 1. 当叶子节点时注意别忘记将并查集滚回到上一个版本 1. 如果你 WA on test #2 #10,注意每次加 `(u,v)` 边时先判…
```cpp #include std::mt19937_64 rng(std::chrono::steady_clock::now().time_since_epoch().count()); const int N = 6; int main() { int n = N+rng()%N; std::cout > s…
你可能和我一样使用 `std::lower_bound` 和 ` std::upper_bound()` ```cpp int L = std::ranges::upper_bound(alls, PII{val-lim, -1})-alls.begin(), R = std::ranges::lower_bound(…
具体WA测试点是 15-19,30-34 注意看看你的主席树有没有写炸,有没有考虑当前节点个数超过k的场景,此时应该返回 rtL*k ```cpp ll _rangeQuery(int _l, int _r, ll rtL, ll rtR, int k) { // sum of max k if(info[_r].cn…
在讨论《造福后人,提供对拍数据生成器》回复:
顺带一提,如果你前5个测试点全 RE,建议先检查你的求 `LCA` 的函数是否正确
**最低C++版本要求:C++17** ```cpp #include // using std::endl; #define endl "\n" std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count()); const i…
在讨论《本题卡常+卡精度,下面提出解决措施》回复:
在点乘和叉乘那些函数前面加上 `inline` 也可以
> 我使用的是C++20,并使用了大量现代化C++语法,可能与C++11不同,注意更改 # 关于卡常 1. 预处理出所有向量的角度 2. 排序常数极大,需要事先将所有线段极角排序,二分时直接遍历所有线段并把编号小于 `maxID` 的取出来 3. 对于 `long double`,尽量避免除法运算,因此在选点时能用乘代…
你估计和我一样对于合并时的左右的端点采用的是二分的写法 ```cpp auto solve=[&](auto self,int rtL,int rtR)->ll{ // [rtL,rtR) if(rtL==rtR) return LLONG_MAX; if(rtR-rtL==1) return pow2(aa[rtL]…
可能是因为没有使用标记永久化 RE代码: ```cpp // P7424 #include using std::cin,std::cout,std::vector; // using std::endl; #define endl "\n" typedef long long ll; typedef std::pai…
注意到DP的初始状态有讲究。 在我的代码里 `dpN[i]` 表示当前第 $i$ 个不取,`dpC[i]` 表示第 $i$ 个取。因此初始状态是 `dpN[1][0]=dpC[1][1]=0`。
在讨论《蒟蒻不理解,为什么都说这题和树的重心有关》回复:
本质上确实是个换根DP,不难发现找重心的过程就是换根DP的过程。可以理解为重心是这道题的特解;而换根DP是这类题目的通解
1. 使用快读 2. 题目未说明**每条边是单向边**,导致我之前每次`dfs`时都需要判断是否会往回走(按理来说没有问题,可惜这道题目数据点太阴间) 3. 如果你使用树状数组离线,注意到该题是单边,我们可以在读入边的时候顺便修改每个点的深度,并将树状数组的上限改成树的深度上限(而不是`n`) 4. 还差一点?~~我倒…
评测记录:https://www.luogu.com.cn/record/149366006 Code: ```cpp // P7768 #include using std::cin,std::cout,std::vector,std::string; #define endl "\n" template inlin…
注意输出时是输出`m`个而不是`n`个 ```cpp for(int i=0;i<n;++i) cout<<(res[i]? "hana\n":"bi\n"); ``` 改成 ```cpp for(int i=0;i<m;++i) cout<<(res[i]? "hana\n":"bi\n"); ``` 我觉得这个错误…
在讨论《Tarjan subtask#2 WA求调》回复:
@[Paradise_Lost](/user/688649) 听不懂,不好意思可以讲得详细一点吗QAQ
```cpp // Luogu P3379 #include using std::cin,std::cout,std::vector; #define endl "\n" const int N=5e5+5; struct Edge{ int to,nxt; }edge[N ans; bool vis[N]={0};…
在讨论《Tarjan LCA 4个hack点全TLE求调》回复:
评测记录:[4TLE](https://www.luogu.com.cn/record/141803693)
```cpp // Luogu P3379 #include using std::cin,std::cout,std::vector; #define endl "\n" const int N=5e5+5; struct Edge{ int to,nxt; }edge[N ans; bool vis[N]={0};…
如果你和我一样,得到`dp[i]`后采取的是向后赋值 ```cpp for(auto j:bb){ if(i*j>y) break; dp[i*j]=min(dp[i*j],dp[i]+1); } ``` 注意题目中$y$和$bb_i$最大可以取到5e6,相乘可能会爆int
简单说一下我从0分到30分到70分到AC所踩过的坑 0. 十年OI一场空,不开__ __ 见祖宗 1. 注意将乘法的tag初始化为1 2. 注意判断是否有乘法的tag时用`!=1`而不是`>1`,因为取余后可能出现tag=0的情况 3. 如果你TLE了三个点:检查你是否使用了lazy tag,或者如果你是和我一样定义了…
如果你是从[最短Hamilton路径](https://www.acwing.com/problem/content/description/93/)直接就着板子敲,注意此题要求的终点可以是任意一个点,而不是最后一个点 ~~话说真的会有人犯这种错误吗~~
作为#8的坑点的提醒: 1. 注意炸弹的范围可能超出所给最大的x,y 1. 如果你是像我一样计算前缀和: ```cpp for(int i=imax;i>=n;--i) for(int j=jmax;j>=m;--j) res=max(a[i][j]+a[i-n][j-m]-a[i][j-m]-a[i-n][j],re…
在讨论《MLE 40 求助》回复:
假设没有陷阱和无敌道具,你的代码中的vis始终为0,做不到记忆化搜索,肯定要么MLE,要么TLE。
在讨论《49分求助!!!》回复:
你这个算法复杂度极限情况是O(n^2),当然要超时了。我的思路很题解中的一篇类似,用普通栈和优先队列存储数字,再用另一个优先队列存储排出的数字,这样复杂度是O(n+log(n)),不会超时