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

[题解]G. Puzzle II - The 3rd Universal Cup. Stage 2: Zielona Gra

[题解]G. Puzzle II - The 3rd Universal Cup. Stage 2: Zielona Gra
📅 发布时间:2026/6/20 3:37:29

#8523. Puzzle II

四句话题意

给定两个长由黑白球组成的环,每个环有 \(n\) 个球,且黑球和白球的总数都是 \(n\)。

你可以进行最多 \(n\) 次操作,每次操作选定两个环上长度恰为 \(k\) 的区间交换。

最终要使两个环都变成单色的。

请构造这个操作序列,无需最小化操作次数。

Solution

image

上图中,我们做了什么?

我们发现,可以使用两次交换,将 A, B 两球换到了对方的环上,而其他球所在的环不变。

显然必有一个环上的黑球 \(\le\dfrac{n}{2}\),不妨设是第一个环。每次操作将环一的黑球换到环二去,那么操作总数 \(\le 2\times \dfrac{n}{2}=n\)。所以必然能构造出来。

我么将环一上的黑球,环二上的白球记录下来。

然后我们发现,每次交换会让部分球变动一下位置,可以用树状数组找变动的区间,以及区间修改。

找变动区间如果用树状数组上倍增,是 \(O(n\log n)\) 的。

因为不好实现所以在树状数组外二分求的,是 \(O(n\log^2 n)\) 的。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=3e5+5;
int n,k,c,c1,c2;
string a,b;
inline int lb(int x){return x&-x;}
inline int adj(int x){return (x>n?x-n:(x<1?x+n:x));}
struct BIT{int s[N];inline void chp(int x,int v){for(;x<=c;x+=lb(x)) s[x]+=v;}inline int qry(int x){int a=0;for(;x;x-=lb(x)) a+=s[x];return a;}
}p1,p2;
inline void solve(int x,int y){int z1=p1.qry(x),z2=p2.qry(y);cout<<adj(z1+1)<<" "<<adj(z2-k+1)<<"\n"<<z1<<" "<<adj(z2-k+1)<<"\n";int l=x,r=c1;while(l^r){int mid=(l+r+1)>>1;if(p1.qry(mid)<=z1+k) l=mid;else r=mid-1;}p1.chp(x,-1),p1.chp(l+1,1);l=1,r=y;while(l^r){int mid=(l+r)>>1;if(p2.qry(mid)>=z2-k+1) r=mid;else l=mid+1;}p2.chp(l,1),p2.chp(y,-1);
}//x,y是否修改无影响
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>k>>a>>b;for(char i:a) c+=(i=='B');if(2*c>n){//保证A中黑球更少c=n-c;for(char &i:a) i^=1;for(char &i:b) i^=1;}cout<<2*c<<"\n";for(int i=1;i<=n;i++){if(a[i-1]=='B') p1.chp(++c1,i),p1.chp(c1+1,-i);if(b[i-1]=='C') p2.chp(++c2,i),p2.chp(c2+1,-i);}for(int i=1;i<=c1;i++){solve(i,c1-i+1);//x从前往后 y从后往前}//这样就相当于把遍历过的位置在BIT上删掉了return 0;
}

相关新闻

  • 2025年10月教育资源好的学习机品牌推荐:家长关注榜对比与实测排行
  • 2025年10月性价比高的学习机品牌推荐:市场销量榜解析高价值学习方案
  • 2025年评价高的汤锅不粘锅最新TOP厂家排名

最新新闻

  • 【FFmpeg】ffmpeg 命令行参数 ⑨ ( 使用 ffmpeg 进行音视频流处理 | 视频裁剪 / 缩放 / 旋转 / 水印 | 音频降噪 / 混音 / 格式转换 )
  • 3分钟学会:Rufus启动盘制作完整指南
  • 2026年6月宏宇陶瓷耐用吗,宏宇陶瓷,宏宇陶瓷怎么样 - 品牌推荐师
  • 2026年6月山东考察:不割韭菜的罐罐酸奶加盟项目,谷物全书为何获推荐? - 品牌鉴赏官2026
  • 2026邯郸2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水
  • MC9S12KG128电气特性深度解析:从数据手册到可靠硬件设计

日新闻

  • 信任的进化:技术实现详解——如何用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 号