Codeforces 980

D

难过的是 D 题的 算法细节已经对了,然而还是超时

通过 学习红名大佬的代码,发现是我们共同的n平方的算法的常数不同,我的常数是map查找 hash的速度+stl的效率,而它通过离散化,真的就只有个位数常数,,,,然而仔细想想,离散化的化我也不是遇到一次两次了,感觉不该再栽倒在同一个地方。

拷贝 提取 并修改了 红名大佬代码中做离散化的部分。

1
2
3
4
sort(li.begin(), li.end());
li.resize(unique(li.begin(), li.end())-li.begin());
for(int i=0; i<n; i++)
newv[i]=lower_bound(li.begin(), li.end(), sourcev[i])-li.begin();

解释一下内容,sourcev中存的原始数据

li是 vector,把原始数据放进去

然后 通过排序 和 去重

再对每一个 原始数据找到所离散化出的新结果

参考

大佬的代码