0%

思路讲解

【Codeforces Round 1014 (Div. 2) 题目讲解 ABCDE (CF2092)】 https://www.bilibili.com/video/BV1koZBYhEH1/?share_source=copy_web&vd_source=6ca0bc05e7d6f39b07c1afd464edae37

在这种问题当中,往往需要把这个格子的周围4个格子确定了。而不是先确定这个格子填什么

image

如上图,无论这个格子填黑还是填白,所贡献的都是奇数。

同理,如果周围的4个格子两黑两白,那么无论这个格子填什么,一定会贡献一个偶数。

image

由于在这种格子中,奇偶性会发生反转,所以说你可以其他格子随便填,但是你选择的这个格子(比如图中画橙圈的)一定是确定的颜色,一个数加上偶数或者奇数总能是偶数是吧。

image

那么有种特殊情况,就是这种既能是偶数,也能是奇数的点全部被占了怎么办?这真不会了。

image

其实也不难,假设其他点全部为白色,算就完了。

AC代码

https://codeforces.com/contest/2092/submission/315721639

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

思路讲解

我写的算法相当于是一个贪心,就是先看可不可以插入出现次数最少的字符,然后看能不能插入次小的,再看能不能插入次次小的。

不断重复这个贪心操作,如果发现次数超过了 2N2N 次还是无法达到平衡要求,那么直接输出 1-1 ,反之如果中间哪次平衡了,那么就输出步骤数量以及保存好的步骤。

AC代码

https://codeforces.com/contest/2092/submission/315587701

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

哈哈,应该按照我最初想的写,不应该偷懒/

思路讲解

典型智商题?其实也没有,通过打表,我们猜到,答案为sum(cntOdd1)sum-(cntOdd-1),当然要排除isAllOddisAllOddisAllEvenisAllEven 情况

AC代码

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

前面WA是因为没有考虑isAllEven的情况

思路讲解

AC代码

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

思路讲解

处理这种任意组合问题怎么搞?不可能把每个组合都求一遍时,应该怎么办那?

哈哈,其实那就要跳脱出这个组合啦。

看了提示,用异或字典树做。

这是因为字典树共享前缀(假设位数高的为前缀)。

AC代码

https://codeforces.com/contest/2093/submission/315036163

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

CE

这里的val值最好不要事先写上去,反正codeforces的编译器初始化空间大概是33MB左右,太小了。所以这种结构体可以不赋值。

1
2
3
4
struct Trie{
int val=INF /* ,digit=0 */ ,nxt0=0,nxt1=0;
// bool tag01=false; // tag01好像没有用,但也懒得删了,就当是方便调试
}tr[MAXN*14];