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

260228A. 典

长为 \(m\) 的序列 \(a\) 的权值为 \(W(a)=a_1+\left(\displaystyle\sum_{i=1}^{m-1}a_i\oplus a_{i+1}\right)+a_m\)

给定一个长为 \(n\) 的序列 \(a\),你可以选择任意多个数修改为任意值。

最小化 \(pC+W(a')\),其中 \(a'\) 为最终的序列,\(p\) 为选择个数,\(C\) 为给定常量。

\[n\le2\times10^5,a_i\le2^{18} \]


\(2^{18}\approx2.6\times10^5\),所以 \(n\)\(V\) 同阶。

首先注意到,修改一个数等价于删去它。总是把选中的数改为与其前驱相同即可。

那么问题转化为求 \(a\) 的一子序列 \(b\) 最小化 \((n-|b|)C+W(b)\),即最小化 \(W(b)-|b|C\)

考虑一个 dp,设 \(f_i\) 表示 \(b\)\(a_i\) 结尾的最小代价,显然有转移:

\[f_i=\min_{j<i}f_j+a_j\oplus a_i-C \]

把下标放到值域上,我们需要维护这样的东西:

\[f_u=\min f_v+u\oplus v \]

一种方法是使用高低位分块优化,令 \(H(x)\) 表示 \(x\) 的高 \(9\) 位,\(L(x)\) 表示 \(x\) 的低 \(9\) 位。

设辅助数组 \(g_{x,y}\) 表示所有高 \(H(v)=y\)\(v\) 中,\(f_v+L(v)\oplus x\) 的最小值。

更新 \(f_v\) 时只需枚举 \(x\) 更新,求解 \(f_u\) 时只需枚举 \(y\) 计算 \(g_{L(u),y}+H(x)\oplus y\) 的最小值。

复杂度 \(\mathcal O(n\sqrt V)\)

第二种方法是注意到上式换元可得:

\[f_{u\oplus v}=\min f_v+u \]

相当于是 \(f\)\(id\)(min,xor) 卷积。由于 \(id\) 满足位独立可加性,我们可以用一种 FWT 变体解决。

具体地,枚举第 \(d\) 位上的每一对数 \(f^-,f^+\),更新 \(f^-=\min(f^-,f^++2^d)\)\(f^+\) 同理。

那么我们分块,每块做一次 FWT,块内暴力转移,可以平衡到 \(\mathcal O(n\sqrt{V\log V})\)

code

#include <algorithm>
#include <iostream>
const int N = (1 << 18);
typedef long long i64;
const i64 inf = 1e18;i64 w[N];
inline void work() {for(int j = 1; j < N; j <<= 1) {for(int i = 0; i < N; ++i) {w[i] = std::min(w[i], w[i^j] + j);}}
}i64 C, dp[N];
int n, v[N];
const int B = 1800;
inline void solve() {std::cin >> n >> C; for(int i = 1; i <= n; ++i) std::cin >> v[i];for(int i = 1; i < N; ++i) w[i] = inf;w[0] = dp[0] = -C, v[n + 1] = 0;for(int l = 1; l <= n + 1; l += B) {int r = l + B - 1;work();for(int i = l; i <= r; ++i) {dp[i] = w[v[i]];for(int j = l; j < i; ++j) {dp[i] = std::min(dp[i], dp[j] + (v[i] ^ v[j]));}dp[i] -= C;w[v[i]] = std::min(w[v[i]], dp[i]);}}std::cout << dp[n+1] + C*(n+2) << "\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.jsqmd.com/news/442873/

相关文章:

  • 铜覆钢接地线价格多少钱,铸铁成金铜覆钢性价比高吗 - 工业品网
  • 2026年抛丸机品牌供应商哪家好,优抛库机械值得选购吗 - mypinpai
  • 赶deadline必备! 8个降AIGC软件测评:专科生降AI率必看
  • 京东 E 卡闲置别浪费!过来人亲测靠谱回收避坑攻略 - 团团收购物卡回收
  • 2026竞悦电竞酒店联营计划推荐,提升品牌形象的合作模式 - 工业品网
  • 评测2026年新型PVC格栅管:国内厂商技术亮点解析,九孔梅花管/PE穿线管/PE拖拉管,pvc格栅管供应商推荐排行 - 品牌推荐师
  • 聊聊2026年广州瓷像打印机源头厂家,理光瓷像打印机口碑排名 - 工业品牌热点
  • 上海全域上门漏水检测维修机构排行榜 防水补漏公司权威汇总 - shruisheng
  • 分析广东名企就业规划机构,哪家推荐且价格合理? - myqiye
  • 2026年3月武汉物流/国内物流货运/省内物流货运运输服务商综合评测与选型指南 - 2026年企业推荐榜
  • 做海外人力资源服务的公司有哪些?英国名义雇主EOR服务商推荐 - 品牌2026
  • 2026年口碑好的滤油机公司推荐,分析升亿滤油机的安全性如何 - 工业推荐榜
  • 一篇文章彻底搞懂 MySQL 和 Redis:原理、区别、项目用法全解析(建议收藏)
  • Windows系统下顺利安装并运行OpenClaw
  • 西安婚纱摄影权威排名发布!蒙娜丽莎荣登榜首 - charlieruizvin
  • 2026陕西不锈钢、景观、泡沫、玻璃钢雕塑哪家好?五大推荐榜单揭晓:耐久美学赋能城市公共艺术 - 深度智识库
  • IC工程师常用linux命令(持续更新ing)
  • 少走弯路:8个降AIGC软件测评,本科生降AI率必备指南
  • 2026年2月,盘点那些做得好的精密铸造公司,熔模铸造/失蜡铸造/硅溶胶精密铸造/硅溶胶铸造,精密铸造生产厂家哪家好 - 品牌推荐师
  • 2026年pdfClaw免费PDF转Word工具使用体验与功能解析
  • 从价格到技术:挑选超高聚乙烯挤出助剂厂家的避坑指南 - 品牌推荐大师
  • 写作压力小了,AI论文网站 千笔·专业学术智能体 VS 学术猹
  • 日增2亿条日志的架构突围:从文档型瓶颈到多模态底座的性能演进
  • 基于Freescale MC9S12XEP100与uC/OS-II的充电桩项目实现方案
  • 小白实测:外出办公用移动数据热点,远程连接NAS的虚拟局域网稳定性咋样?
  • 2026年3月合肥公考/公务员考试/事业单位考试/编制考试/国考培训机构口碑榜:三家实力机构深度解析 - 2026年企业推荐榜
  • python基于协同过滤算法的理财产品推荐系统
  • 2026年混凝土岩石压缩试验机怎么选择,靠谱厂商大揭秘 - 工业设备
  • 粗粒土压缩试验机多少钱,东华卓越产品质量和服务靠谱吗? - 工业设备
  • 【黑客技术】远程代码执行(RCE)漏洞详解:从入门到精通,网络安全必学知识,建议收藏