1. 小红的中心点(AC)
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<vector<int>> vec(n, vector<int>(2));
for (int i = 0; i < n; i++) {
cin >> vec[i][0];
cin >> vec[i][1];
}
int res = 0;
for (int i = 0; i < n; i++) {
int tmp = 0;
for (int j = 0; j < n; j++) {
if (j != i) {
if (vec[j][0] == vec[i][0] && vec[j][1] > vec[i][1]) { // 上边
tmp = tmp | 1;
}
else if (vec[j][0] == vec[i][0] && vec[j][1] < vec[i][1]) { // 下边
tmp = tmp | 2;
}
else if (vec[j][1] == vec[i][1] && vec[j][0] < vec[i][0]) { // 左边
tmp = tmp | 4;
}
else if (vec[j][1] == vec[i][1] && vec[j][0] > vec[i][0]) { // 右边
tmp = tmp | 8;
}
if (tmp == 15) {
res++;
break;
}
}
}
}
cout << res;
}
// 64 位输出请用 printf("%lld")
2. 小红打字(AC)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
string str;
string keys;
cin >> str >> keys;
vector<bool> isHave(26);
for (auto key : keys) {
isHave[key - 'a'] = true;
}
int res = 0;
int curLen = 0;
for (int i = 0; i < str.size(); i++) {
if (isHave[str[i] - 'a'] == true) {
curLen++;
}
else {
res += curLen * (curLen + 1) / 2;
curLen = 0;
}
}
if (curLen > 0) {
res += curLen * (curLen + 1) / 2;
}
cout << res;
}
// 64 位输出请用 printf("%lld")
3. 字符串的不和谐度(A了60%,超时,不知道要怎么优化,欢迎佬指出)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
int n, q;
cin >> n >> q;
string str;
cin >> str;
int l, r;
char ch;
vector<string> vec = { "abc", "acb", "bac", "bca", "cab", "cba" };
for (int i = 0; i < q; i++) {
cin >> l >> r >> ch;
for (int j = l - 1; j <= r - 1; j++) {
str[j] = ch;
}
int res = 0x3f3f3f3f;
for (int j = 0; j < vec.size(); j++) {
int curRes = 0;
for (int k = 0; k < n; k++) {
if (str[k] != vec[j][k % 3]) {
curRes++;
}
}
res = min(res, curRes);
}
cout << res << "\n";
}
return 0;
}
// 64 位输出请用 printf("%lld")