字节A了前3道,最后一道超时
public void exam1(){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n =in.nextInt();
int[][] rel = new int[n][n];
for(int i=0;i<n;i++)
for (int j=0;j<n;j++)
rel[i][j]=in.nextInt();
Set<Integer> all = new HashSet<>();
Set<Integer> tmp = new HashSet<>();
Queue<Integer> q = new ArrayDeque<>();
int ans=0;
for(int i=0;i<n;i++){
if(all.contains(i))
continue;
tmp.add(i);
for(int j=i+1;j<n;j++){
if(rel[i][j]>=3&&!all.contains(j)){
tmp.add(j);
all.add(j);
q.add(j);
}
}
while (!q.isEmpty()){
int k = q.poll();
for(int j=k+1;j<n;j++){
if(rel[k][j]>=3&&!all.contains(j)){
tmp.add(j);
q.add(j);
all.add(j);
}
}
}
ans++;
tmp.clear();
}
System.out.println(ans);
}
}
public void exam2(){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
if(n==2){
System.out.println(1);
continue;
}
int tmp = n/2;
long[] ans =new long[tmp+1];
ans[0]=1;
ans[1]=1;
ans[2]=2;
for(int i=3;i<tmp+1;i++){
for(int j=0;j<i;j++){
ans[i]+=ans[j]*ans[i-j-1];
if(ans[i]>1000000007)
ans[i]=ans[i]%1000000007;
}
}
System.out.println(ans[tmp]);
}
}
public void exam3(){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int direct = in.nextInt();
int[][] array = new int[4][4];
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
array[i][j]=in.nextInt();
rotate(array,direct);
for(int i=0;i<4;i++){
int loc =0;
int val =0;
for(int j=0;j<4;j++){
if(array[j][i]==0)
continue;
if(val ==0){
val=array[j][i];
continue;
}
if(val ==array[j][i]){
array[loc][i]=2*val;
loc++;
val=0;
continue;
}
array[loc][i]=val;
loc++;
val=array[j][i];
}
if(val!=0){
array[loc][i]=val;
loc++;
}
while (loc<4){
array[loc][i]=0;
loc++;
}
}
if(direct==3)
direct=4;
else if(direct==4)
direct=3;
rotate(array,direct);
for(int i=0;i<4;i++){
for(int j=0;j<4;j++)
System.out.print(array[i][j]+" ");
System.out.println();
}
}
}
public void rotate(int[][] array,int direct){
if (direct==1)
return;
if (direct==2){
int tmp;
for(int i=0;i<4;i++)
for(int j=0;j<2;j++){
tmp=array[j][i];
array[j][i]=array[3-j][i];
array[3-j][i]=tmp;
}
return;
}
if (direct==3){
int tmp;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++){
tmp = array[i][j];
array[i][j]=array[3-j][i];
array[3-j][i]=array[3-i][3-j];
array[3-i][3-j]=array[j][3-i];
array[j][3-i]=tmp;
}
}
if (direct==4){
int tmp;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++){
tmp = array[i][j];
array[i][j]=array[j][3-i];
array[j][3-i]=array[3-i][3-j];
array[3-i][3-j]=array[3-j][i];
array[3-j][i]=tmp;
}
}
} #笔试题目##字节跳动#
