0%

ABC-421-D - RLE Moving

思路讲解

1
2
// 整体思路就是我们如果发现如果两者起始位置不同,那么是不会有相交的,或者相交一次
// 简单而言,就是必须先有一次相交,接着运动方向一样,才能有相交,否则就直接穿过去了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 在同一点并且操作序列相同
if(a==b && opa==opb){
ans+=mn;
}else{
auto f=[&](ll dis){
Point c=oper(a, opa,dis),d=oper(b, opb, dis);
return mandis(c, d);
};
ll l=1,r=mn;
while (l<r) {
ll mid=l+r>>1;
// if(f(mid)<=f(mid+1)){
// 从mid点(或其前)开始,函数开始单调递增
if(f(mid+1)-f(mid)>=0){
r=mid;
}else{
l=mid+1;
}
}
if(f(l)==0){
++ans;
}
}

AC代码

https://atcoder.jp/contests/abc421/submissions/68978595

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