【比赛记录】10.18 Codeforces Round #676 (Div. 2)

A

题目大意:给定\(a,b,\)\(\min\left\{(x⊕a)+(x⊕b)\right\}\)

\(⊕\)是异或。

\(\text{solution:}\)

显然答案应该是\(a xor b.\)令两个括号其中一者为\(0\)即可。

#include<bits/stdc++.h>
using namespace std;
int main(){
	int T;
	scanf("%d",&T);
	while(T--){
		int a,b;
		scanf("%d%d",&a,&b);
		cout<<min((a^b),(a^b))<<endl;
	}
	return 0;
}

B

题目大意:起点\((1,1)\)终点\((n,n),\)矩阵中有\(0/1,\)四联通,只能走数字一样的地方,问能不能改变最多两个格子使得从起点无法到达终点。

\(\text{solution:}\)

考虑对起点和终点周围的两个格子分类讨论即可。

#include<bits/stdc++.h>
using namespace std;
int T,n,a[501][501];
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		for(int i=1;i<=n;++i){
			for(int j=1;j<=n;++j){
				char c;
				cin>>c;
				if(i+j==2||i+j==n+n)continue;
				a[i][j]=c-'0';
			}
		}
		int ans=0;
		int c1=0,c2=0;
		if(a[1][2]==1)c1++;
		if(a[2][1]==1)c1++;
		if(a[n][n-1]==0)c1++;
		if(a[n-1][n]==0)c1++;
		if(a[1][2]==0)c2++;
		if(a[2][1]==0)c2++;
		if(a[n][n-1]==1)c2++;
		if(a[n-1][n]==1)c2++;
		ans=min(c1,c2);
		printf("%d\n",ans);
		if(ans==0)continue;
		if(ans==c1){
			if(a[1][2]==1)cout<<"1 2\n";
			if(a[2][1]==1)cout<<"2 1\n";
			if(a[n][n-1]==0)cout<<n<<" "<<n-1<<endl;
			if(a[n-1][n]==0)cout<<n-1<<" "<<n<<endl;
		}
		else{
			if(a[1][2]==0)cout<<"1 2\n";
			if(a[2][1]==0)cout<<"2 1\n";
			if(a[n][n-1]==1)cout<<n<<" "<<n-1<<endl;
			if(a[n-1][n]==1)cout<<n-1<<" "<<n<<endl;
		}
	}	
	return 0;
}

C

题目大意:给定一字符串,有两种操作,选择\(i\in (1,n),s\to s_is_{i-1}...s_2+s\)\(s\to s+s_{n-1}s_{n-2}...s_i\)使得\(s\)变为一个回文串。

\(\text{solution:}\)

考虑成套方法:

  • 进行\(\text{L 2}\)使得字符串变为\(s.s.....\)

  • 进行\(\text{R 3}\)使得字符串变为\(s.s..........s\)

  • 进行\(\text{R 2}\)使得字符串变为\(s.s..........s..........s.\)

  • 进行\(\text{R lastpos-1}\)使得字符串变为\(s.s..........s..........s.s\)

容易发现,上述字符串满足题目要求。

#include<bits/stdc++.h>
using namespace std;
char s[100001];
int main(){
	scanf("%s",s+1);
	puts("4");
	int g=strlen(s+1),L=strlen(s+1);
	puts("L 2");
	g++;
	puts("R 3");
	g+=(g-3);
	g+=(g-2);
	puts("R 2");
	cout<<"R "<<g-1<<endl;
	return 0;
}
posted @ 2020-10-18 20:08  Refined_heart  阅读(178)  评论(0编辑  收藏  举报