ABC 370 Review
A
模拟题,过
B
模拟题,过
C
很明显的贪心思路是把需要更改的字母分为两类:改大和改小。
首先我们要明确的是要让输出的串尽量拥有小的字典序,且字典序比较的第一关键字是位置,第二是长度
所以对于改小的部分,改的位置越靠前我们就放在越前面操作;
对于改大的部分,改的位置越靠前我们反而放在越后面操作;
这样排序下来就会是最优的。
D
考试的时候打了一个链表发现假了,根本无法维护现有的。
想起之前做过一道 \(EC Final\) 的题也是通过 \(set\) 来维护同一行和同一列的关系,以后就要记性了。
简单来说就是通过二分查找\((lower\)_\(bound)\)来快速地确定应该修改的位置。
以前的知识
set<int> s;
s.size();
s.count(int val);
s.lower_bound(int val);
s.erase(auto it/int val);
新学到的知识
vector<set<int>> s(n);可以预先声明大小
auto erase = [&](int x, int y)
{
h[x].erase(y);
l[y].erase(x);
};可以创建闭包在主函数使用临时函数 用 erase(x,y) 的格式调用
prev(it) 可以查找当前迭代器的上一个位置的迭代器(begin()小心越界)
其他都没有什么需要注意的地方了
E,F,G
以后一定回来填坑
标签:改小,val,int,Review,位置,erase,ABC370 From: https://www.cnblogs.com/Hanggoash/p/18403332