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

#贪心,高维前缀和,状压dp#CF1208F Bits And Pieces ARC100E - Or Plus Max

ARC100E - Or Plus Max

题目

对于每个 \(k\in (0,2^n)\),求 \(a_i+a_j(0\leq i<j\leq k)\) 的最大值。


分析

可以发现 \(\max_{i\& k==i}a_i\) 可以通过高维前缀和实现,而另一个相当于是次大值,

因此维护最大值和次大值加起来再进行前缀最大值即可。


代码

#include <iostream>
#include <algorithm>
using namespace std;
const int N=262144;
int n,mx[N],se[N];
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n;for (int i=0;i<(1<<n);++i) cin>>mx[i],se[i]=0xc0c0c0c0;for (int j=0;j<n;++j)for (int i=1;i<(1<<n);++i)if ((i>>j)&1){if (mx[i]<mx[i^(1<<j)]) se[i]=mx[i],mx[i]=mx[i^(1<<j)];else if (se[i]<mx[i^(1<<j)]) se[i]=mx[i^(1<<j)];if (mx[i]<se[i^(1<<j)]) se[i]=mx[i],mx[i]=se[i^(1<<j)];else if (se[i]<se[i^(1<<j)]) se[i]=se[i^(1<<j)];}mx[0]+=se[0];for (int i=1;i<(1<<n);++i){mx[i]=max(mx[i-1],mx[i]+se[i]);cout<<mx[i]<<'\n';}return 0;
}

CF1208F Bits And Pieces

题目

\(1\sim n\) 中,找出三元组 \((i,j,k),i<j<k\),求 \(a_i|(a_j\&a_k)\) 的最大值。


分析

这个表达式全是位运算,我们可以类似线性基一样贪心,那么当判定答案为 \(ans\) 时,对于每个 \(a_i\)

检验 \(ans\ xor\ (ans\ \&\ a_i)\) 是否能在下标超过 \(i\) 的两个数所表示,那么相当于是上一题的下标和值调换,做法是类似的,判定次大下标是否超过 \(i\)


代码

#include <iostream>
#include <algorithm>
using namespace std;
const int N=2097152;
int n,mx[N],se[N],m,MX,a[N],ans;
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n;for (int i=1;i<=n;++i){cin>>a[i];if (mx[a[i]]) se[a[i]]=mx[a[i]],mx[a[i]]=i;else mx[a[i]]=i;MX=MX<a[i]?a[i]:MX;}for (m=1;(1<<m)<=MX;++m);for (int j=0;j<m;++j)for (int i=0;i<(1<<m);++i)if ((i>>j)&1){if (mx[i^(1<<j)]<mx[i]) se[i^(1<<j)]=mx[i^(1<<j)],mx[i^(1<<j)]=mx[i];else if (se[i^(1<<j)]<mx[i]) se[i^(1<<j)]=mx[i];if (mx[i^(1<<j)]<se[i]) se[i^(1<<j)]=mx[i^(1<<j)],mx[i^(1<<j)]=se[i];else if (se[i^(1<<j)]<se[i]) se[i^(1<<j)]=se[i];}for (int i=m-1;~i;--i){int now=ans|(1<<i);for (int j=1;j<=n;++j)if (se[now^(now&a[j])]>j){ans|=1<<i;break;}}cout<<ans;return 0;
}
http://www.jsqmd.com/news/65874/

相关文章:

  • 深夜有感——关于论文构思idea的时候该如何进行细化
  • word技巧积累:解决“调节了单倍行距,行距依然很大”的问题
  • 20232303 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 251208
  • 模法
  • 20232307 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 阅读笔记8
  • 阅读笔记7
  • 12.8
  • 足球有救了?清华大学机器人踢出一脚好球
  • OEM 5K0905861C ELV Emulator for 2014-2015 VW Sagitar/Lavida/Tiguan – Fix Steering Lock Issues
  • Genuine OEM BMW CIC 10Pin Navigation Switch for 5/7 Series 2009-2014 (Three Boards)
  • [硬核对比] 进程 vs 线程 vs Java线程:状态模型的“套娃”游戏
  • 科研人必藏!生物医学高分顶刊合集
  • JAVA学习随笔-DAY2
  • YANHUA Toyota R7F701401 Unencrypted Interface Board (Module 35) for Mileage Correction
  • Git安装详细版
  • Polaris.AI Programming Contest 2025(AtCoder Beginner Contest 429)
  • 折腾笔记[39]-使用Scala3的Storch计算
  • day03 指针应用和文件操作
  • ZenMux 企业级大模型聚合平台,免费试用模型 Gemini 3 Pro
  • 102302139 尚子骐 数据采集与融合作业4
  • 代码随想录32_动态规划基础
  • vsc_backgroud_css小记
  • 3、缺陷管理
  • SGLang 的 DP Attention 模式浅析 - -银光
  • 每日反思(2025年12月7号)
  • 记我第一次代码审计 (bluecmsv1.6的sql注入复现)
  • 每日3题 2(暂鸽)
  • K8S的Service