str.substr(pos, len); <开始位置,长度>
vector 导入 set 中查重
if (std::set(S.begin(), S.end()).size() != S.size()) {
std::cout << "No\n";
return 0;
}
判断字符在字符串中出现的次数
if (std::count(s.begin(), s.end(), c) == 1) {
std::cout << c << "\n";
return 0;
}
string 中查找字符
if ("A23456789TJQK"s.find(S[i][1]) == std::string::npos) { // 若没有找到,返回std::string::npos
std::cout << "No\n";
return 0;
}
浮点数保留小数点后位数自动四舍五入
abc 270 B
// 精简的贪心解法
#include <bits/stdc++.h>
using i64 = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int X, Y, Z;
std::cin >> X >> Y >> Z;
if (X < 0) {
X = -X;
Y = -Y;
Z = -Z;
}
if (Y < 0 || Y > X) {
std::cout << X << "\n";
} else if (Z < Y) {
std::cout << std::abs(Z) + X - Z << "\n";
} else {
std::cout << -1 << "\n";
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
int x, y, z;
cin >> x >> y >> z;
if (x < 0)
{
x = -x, y = -y, z = -z;
}
if (y > x || (y > 0 && z < y && z > 0) || y < 0) cout << x << endl;
else if (z < 0 && y > 0) cout << -2 * z + x;
else cout << -1 << endl;
return 0;
}
abc 265 B
//有很多小坑,比如t会爆int,以及要设计一个合理的模拟流程
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N];
pair<int, int> b[N];
int n, m;
long long t;
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
cin >> n >> m >> t;
for (int i = 1; i <= n - 1; i ++) cin >> a[i];
for (int i = 0; i < m; i ++) cin >> b[i].first >> b[i].second;
int k = 0;
for (int i = 1; i <= n; i ++)
{
t -= a[i - 1];
if (t <= 0)
{
cout << "No" << endl;
return 0;
}
if (k < m && b[k].first == i) t += b[k ++].second;
}
cout << "Yes" << endl;
return 0;
}
abc 261 B
要仔细读题,如果题目限定了条件,就按题目给条件模拟,否则会偏离题目的思路,卡在奇奇怪怪的数据