2018年ACM-ICPC青岛区域赛 F题 Tournament

博客内容介绍了2018年ACM-ICPC青岛区域赛的F题——Tournament,该题涉及骑士之间的决斗赛表安排。题目要求根据输入的骑士数量n和决斗轮数k,确定每轮的对决组合,遵循特定的规则。当无法安排时,输出'Impossible'。博主给出了利用异或性质解决此问题的思路,并指出n的含2的因子与最大轮数的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目连接-浙大oj
题目

题目
Sample Input
2
3 1
4 3
Sample Output
Impossible
2 1 4 3
3 4 1 2
4 3 2 1
题意:
T 组测试用例
n个骑士 进行k轮决斗
每轮两个骑士为一组 下一轮更换对手 但上一轮一组的两人的对手上一轮也必须为一组
如:第一轮a-b、c-d, 第二轮 a-c 则b的对手为c上一轮的对手d(a对手的上一个对手)
输出k行决斗的赛表 每行n个数字 第i个数代表i的对手 (按字典序升序输出)
如:2 1 4 3 ,1号骑士对手为2号
若无法安排 输出Impossible

思路:
用异或的性质 0 1 2 3 分别异或 0 1 2 3得 0 1 2 3的四组不同排列(具体原理我也母鸡→_→)
n个人最多可分配轮数k=n&(-n),即n的含2的因子 4=>4 6=>2 8=>8
因为每轮交换对手以两组为单位

#include 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值