rt,关于在本题使用莫队时用的排序方式中:
1.使用 if:
记录
bool cmp(const dat &a,const dat &b)
{
if(bel[a.l1]^bel[b.l1]) return a.l1<b.l1;
if(bel[a.r1]^bel[b.r1])
{
if(bel[a.l1]&1) return a.r1<b.r1;
else return a.r1>b.r1;
}
if(bel[a.l2]^bel[b.r2])
{
if(bel[a.r1]&1) return a.l2<b.l2;
else a.l2>b.l2;
}
if(bel[a.l2]&1) return a.r2<b.r2;
else return a.r2>b.r2;
}
- 使用三目运算符:
记录
bool cmp(const dat &a,const dat &b)
{
if(bel[a.l1]^bel[b.l1]) return a.l1<b.l1;
if(bel[a.r1]^bel[b.r1]) return bel[a.l1]&1?a.r1<b.r1:a.r1>b.r1;
if(bel[a.l2]^bel[b.r2]) return bel[a.r1]&1?a.l2<b.l2:a.l2>b.l2;
return bel[a.l2]&1?a.r2<b.r2:a.r2>b.r2;
}
问这是真的会提速吗 (?