尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
邪修卡常:动态bitset
由于 std::bitset 仅支持编译期固定大小无法动态确定长度这使得某些 ∑≤ 的多测题中使用 std::bitset 超时。于是我让 AI 生成了一份比赛中可用的动态bitset模版并且测试了其在部分板题里的性能。实现cpp#include iostream #include vector #include cstdint using namespace std; using u64 uint64_t; struct dynamic_bitset { int n; std::vectoru64 b; dynamic_bitset(int _n 0) : n(_n), b((_n 63) 6, 0) {} void resize(int new_n) { if (new_n n) return; b.resize((new_n 63) 6, 0); // 新块自动置零 n new_n; clean_tail(); } // 读取某一位只读不抛异常 bool operator[](int pos) const { return (b[pos 6] (pos 63)) 1; } // 设置某一位 void set(int pos, bool val true) { if (val) b[pos 6] | 1ULL (pos 63); else b[pos 6] ~(1ULL (pos 63)); } // 置零某一位 void reset(int pos) { b[pos 6] ~(1ULL (pos 63)); } // 翻转某一位 void flip(int pos) { b[pos 6] ^ 1ULL (pos 63); } // 位运算 dynamic_bitset operator(const dynamic_bitset rhs) { for (size_t i 0; i b.size(); i) b[i] rhs.b[i]; return *this; } dynamic_bitset operator|(const dynamic_bitset rhs) { for (size_t i 0; i b.size(); i) b[i] | rhs.b[i]; return *this; } dynamic_bitset operator^(const dynamic_bitset rhs) { for (size_t i 0; i b.size(); i) b[i] ^ rhs.b[i]; return *this; } dynamic_bitset operator~() const { dynamic_bitset res *this; for (auto x : res.b) x ~x; res.clean_tail(); return res; } // 1 的个数 int count() const { int ans 0; for (auto x : b) ans __builtin_popcountll(x); return ans; } // 清除尾部多余位 void clean_tail() { if (n 0) return; int rem n 63; if (rem) b.back() (1ULL rem) - 1; } }; // 非成员二元运算符方便书写 inline dynamic_bitset operator(dynamic_bitset a, const dynamic_bitset b) { return a b; } inline dynamic_bitset operator|(dynamic_bitset a, const dynamic_bitset b) { return a | b; } inline dynamic_bitset operator^(dynamic_bitset a, const dynamic_bitset b) { return a ^ b; }使用范例cppint main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); dynamic_bitset a(10),b; b.resize(10); a.set(1), a.set(2); b.flip(0); dynamic_bitset c(a|b); cout c.count() endl; return 0; }与 std::bitset 的区别不支持左移/右移[]只读无法通过 bit[0] 1 来置位。置位只能使用 set 和 reset 函数不支持 any、all 等函数这些也没什么必要输出不与 cout 兼容只能逐位遍历不支持转化整数和字符串与 std::bitset 的性能对比【模板】传递闭包std::bitset动态bitset[PA 2025] 集合 1 / Zbiory 1std::bitset动态bitset可以看到与 std::bitset 的性能差距还是比较明显。但是作为一种走投无路下的卡常手段动态bitset已经足够了。如果再追求优化可以考虑上 SIMD 指令集由于比赛中不确定是否能够使用这里不太推荐。
RELATED

相关推荐

定时器中断跨文件使用变量

定时器中断跨文件使用变量

1.初始化定时器1,定时器结构图2.步骤1.RCC开启时钟2.选择时基单元的时钟源(定时中断选择内部时钟源)3.配置时基单元(包括预分频器,自动重装器,计数模式等(用结构体配置))…

📅 2026/10/6 13:51:51
AhabAssistantLimbusCompany终极指南:智能自动化解放《Limbus Company》重复操作

AhabAssistantLimbusCompany终极指南:智能自动化解放《Limbus Company》重复操作

AhabAssistantLimbusCompany终极指南:智能自动化解放《Limbus Company》重复操作 【免费下载链接】AhabAssistantLimbusCompany AALC,PC端Limbus Company小助手。AALC,Limbus Company Assistant on PC 项目地址: https://gitcode.com/gh_mi…

📅 2026/10/6 12:24:18
为什么说Mermaid是程序员必备的文档神器?3个真实场景告诉你答案

为什么说Mermaid是程序员必备的文档神器?3个真实场景告诉你答案

为什么说Mermaid是程序员必备的文档神器?3个真实场景告诉你答案 【免费下载链接】mermaid Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid …

📅 2026/10/7 12:46:22
MORE NEWS

更多资讯

📰

ZXing BitMatrix 位矩阵全解:一个 int 如何扛起 32 个像素的二维码生成底层逻辑

ZXing BitMatrix 位矩阵全解:一个 int 如何扛起 32 个像素的二维码生成底层逻辑 【免费下载链接】zxing ZXing ("Zebra Crossing") barcode scanning library for Java, Android 项目地址: https://gitcode.com/gh_mirrors/zx/zxing 你以为的二维码…

📰

React Native 鸿蒙实战:view-shot 视图截图在 HarmonyOS 上的接入与使用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

DSH Desktop 快速上手:一键安装桌面AI智能体客户端

DSH Desktop 快速上手:一键安装桌面AI智能体客户端 【免费下载链接】deepseek-harness-desktop 为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。 项目地址: https://gitcode.com/gh_mirrors/de…

📰

TVS与ESD保护器件选型详解:从零理解静电、浪涌、参数计算与接口保护

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

离线会议纪要的硬件适配:没有独立显卡,也能本地生成纪要

离线会议纪要的硬件适配:没有独立显卡,也能本地生成纪要技术观察 阅读约 5 分钟本地化部署的语音转写工具,通常对硬件有一定门槛:显存不够,大模型跑不起来,会议纪要这种重负载任务更是如此。最近智转AI 预…

📰

全球DEM数据校验、格式选型与GIS地形分析实操

简介:面向GIS从业者与地理信息学习者的全球DEM地形数据获取文档,聚焦全球高程数据下载渠道分散、免费工具与学习资料难配套的问题。压缩包仅含1个docx文件,约12KB,篇幅精炼,集中整理全球范围DEM数据的百度网盘与天翼云…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬