# include <stdio.h>
int main ()
{
int num[2500][2];
int m,n,i,j,a,k=0;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
scanf("%d",&a);
if(a==1)
{num[k][0]=i;num[k][1]=j;k++;}
}
int mark=0;
for(i=0;i<k;i++)
{
if(num[i][0]==1||num[i][0]==n||num[i][1]==1||num[i][1]==m)
{mark=1;}
}
if(mark==1)
{printf("2\n");}
else
printf("4\n");
return 0;
}
主要是看边远地方有没有点 有的话就是2次 没有的话就是4次
# include <stdio.h>
int main ()
{
int n,k,mark=0;
scanf("%d %d",&n,&k);
int i,j;
for(i=1;i<=k;i++)
{
printf("%d %d",2*i,2*i-1);
if(i!=k) printf(" ");
mark=1;
}
for(j=i;j<=n;j++)
{
if(mark) {printf(" ");mark=0;}
printf("%d %d",j*2-1,j*2);
if(j!=n) printf(" ");
}
printf("\n");
return 0;
}
我假设的初始的数据时1 2 3 4 5 6..........然后这种状态下的数据可以满足k=0; 然后就是如果每两个一组 进行分组 比如 1和2 一组 3和4一组 以此类推 然后有几个K 就可以吧每组内的两个数对换位置 ……………………然后就是…………………………
这次的codeforces老衲竟然加分了 加了14分 !!!!!