尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CF234G Practice - crazy-

CF234G Practice - crazy-
📅 发布时间:2026/6/20 7:03:02

这道题其实挺难想的,我最开始想的是 \(n-1\) 的构造方式,再加上好损友的亿点提示(关键部分没听他的),接着是 \(\dfrac{n}{2}\) 的构造,最后才是正解 \(\lceil \log _2 n \rceil\)

题目传送门

题意

现在有 \(n\) 个人进行比赛(编号从 \(1\) 到 \(n\)),每次把这 \(n\) 个人不遗漏地分成两队进行比赛。

请构造一种比赛方式,使得比赛次数尽可能少,并且每两个人之间都在不同队比赛过。

思路

首先,最简单的思路就是,\(n-1\) 轮,每个人和其他没有和他比过赛的人比赛。

很明显,这不是最优的。

接着,考虑优化。(中间 \(\dfrac{n}{2}\) 的想法忘了咋搞了就不说了)

可以先让 \(n\) 个人分成两队比赛,然后对内再进行比赛,以此类推。

我们可以把比赛过程想象成一棵树。这里用 \(n=10\) 举例。

img

第一种情况可以这么分,那么第一场比赛就是 \([1,5]\) 和 \([6,10]\) 打。

接着,\([1,5]\) 和 \([6,10]\) 要在内部进行比赛。

img

那么,很关键的一步,\([1,2]\) 和 \([3,5]\) 要在内部打,\([6,7]\) 和 \([8,10]\) 要在内部打。那,我们可以将 \([1,2]\) 和 \([6,7]\) 分到一队,\([3,5]\) 和 \([8,10]\) 分到另一队,这时候,虽然有些人会重复打,但是我们把两场比赛合并为了一场,简化了操作数量。

也就是说,他们实际上各打各的,互不干扰,只不过名义上是一支队伍罢了。

接着继续分,我就不过于详细的解释了。

img

也就是说,我们可以构造一个长度为\(n\)的线段树,每次输出其叶子节点中的左节点即可。

在程序实现上,不需要真的构建出一个线段树,只需要维护其全部叶子节点即可。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
void FASTIN();
struct range
{int l,r;int root;//0 左节点 1 右节点
}f[1010],t[1010];
void play(int n)
{int ans=0,cnt=0;for(int i=1;i<=n;i++){if(f[i].l==f[i].r) continue;int mid=(f[i].l+f[i].r)>>1;//分成左右两个部分,也就是内部继续对打cnt++;t[cnt].l=f[i].l,t[cnt].r=mid,t[cnt].root=0;cnt++;t[cnt].l=mid+1,t[cnt].r=f[i].r,t[cnt].root=1;ans+=mid-f[i].l+1;}for(int i=1;i<=cnt;i++) f[i]=t[i];cout<<endl;cout<<ans<<" ";bool flag=0;for(int i=1;i<=cnt;i++){if(!f[i].root){for(int j=f[i].l;j<=f[i].r;j++) cout<<j<<" ";}if(f[i].l!=f[i].r) flag=1;}cout<<endl;if(flag) play(cnt);
}
void run()
{int n,ans=0;cin>>n;while((1<<ans)<n) ans++;cout<<ans<<endl;f[1].l=1,f[1].r=n;play(1);
}
int main()
{freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);FASTIN();int t=1;// cin>>t;while(t--) run();system("pause");return 0;
}
void FASTIN()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
}

相关新闻

  • 实习面试题-MapReduce 面试题
  • 软件工程期末考试-数据流图、状态图、用例图、类图等怎么画?
  • 储能系统双向 DCDC 变换器双闭环控制:解锁蓄电池充放电仿真的奥秘

最新新闻

  • 品牌视觉操作系统:用AI实现可追溯、可迭代的VI设计
  • Python毕业设计-基于 Django 与协同过滤算法的图书推荐系统的设计与实现 融合协同过滤算法的智能图书推荐平台(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 2026年6月头部宠物皮肤科医院推荐,宠物眼科/猫咪体检/异宠/宠物皮肤/宠物骨科/猫咪绝育/宠物,宠物皮肤科专家找哪家 - 品牌推荐师
  • 深入解析MPC8360E/MPC8358E处理器接口电气特性与硬件设计实践
  • LLM嵌入技术在表格数据预测中的应用与实践
  • 渗透测试实战:CDN绕过与子域名爆破核心技术解析

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号