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

P13617 [ICPC 2024 APC] Bit Counting Sequence

P13617 [ICPC 2024 APC] Bit Counting Sequence


对于一个非负整数 \(x\),令 \(p(x)\)\(x\) 的二进制表示中 1 的个数。例如,\(p(26)=3\),因为 \(26=(11010)_2\)

给定长为 \(n\) 的整数序列 \((a_1, a_2, ..., a_n)\),判断是否存在一个非负整数 \(x\),使得序列 \((p(x), p(x+1), ..., p(x+n-1))\)\((a_1, a_2, ..., a_n)\) 相等。此外,如果存在,你需要计算满足条件的最小的 \(x\)


假设整个序列里面的最小值 \(\ge 2\),那么我们会发现解 \(x_0\) 的最高位始终没有变过,否则变化的时刻 \(a_t\) 应为 \(1\)

所以我们可以去掉 \(x_0\) 的最高位然后考虑剩下的子问题。

重复这个过程相当于整体减 \(1\) 直到整个序列的最小值为 \(1\)

又因为 \(1\) 所在位置必然是 \(2\) 的整数次幂,只有 \(\mathcal O(\log)\) 种取值,暴力 check 即可!


感谢 @wing_heart ,她的思路给了我很大启发!

#include <algorithm>
#include <iostream>int n, v[500007];
#define p(x) (1ll<<(x))inline void solve() {std::cin >> n;auto check = [](auto&& beg) {for(int i = 0; i < n; ++i)if(v[i] != __builtin_popcountll(i + beg))return 0;return 1;};int min = 100, post = -1;for(int i = 0; i < n; ++i) {	std::cin >> v[i];if(v[i] <= min) min = v[i], post = i;}if(min == 0) {std::cout << (check(0) ? "0\n" : "-1\n");return ;}--min; for(int i = 0; i < n; ++i) v[i] -= min;for(int i = 0; i <= 60; ++i)if(p(i) >= post && check(p(i) - post))return std::cout << (p(i) - post + p(i + min + 1) - p(i + 1)) << "\n", void();std::cout << "-1\n";
}int main() {std::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);int t; std::cin >> t; for(; t--; ) solve();
}
http://www.gsyq.cn/news/10523.html

相关文章:

  • 打一局吗(60pts 解法)
  • 2025.9.23——1绿
  • 2025.9.23
  • 第6.2节 Android Agent制作<三>
  • LVS 服务器 知识
  • 【有源码】基于LTM模型+大素材的电信客户流失数据分析系统-基于机器学习的电信客户流失预测与分析框架-基于客户画像的电信流失用户识别与分析平台
  • Apifox-windows-latest.exe 安装教程(附详细步骤,一键下载安装指南)​
  • PyTorch图神经网络(四)
  • 告别材料乱堆、用电违规!AI 施工监测系统覆盖重点施工场景隐患
  • Computer Architecture
  • Nordic 的支持对Matter 协议的支持;
  • Avalonia 学习笔记06. Page Layout(页面布局)
  • NRF54L15 两者结合的jlink保护机制(硬件+软件)
  • 个人对软件工程的理解
  • 用C/C++重构PowerShell:全面绕过安全机制的技术解析
  • Which side of a 2d curve is a point on
  • HTTPS 映射如何做?(HTTPS 映射配置、SNI 映射、TLS 终止、内网映射与 iOS 真机验证实战) - 指南
  • 大三上第一篇日志
  • 0923模拟赛总结
  • Hive采用Tez引擎出现OOM的处理办法
  • VMware之后下一个消失的永久许可,Citrix Netscaler VPX旧版许可已经失效了!你升级了吗?
  • Feminism in China
  • 大模型微调示例四之Llama-Factory-DPO - 教程
  • n8n+MySQL实现数据库查询!
  • firewalld 端口流量转发
  • Day20封装的初步认识
  • 【Qt开发】显示类控件(三)-> QProgressBar - 详解
  • 完整教程:数据结构与算法-树和二叉树-二叉树的存储结构(Binary Tree)
  • 工业相机与镜头靶面尺寸的关系:从原理到选型的避坑指南 - 教程
  • 提供优雅报错能力