2018年ACM-ICPC青岛区域赛 F题 Tournament
发布时间
阅读量:
阅读量


题意
思路: 基于异或运算的特点, 将数值0,1,2,3分别与自身进行异或运算, 能够得到这四个数值各自对应的四种不同排列组合. (具体原理我也母鸡\rightarrow\_-) 计算时采用最低位1的位置来确定最大分配轮数k = n \& (-n), 比如当n =4时结果为4; 当n =6时结果为2; 当n =8时结果也为8. 在每一轮交换对手的过程中,默认是以两个一组来进行操作.
#include <iostream>
#include <cstdio>
using namespace std;
int n,m,k;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
if(m>=(n&(-n)))
{
puts("Impossible");
continue;
}
for(int j=1; j<=m; j++)
{
for(int i=0; i<n; i++)
{
printf("%d%c",(i^j)+1,i==n-1?'\n':' ');
}
}
}
return 0;
}
全部评论 (0)
还没有任何评论哟~
