//1.字典序比较
lexicographical_compare(a.begin(), a.end(), b.begin(), b.end())
//2.递增序列
vector<int> all(100);
iota(all.begin(),all.end(),1);
//3.随机
mt19937:一种随机数生成算法
uniform_int_distribution:均匀分布
accumulate():累加求和
partial_sum:求前缀和
back_inserter():插入到容器的后面
lower_bound():查找下界
class Solution {
public:
Solution(vector<int>& w) : gen(random_device{}()), dis(1, accumulate(w.begin(), w.end(), 0)){
partial_sum(w.begin(), w.end(), back_inserter(pre));
}
int pickIndex() {
int x = dis(gen);
return lower_bound(pre.begin(), pre.end(), x) - pre.begin();
}
vector<int> pre;
mt19937 gen;
uniform_int_distribution<int> dis;
};
本文介绍了C++中的几个关键编程技术,包括使用`lexicographical_compare`进行字典序比较,生成随机数的`mt19937`和`uniform_int_distribution`,以及`accumulate`和`partial_sum`进行数值计算和`back_inserter`、`lower_bound`在容器操作中的应用。
514

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



