当前位置: 首页 > news >正文

[SYSUCPC 2025] Gray Transform (Weakened)

同步发布于 here。

用树状数组优化了一下的解法。虽然我也不知道优没优化

做法

首先这个格雷码明显可以预处理。

然后对于一次操作一,因为我们 \(\sum m \le 5000\),所以其实我们直接暴力的枚举就可以了,但是我复杂度算错了,以为成了 \(O(q^22^n)\),那肯定过不了啊,然后我就写了一个 BIT,这样优化到了我以为的 \(O(q^2 n)\),实则应该是 \(O(q n)\)

具体实现就是我们用 BIT 维护 \([1,2^{k_i} - 1]\) 区间的修改次数,因为格雷码 \([2^n,2^{n+1} - 1]\) 是有环的,我们就可以在环中去做,这样我们求出对应的修改次数后模环长后暴力修改的时间复杂度也是对的。

有人会说题目中不是说要求 \(a_j < 2^{k_i}\) 才修改吗,但是我们的循环节最大的位置是到 \(2^n-1\) 的,所以如果一个位置被修改则这个位置一定在下一次有 \(j < 2^{k_i}\) 还能被修改。

对于操作二我们就如上面所说求一下第 \(i\) 个点的修改次数,对环长取模后暴力修改即可,时间复杂度 \(O(q 2^ n)\)

时间复杂度应该是 \(O(2^n + q n + q 2^n)\)

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr int N = 1e6 + 66;
int n, m;
vector<int> v[N];
int a[N];
struct BIT{int tr[N];int lowbit(int x){return x & -x;}void add(int x, int v){for(;x <= n;x += lowbit(x)) tr[x] += v;}ll query(int x){int res = 0;for(;x;x -= lowbit(x)) res += tr[x];return res;}
}b;//树状数组
int ck(string s)//二进制转十进制
{int res = 0, p = 1;for(int i = s.size() - 1;i >= 0;i --, p *= 2) res += (s[i] - '0') * p;return res;
}
string ckk(int x)//十进制转二进制
{string s;if(x == 0) s = "0";while(x) s += (char)(x % 2 + '0'), x /= 2;reverse(s.begin(), s.end());return s;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);v[1] = {0, 1};for(int i = 2;i <= 10;i ++){int p = 1 << i - 1;v[i] = v[i - 1];//前面的和 n-1 一样for(int j = v[i - 1].size() - 1;j >= 0;j --) v[i].push_back(v[i - 1][j] + p);//后面的按题意模拟}//预处理格雷码cin >> n >> m;n = 1 << n;for(int i = 0;i < n;i ++) a[i] = i;while(m --){int op, l, x;cin >> op;if(op == 1){cin >> l;for(int i = 1;i <= l;i ++){cin >> x;x = 1 << x;//实际下标b.add(1, 1);b.add(x, -1);//差分}}else {string s;cin >> s;l = ck(s);x = b.query(l);//修改次数x %= 1 << ((int)log2(l) + 1);//实际要走的步数int ans = a[l];//原位置while(x --) ans = v[10][ans];//直接在最大的格雷码上走就可以了,因为前面都是一样的cout << ckk(ans) << '\n';}}return 0;
}
http://www.jsqmd.com/news/925137/

相关文章:

  • 风震联合作用下高层建筑主体结构和玻璃幕墙的性能研究(二)
  • 深度解析Java WebP图像处理:WebP ImageIO实战性能优化完全指南
  • RimSort:告别《RimWorld》模组冲突的终极解决方案
  • 【算法分析与设计】第25篇:在线算法与竞争比分析
  • 茉莉花插件:3步彻底解决Zotero中文文献管理的终极指南
  • 2026降AIGC突围战:降AIGC工具实测TOP榜与安全选型攻略
  • 琅琊区26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化
  • Playnite插件生态:5种改变游戏库管理体验的扩展方案
  • 2026重庆除甲醛公司服务商避坑指南,这样选才安心 - GrowthUME
  • 【3FS】toml格式
  • Arduino记忆游戏机开发:从随机数生成到PCB设计的嵌入式实践
  • 【算法分析与设计】第26篇:参数化算法与固定参数可解性理论
  • Arduino飞机发射模拟系统:从硬件集成到状态机编程实践
  • 5分钟掌握KS-Downloader:免费获取无水印快手视频的完整解决方案
  • WebDriver Manager实战指南:自动化测试驱动管理的终极解决方案
  • 【算法分析与设计】第27篇:近似算法设计:贪心近似与局部搜索
  • 如何快速掌握Montserrat字体:设计师必备的完整使用指南
  • 咸阳空调维修加冷媒【靠谱口碑好】30分钟快速上门 - GrowthUME
  • 咸阳志高空调维修加冷媒电话|人民中路老牌专业上门维修 - GrowthUME
  • Codex最新客户端下载与使用限制说明:续费后额度会重置吗?
  • 祁门县26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化
  • ncmdumpGUI:免费快速解密网易云NCM音乐的完整指南
  • Gemini捐赠活动策划全流程拆解(从冷启动到裂变爆发的12个关键决策节点)
  • CSDN AI数字营销博客模板测评:我的真实体验与价值分析
  • Gemini API成本暴增预警!4类高频误用模式致账单飙升300%,附Google Cloud优化配置快照
  • 基于LoRa与GPS的物联网追踪器:从硬件选型到低功耗部署实战
  • Cortex-R4/R5 MPU配置详解与实战指南
  • 2026 连云港长途搬家公司权威榜单发布,大富豪搬家稳居榜首 - 资讯纵览
  • 【算法设计与分析】第29篇:启发式与元启发式搜索方法综述
  • 潜山市26年最新奢侈品名包名表专业回收权威店铺推荐 - 莘州文化