Codeforces Round #685 (Div. 2)

待补

A


#include <bits/stdc++.h>
using namespace std;

int n;

int main()
{
	int __;
	scanf("%d", &__);
	while(__ -- )
	{
		scanf("%d", &n);
		if(n == 1) printf("0
");
		else if(n == 2) printf("1
");
		else if(n == 3) printf("2
");
		else if(n % 2 == 0) printf("2
");
		else printf("3
");	
	}
	return 0;
} 

B


#include <bits/stdc++.h>
using namespace std;
const int N = 100 + 20;

int n, q;
char str[N];

int main()
{
	int __;
	scanf("%d", &__);
	while(__ -- )
	{
		scanf("%d%d", &n, &q);
		scanf("%s", str + 1);
		while(q -- )
		{
			int l, r;
			scanf("%d%d", &l, &r);
			int flag = 0;
			for(int i = 1; i < l; ++ i) 
				if(str[i] == str[l]) 	
					flag = 1;
			for(int i = r + 1; i <= n; ++ i)
				if(str[i] == str[r]) 
					flag = 1;
			if(flag) printf("YES
");
			else printf("NO
");
		}		
	}
	return 0;
} 

C


#include <bits/stdc++.h>
using namespace std;
const int N = 2e6 + 10;

int n, k;
char a[N], b[N];
int ca[30], cb[30];

int main()
{
	int __;
	scanf("%d", &__);
	while(__ -- )
	{
		for(int i = 0; i < 26; ++ i) 
			ca[i] = cb[i] = 0;
		scanf("%d%d", &n, &k);
		scanf("%s%s", a + 1, b + 1);
		for(int i = 1; i <= n; ++ i) ca[a[i] - 'a'] ++;
		for(int i = 1; i <= n; ++ i) cb[b[i] - 'a'] ++; 
		int flag = 0;
		for(int i = 0; i < 26; ++ i) 
		{
			if(ca[i] < cb[i]) { flag = 1; break;}
			if((ca[i] - cb[i]) % k == 0)
				ca[i + 1] = ca[i + 1] + ca[i] - cb[i];
			else {flag = 1; break;}
		}
		if(flag) puts("No");
		else puts("Yes");
	}
	return 0;
} 

D


#include <bits/stdc++.h>
using namespace std;
typedef long long LL;

LL d, k;

int main()
{
	int __;
	scanf("%d", &__);
	while(__ -- )
	{
		scanf("%lld%lld", &d, &k);
		LL x = 0, y = 0, res = 0;
		while(x * x + y * y <= d * d)
		{
			if(x < y) x += k;
			else y += k;
			res ++;
		}
		if(res % 2 == 0) puts("Ashish");
		else puts("Utkarsh");
	}
	return 0;
} 

E1/E2


#include <bits/stdc++.h>
using namespace std;

const int N = 1 << 17;
int n, v[N], from[N], a[N];

int query(int op, int i, int j)
{ 
	if(op == 1) printf("AND"); 
	if(op == 2)	printf("XOR"); 
	printf(" %d %d
", i, j); fflush(stdout);
	int x;
	scanf("%d", &x);
	return x; 
} 

void print()
{
	printf("!");
	for(int i = 1; i <= n; ++ i) printf(" %d", a[i]);
	puts(""); 
}

void f(int x, int y) 
{
	a[x] = a[y] = query(1, x, y);
	a[1] = v[x] ^ a[x];
	for(int i = 2; i <= n; ++ i)
		a[i] = a[1] ^ v[i];
	print();
}

void g(int x, int y)
{
	int v1 = query(1, 1, x);
	int v2 = query(1, 1, y);
	for(int i = 0; i < 16; ++ i)
	{
		int u = 0;
		if(i == 0) u = (v2 >> i) & 1;
		else u = (v1 >> i) & 1;
		a[1] |= u << i;
		for(int j = 2; j <= n; ++ j)
			a[j] |= (u ^ ((v[j] >> i) & 1)) << i;
	}
	print();
}

int main()
{
	scanf("%d", &n);
	for(int i = 2; i <= n; ++ i) v[i] = query(2, 1, i);
	for(int i = 2; i <= n; ++ i)
		if(!v[i]) { f(1, i); return 0; }
	for(int i = 2; i <= n; ++ i)
		if(!from[v[i]]) from[v[i]] = i;
		else { f(from[v[i]], i); return 0; }
	g(from[1], from[2]);
	return 0;
} 

2020.11.23

原文地址:https://www.cnblogs.com/ooctober/p/14025226.html