本题的构造方法,增量法。
注意到下界为 $n$ 个点各出现一次,按套路对着下界构造。考虑到整体不好处理,所以对于每个点,依次将每个点插入原有构造方案,因为一定有一个断点,断点就是颜色不同的分界线,考虑插在断点前后,发现定有一个可以,考虑如何维护。
发现可用双向链表来维护,但是太难写了,所以我直接用了 vector 来维护,这样的维护方法常数及其的小,便做出了此题。
```cpp
#include <bits/stdc++.h>
using namespace std;
char bian[2005][2005];
vector<int> vec;
int Zhuan=0;
bool check(int id,int num){
Zhuan=0;
vec.insert(vec.begin()+id,num);
int l=vec.size(),vis=0,lst=0,zhuan=0;
for(int j=max(0,id-3);j<min(l,id+4);j++){
if(j+1==l){
break;
}
if(lst==0){
lst=bian[vec[j]][vec[j+1]];
}else if(lst==bian[vec[j]][vec[j+1]]){
co

最低0.47元/天 解锁文章
2251

被折叠的 条评论
为什么被折叠?



