int main() {
int arr[1000001] = { 0 };
char str[100001] = { 0 };
cin >> str;
int sz = strlen(str);
for (int i = 0; i < sz - 1; i++) {
arr[i] = toupper(str[i]) * 100 + toupper(str[i + 1]);
}
sort(arr, arr + sz - 1);
for (int i = 0; i < sz - 1; i++) {
cout << char(arr[i] / 100 + 32) << char(arr[i] % 100 + 32) << endl;
}
}
这是B题,当时因为头文件没写对卡了一下,当时用的是qsort带的一个排序,把cmp函数写成char*的比较就行了。这是我当时的另一个思路,之后写出来了,把字符转换为数字,然后排序对应的数字,最后输出字符。注意小写的可能是三位数,我都转大写了,事实上只要方便,a不转为A也行,只要后面能转回去。
D题,需要注意里面的while,因为sum-arr[j]之后sum有可能还是>=k,所以必须让sumint main() {
ll n, k, count = 0;
cin >> n >> k;
vector