(未完)Codeforces Round #798 (Div. 2) AB...
作者:互联网
Codeforces Round #798 (Div. 2)
https://codeforces.com/contest/1689
菜鸟来补题了。。。还妹写完
AB过的有些出乎意料,毕竟我是乱构造的
A. Lex String
A要干啥来着,,不记得了,明天看看
#include <bits/stdc++.h>
using namespace std;
void solve () {
int n, m, k;
cin >> n >> m >> k;
string s, t, ans;
cin >> s >> t;
sort (s.begin (), s.end ()), sort (t.begin (), t.end ());
//cout << s << endl << t << endl;
int cnt1 = 0, cnt2 = 0;
for (int i = 0, j = 0; i < s.size () &&j < t.size (); ) {
if (abs (cnt1 - cnt2) >= k) {
if (cnt1 > cnt2)
ans += t[j], j ++, cnt1 = 0, cnt2 ++;
else
ans += s[i], i ++, cnt1 ++, cnt2 = 0;
continue;
}
if (s[i] > t[j])
ans += t[j], j ++, cnt2 ++, cnt1 = 0;
if (s[i] < t[j])
ans += s[i], i ++, cnt1 ++, cnt2 = 0;
}
cout << ans << endl;
}
int main () {
int t;
cin >> t;
while (t --) {
solve ();
}
}
B. Mystic Permutation
直接从小到大排,不行就交换位置
#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
int a[N], b[N];
void solve () {
int n;
cin >> n;
for (int i = 1; i <= n; i ++)
cin >> a[i], b[i] = i;
if (n == 1) {
cout << -1 << endl;
return ;
}
for (int i = 1; i < n; i ++)
if (a[i] == b[i])
swap (b[i], b[i + 1]);
if (b[n] == a[n]) swap (b[n], b[n - 1]);
for (int i = 1; i <= n; i ++)
cout << b[i] << ' ';
cout << endl;
}
int main () {
int t;
cin >> t;
while (t --) {
solve ();
}
}
//构造
//每一个位置都要不一样且字典序最小
//感觉很爽,瞎构造的竟然过了
标签:...,AB,++,Codeforces,int,solve,cnt2,cnt1,ans 来源: https://www.cnblogs.com/CTing/p/16387418.html