CF1208F Bits And Pieces

传送门

思路

这里要运用SOS-DP的思路(\(\text{Sum over Subsets}\))。我在另外一篇博客里介绍过,如有需要可以搜索一下我的博客。

SOS-DP是记录每个\(mask\)所有子集的信息,而这道题只需要记录每个\(mask\)所有超集的信息即可。\(dp[mask]\)记录的是能满足\(mask\)是其的子集的所有数中坐标最大的两个。我们枚举\(a_i\),然后贪心的按位取就可以了。具体细节可以看代码。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn (int)(5194304)
using namespace std;
int n,a[maxn],mi=0;
struct gg{
int key1,key2;
gg(int k1=0,int k2=0){key1=k1,key2=k2;}
}dp[maxn];
void insert(int num,int val){
if(val>dp[num].key1){
dp[num].key2=dp[num].key1;
dp[num].key1=val;
}
else if(val>dp[num].key2){
dp[num].key2=val;
}
return;
}
void init(){
for(int i=1;i<=n;i++)insert(a[i],i);
for(int i=0;i<=22;i++){
for(int j=0;j<=2e6;j++){
if((1<<i)&j){
insert((1<<i)^j,dp[j].key1);
insert((1<<i)^j,dp[j].key2);
}
}
}
}
bool test(int mask,int num){
if(dp[mask].key2>=num)return 1;
return 0;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
init();
for(int i=1;i<=n-2;i++){
int check=0;
for(int j=21;j>=0;j--){
if((1<<j)&a[i])continue;
if(test(check^(1<<j),i))check^=(1<<j);
}
mi=max(mi,check|a[i]);
}
printf("%d",mi);
return 0;
}

参考资料

CodeForces -1208F Bits And Pieces

CF1208F Bits And Pieces的更多相关文章

  1. Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) F. Bits And Pieces sosdp

    F. Bits And Pieces 题面 You are given an array

  2. Codeforces 1208F Bits And Pieces 位运算 + 贪心 + dp

    题意:给你一个序列a, 问a[i] ^ (a[j] & a[k])的最大值,其中i < j < k. 思路:我们考虑对于每个a[i]求出它的最优解.因为是异或运算,所以我们从高位向 ...

  3. Codeforces F. Bits And Pieces(位运算)

    传送门. 位运算的比较基本的题. 考虑枚举\(i\),然后二进制位从大到小考虑, 对于第\(w\)位,如果\(a[i][w]=1\),那么对\(j.k\)并没有什么限制. 如果\(a[i][w]=0\ ...

  4. Codeforces 1208F - Bits And Pieces(高维前缀和)

    题面传送门 题意:求 \(\max\limits_{i<j<k}a_i|(a_j\&a_k)\). \(1\leq n \leq 10^6,1\leq a_i\leq 2\time ...

  5. [算法模板]SOS DP

    [算法模板]SOS DP 正文 SOS-DP(\(\text{Sum over Subsets}\))是用来解决这样的问题的: 其实就是子集和DP.上面每个\(F[mask]\)里面包含了\(mask ...

  6. 分享20个最新的免费 UI 设计素材给设计师

    用户界面设计涉及到很多的创意,灵感以及需要与客户进行有效沟通的技能.良好的用户界面是一致的,可以使网站更容易理解和使用.UI设计的重点在于用户体验和互动,同时易于使用对于一个成功的移动应用程序来说非常 ...

  7. 《The Elder Scrolls V: Skyrim》百般冷门却强力职业

    <The Elder Scrolls V: Skyrim>百般冷门却强力职业 1.有如成龙平常的杂耍型战斗窃贼 每次看帖都察觉大伙一贯在强调窃贼不需要防御,窃贼不需要血,窃贼就是一击致命, ...

  8. Programming Entity Framework 翻译(2)-目录2-章节

    How This Book Is Organized 本书组织结构 Programming Entity Framework, Second Edition, focuses on two ways ...

  9. Computer Graphics Research Software

    Computer Graphics Research Software Helping you avoid re-inventing the wheel since 2009! Last update ...

随机推荐

  1. web应急:新闻源网站劫持

    新闻源网站一般权重较高,收录快,能够被搜索引擎优先收录,是黑灰产推广引流的必争之地,很容易成为被攻击的对象.被黑以后主要挂的不良信息内容主要是博彩六合彩等赌博类内容,新闻源网站程序无论是自主开发的还是 ...

  2. 前端学习:学习笔记(JS部分)

    前端学习:学习笔记(JS部分) 前端学习:JS学习总结(图解)    JS的简介 JS基本语法 JS内置对象 JS的函数 JS的事件 JS的BOM JS的DOM JS的简介 新建步骤 <body ...

  3. 阿里云 OSS 如何设置防盗链, 上个月图床流量耗费50G+,请求次数10W+,什么鬼?

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  4. C++ explicit 的用法,就是必须显示调用

  5. C#字符串(String)类型中@的用法

    C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待,比如: string str = @"C:\Windows"; ...

  6. Redis基本使用(一)

    redis window系统的redis是微软团队根据官方的linux版本高仿的 官方原版: https://redis.io/ 中文官网:http://www.redis.cn 1 redis下载和 ...

  7. SpringMVC数组参数

    前端 var moduleids = moduleArr.join(','); //一定要切换成,分割的字符串传到后台 后台 @RequestParam List<String> modu ...

  8. 分库分表的情况下生成全局唯一的ID

    分库分表情况下 跨库的问题怎么解决? 分布式事务怎么解决? 查询结果集集合合并的问题? 全局唯一的id怎么解决? 一般要求:1.保证生成的ID全局唯一,不可重复 2.生成的后一个Id必须大于前一个Id ...

  9. CDH报错:PersistenceException: [PersistenceUnit: cmf.server] Unable to build EntityManagerFactory

    1.在启动CDH中master的服务cloudera-scm-server start并立刻挂掉了,提示如下错误 org.springframework.beans.factory.BeanCreat ...

  10. tomcat server.xml 中 host 元素

    测试偶然发现: <Host name="127.0.0.1" appBase="webapps" unpackWARs="true" ...