其他分享
首页 > 其他分享> > Codeforces Round #732 (Div. 2)

Codeforces Round #732 (Div. 2)

作者:互联网

B. AquaMoon and Stolen String
这题就是把一个字符串拿走了,但是给了我们原来的和剩下的,所以别看中途配对又交换了,直接相减就行了。

代码

string s[N], s1[N];
int main()
{
	//ios::sync_with_stdio(false); cin.tie(nullptr);
	int t;
	cin >> t;
	while (t--) {
		int n, m;
		cin >> n >> m;
		for (int i = 1; i <= n; i++)
			cin >> s[i];
		for (int i = 1; i < n; i++)
			cin >> s1[i];
		for (int i = 0; i < m; i++) {
			map<int, int=""> m;
			for (int j = 1; j <= n; j++) {
				m[s[j][i]]++;
			}
			for (int j = 1; j < n; j++) {
				m[s1[j][i]]--;
			}
			for (int j = 'a'; j <= 'z'; j++)
				if (m[j] == 1)
					putchar(j);
		}
		cout << endl;
		fflush(stdout);
	}
}    
  
(官方讲得更好,注意到除了被拿走的字符串,其他的都有2个,所以字母都是偶数个,每个位置上出现奇数次的字母就是被拿走的,再利用异或2次为0的自反性质。)

C. AquaMoon and Strange Sort
这题比赛就不会了,还是思路重要啊。注意到每个数移动的距离都是偶数,所以原本奇数位置上的数字还会再奇数位置上,但是奇数位置之间可以随便交换。(偶数位置类似)。所以排序后检验即可。

代码

int a[N],b[N][2];
int main()
{
	ios::sync_with_stdio(false); cin.tie(nullptr);
	int t;
	cin >> t;
	while (t--) {
		memset(b, 0, sizeof(b));
		int n;
		cin >> n;
		for (int i = 1; i <= n; i++) {
			cin >> a[i];
			b[a[i]][i % 2]++;
		}
		sort(a + 1, a + 1 + n);
		for (int i = 1; i <= n; i++) {
			b[a[i]][i % 2]--;
		}
		bool f = true;
		for (int i = 1; i < +n; i++) {
			if (b[a[i]][0] != 0 || b[a[i]][1] != 0) {
				f = false;
				break;
			}
		}
		if (f)
			cout << "YES" << endl;
		else
			cout << "NO" << endl;
	}
}     
  

标签:奇数,int,位置,Codeforces,cin,偶数,++,732,Div
来源: https://www.cnblogs.com/lingshi321/p/15009113.html