0%

思路讲解

那么注意到,在该操作过程中,一个数下标的的奇偶性是不会发生变化的。
还有一个比较隐秘的不变量就是偶数下标的反转数和奇数下标的反转数是相同的,因为每次交换相邻偶数下标时, 会迫不得己地同时交换奇数下标,反之亦然。

那么要用到我们观察出来的第二个性质,就是偶数下标的反转数和奇数下标的反转数是相同的,那么如果说偶数下标序列和奇数下标序列的逆序对数量的奇偶性不相同(逆序对数量其实也就是需交换操作数量,因为本道题目是只能相邻交换,相当于冒泡排序),那么就说明必须要牺牲一个不反转(或者有时是在有序的基础上,再多反转一个,反正无论是 +1+1 还是 1-1 以后奇偶性一定就相同了)。

那么应该反转哪个最优呢?不难发现这样交换最优。

1
2
3
if((revOdd-revEven)%2!=0){
swap(Ans[N],Ans[N-2]);
}

AC代码

https://codeforces.com/contest/2101/submission/319512581

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

思路讲解

从外往里转会好很多。

image

AC代码

https://codeforces.com/contest/2102/submission/319351416

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

从里往外转比较烦。

WA

思路讲解

二分是假的,离散化,差分是真的。

还是有一定难度的,一是要想到离散化+差分快速判断该数是否符合条件。第二是要缩小答案范围,注意到,只有a和b才能成为答案(a+1不就差评了?那为什么不选b?—————a-1不就还好评那?那为什么不选a?)

AC代码

https://codeforces.com/contest/2051/submission/319412463

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

三分做法,WA了

https://codeforces.com/contest/2051/submission/319133918

后面几次WA是因为清空不够多,sum没加够。

思路讲解

那个公式的意思其实就是只有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

思路讲解

呃,这题虽然套着一个几何的背景,但我认为考察重点并不在几何上。

正解竟然就是随机化做法?这题的意义是什么那?我也不是很理解。

AC代码

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

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

TLE

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