Codeforces 错题记录
141A
错点:
cpp
auto pos=letters.find(gname[i]);
if (pos==letters.end()){ // 错误其中,string::find()返回的类型是size_t的位置索引,而不是迭代器。找不到时应该与string::npos比较,而不是end()
169A
错点:upper_bound使用方式错误
cpp
auto it = h.upper_bound(h.begin(), h.end(), i); // 错误vector 没有 upper_bound 成员函数
应该直接改为
cpp
auto it = upper_bound(h.begin(), h.end(), i);实际上后来发现不需要用到upper_bound
错点:
cpp
for (int i=0;i<n;i++) {
h.emplace_back(cin);//错误
}不能这样输入。
cpp
//方式1
int j;
cin>>j;
h.emplace_back(j);
//因为整数是基本类型,拷贝的成本比较低,所以这么做不太会导致效率低下
//方式2(个人喜欢)
h.resize(n);
for (auto& x:h) cin>>x;291A
**错点:**访问越界
cpp
for (int i=0;i<n;i++){//应改为i<n-1
if (id[i]==0)
continue;
if (i<n-1&&id[i+2]==id[i]){//应改为i<n-2
cout<<-1;
return 0;
}
if (id[i+1]==id[i]){
sum++;
i++;
}
}