1、组队竞速
int main() {
int n;
while (cin >> n) { // 注意 while 处理多个 case
long long sum=0;
vector<int> a;
a.resize(3*n);
//读入数据
for(int i=0;i<3*n;i++){
cin>>a[i];
}
//从小到大排序
sort(a.begin(),a.end());
for(int i=0;i<n;i++){
sum=sum+a[a.size()-2*(i+1)];
}
cout<<sum<<endl;
}
}
2、删除公共字符(哈希映射)
int main() {
int n;
while (cin >> n) { // 注意 while 处理多个 case
long long sum = 0;
vector<int> a;
a.resize(3 * n);
for (int i = 0; i<3 * n; i++){
cin >> a[i];
}
sort(a.begin(), a.end());
for (int i = 0; i<n; i++){
sum = sum + a[a.size() - 2 * (i + 1)];
}
cout << sum << endl;
}
}
3、倒置字符串(整体先倒置,然后再倒置每一个单词)
int main() {
string s;
getline(cin, s);
reverse(s.begin(), s.end());
auto start = s.begin();
while (start != s.end()){
auto end = start;
while (end != s.end() && *end != ' '){
end++;
}
reverse(start, end);
if (end == s.end()){
start = end;
}
else{
start = end + 1;
}
}
cout << s << endl;
return 0;
}
4、排序子序列(每一次非递增到非递减的变换,)
int main() {
int n;
cin >> n;
vector<int> a;
a.resize(n+1); //n+1是为了后面程序中,当i =n时;a[n+1]会访问越界
a[n] = 0;
for (int i = 0; i<n; i++){
cin >> a[i];
}
int i = 0;
int count = 0;
while (i<n){
if (a[i]<a[i + 1]) {
while (i<n&&a[i] <= a[i + 1]){
i++;
}
count++;
i++;
}
else if (a[i] == a[i + 1]) {
i++;
}
else {
while (i<n&&a[i] >= a[i + 1]){
i++;
}
count++;
i++;
}
}
cout << count << endl;
}