静态调试果然没啥经验,一道水题查了一天,最后还是对拍过去的...
最后发现是数组常量上限弄错了...
算法问题主要还是写之前想清楚,有没有问题,是不是想烦了,比如这道水题我还用倍增维护环切,其实两遍生成树搞定,幸亏我写得熟,不然更难调...
交之前还是试一下特殊数据,考察边界,依稀记得某几次网赛被坑...
静态调试还是有用的,浏览一遍基本可以把实现细节问题弄出来,比如特殊情况,弄混变量,但如果写之前思路不清晰,恐怕就事倍功半...
最终还是忽略了数组定义部分的检查,我还以为数据生成器写错了...
sjtu21
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
const int maxm=2000000,maxn=50000;
using namespace std;
int l[maxm],r[maxm],z[maxm],next[maxm],sora[maxm],tail[maxm],cost[maxm],d[maxm],v[maxm],b[maxm];
int f[maxn][20],g[maxn][20],st[maxn],u[maxm];
int n,m,ans,ss,t;
void origin()
{
ss=n;
for (int i=1;i<=n;i++) tail[i]=i,next[i]=0;
memset(f,0,sizeof(f));
memset(g,0,sizeof(g));
}
void li