0%

CF-1009-F. Counting Necessary Nodes

思路讲解

那个公式的意思其实就是只有0,2,4,8,。。才能有边长为2的正方形。
0,4,8,12,。。。才能有边长为4的正方形。

图中的1,2,3,4对应加粗斜体的dfs部分。

image

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
	ROF(i,log2(b-a),0){
ll b_=b/pow2[i]*pow2[i],a_=ceil(a*1.0/pow2[i])*pow2[i];
ll d_=d/pow2[i]*pow2[i],c_=ceil(c*1.0/pow2[i])*pow2[i];
if(b_<=a) continue;
if(a_>=b) continue;
if(d_<=c) continue;
if(c_>=d) continue;
if(a_+pow2[i]>b_) continue;
if(c_+pow2[i]>d_) continue;
ans+=abs(a_-b_)/pow2[i]*(abs(c_-d_)/pow2[i]);
#ifdef LOCAL
debug(a_)
debug(b_)
debug(c_)
debug(d_)
debug(pow2[i])
debug(ans)
cerr<<"\n";
#endif
dfs(a,a_,c,d);
dfs(b_,b,c,d);
dfs(a_,b_,c,c_);
dfs(a_,b_,d_,d);
return;
}

AC代码

https://codeforces.com/contest/2074/submission/319087712

心路历程(WA,TLE,MLE……)

直接模拟4叉树,TLE

https://codeforces.com/contest/2074/submission/319043232