1、早上
做周末的测试题,用第一个思路一直对不了,后来改正之后T了两个点。(3h)
2、下午
首先继续做早上那个题目,换了中思路之后改了一下可算对了。之后又继续做剩下来的两个题。(3.5h)
题解:对于给定的a、b出拳动作,我们都可以对每个序列进行改n次,使得最终a赢的次数最多。既然每队都能改n次,而总共出拳方案为2n,那么只要先将前n个出拳通过只改变a来使a全赢,后n个出拳动作通过改变b来使a全赢,那么整个序列就永远都能得到2n个a赢拳的次数。?
?
#include <stdio.h>
#define N 100010
int yp[4]={0,2,3,1},sp[4]={0,3,1,2};
int a[2*N],b[2*N];
main()
{int t,n,j;
scanf("%d",&t);
while(t--)
{scanf("%d",&n);
for(int i=0;i<2*n;i++)
scanf("%d",&a[i]);
for(int i=0;i<2*n;i++)
scanf("%d",&b[i]);
for(int i=0;i<n;i++)
if(sp[a[i]]==b[i]||a[i]==b[i])
a[i]=sp[b[i]];
for(int i=n;i<2*n;i++)
if(sp[a[i]]==b[i]||a[i]==b[i])
b[i]=yp[a[i]];
printf("%d\n",2*n);
for(int i=0;i<2*n;i++)
printf("%d ",a[i]);
printf("\n");
for(int i=0;i<2*n;i++)
printf("%d ",b[i]);
printf("\n");
}
}
3、晚上
首先在复习上周学习的知识,之后便进行上周知识点答辩。(2h)
今日学习总时长8.5h。
|