1 条题解
-
0
自动搬运
来自洛谷,原作者为

yd021a
"May you, the beauty of this world, always shine."搬运于
2025-08-24 21:17:51,当前版本为作者最后更新于2025-06-14 20:28:34,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
解题思路
本题关键在于判断两人是否为种子选手:
-
非种子选手情况
若其中一人或两人都不是种子选手(编号 > ),则最小相遇轮次为 (非种子选手随机抽签)。 -
种子选手情况
若两人都是种子选手(编号 ≤ ),需计算他们的批次:- 通过位运算确定选手批次:满足 的最小 。
- 取两人批次最大值 。
- 相遇轮次公式:。
爱门!
代码实现
#include<bits/stdc++.h> using namespace std; int g(int x){ int l=0; while((1<<l)<x) l++; return l+1; } inline long long int read(){ long long int w=1,s=0; char ch; while(ch<'0'||ch>'9'){ if(ch=='-') w=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ s=s*10+ch-'0'; ch=getchar(); } return w*s; } int main(){ int s,t; s=read(),t=raed(); if (s>t) swap(s,t); if (s<=32&&t<=32){ // 两人均为种子选手 int a=g(s); int b=g(t); int maxx=max(a,b); cout<<8-maxx+1<<endl; } else{ // 至少一人非种子选手 cout<<1<<endl; } return 0; }算法解析
1. 批次计算函数
g(x)- 通过位运算
(1 << l) < x确定满足条件的最小l。 - 返回值
l + 1表示选手所在批次。 - 示例:
- → → 批次 。
- → → 批次 。
2. 相遇轮次计算原理
设批次为 ,根据赛制:
- 第 批种子占据 个位置。
- 两人相遇轮次公式:
3. 典型示例
选手编号 计算过程 相遇轮次 说明 (1, 2) 7 决赛相遇 (1, 3) 6 半决赛相遇 (33, 34) 非种子选手 1 第一轮相遇 时间复杂度:
我的题解就到此为止了,看完这篇以后,就是你来写了。(来自 的剧情感想)
-
- 1
信息
- ID
- 7690
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者