题目链接:点击查看

题目大意:给出一个长度为 nnn 的序列,求出贡献最大的三元对:(i,j,k)(i,j,k)(i,j,k),满足 i<j<ki<j<ki<j<k,其贡献为 ai∣(aj&ak)a_i|(a_j\&a_k)ai​∣(aj​&ak​)

题目分析:因为 aja_jaj​ 和 aka_kak​ 被绑定了,所以我们可以直接枚举 aia_iai​ 贪心从高位去寻找是否存在后面 aj&aka_j\&a_kaj​&ak​

现在问题转换为了如何快速找到对于某个数值 xxx 来说,位置 iii 后面是否存在着两个数满足 aj&ak=xa_j\&a_k=xaj​&ak​=x

到此为止就变成 SOSdpSOSdpSOSdp 的裸题了,只需要记录一下每个数字最后一次出现的位置,记为 fififi,和每个数字倒数第二次出现的位置,记为 sesese 就好了,转移的话,是由超集向子集转移,那么针对于上一段的问题,我们只需要判断一下 sexse_xsex​ 是否大于 iii 即可

代码:

// Problem: F. Bits And Pieces
// Contest: Codeforces - Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)
// URL: https://codeforces.com/contest/1208/problem/F
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)// #pragma GCC optimize(2)
// #pragma GCC optimize("Ofast","inline","-ffast-math")
// #pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<list>
#include<unordered_map>
#define lowbit(x) x&-x
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
template<typename T>
inline void read(T &x)
{T f=1;x=0;char ch=getchar();while(0==isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(0!=isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();x*=f;
}
template<typename T>
inline void write(T x)
{if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');
}
const int inf=0x3f3f3f3f;
const int N=(1<<21)+100;
int a[N],fi[N],se[N];
void update(int pos,int val) {if(val>fi[pos]) {se[pos]=fi[pos];fi[pos]=val;} else if(val>se[pos]) {se[pos]=val;}
}
int main()
{#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int n;read(n);for(int i=1;i<=n;i++) {read(a[i]);update(a[i],i);}for(int j=0;j<21;j++) {for(int i=0;i<1<<21;i++) {if(((i>>j)&1)==0) {//i的维度低于i|(1<<j)的维度update(i,fi[i|(1<<j)]);update(i,se[i|(1<<j)]);}}}int ans=0;for(int i=1;i<=n-2;i++) {int cur=0;for(int j=20;j>=0;j--) {if((a[i]>>j)&1) {continue;} else if(se[cur|(1<<j)]>i) {cur|=1<<j;}}ans=max(ans,a[i]|cur);}cout<<ans<<endl;return 0;
}

CodeForces - 1208F Bits And Pieces(SOSdp+贪心)相关推荐

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

    传送门 文章目录 题意: 思路: 题意: n≤1e6,ai≤2e6n\le1e6,a_i\le2e6n≤1e6,ai​≤2e6 思路: 由于(aj&ak)(a_j \And a_k)(aj​& ...

  2. codeforces1208 F. Bits And Pieces(SOS DP)

    heyuhhh高维前缀和总结 SOS DP SOS Dynamic Programming [Tutorial] 之前写过相关的题目枚举子集dp 枚举子集 F[mask]=∑i∈maskA[i],i& ...

  3. codeforces#320(div2) D Or Game 贪心

    codeforces#320(div2) D  "Or" Game  贪心 D. "Or" Game time limit per test 2 seconds ...

  4. Codeforces 437C The Child and Toy(贪心)

    题目连接:Codeforces 437C  The Child and Toy 贪心,每条绳子都是须要割断的,那就先割断最大值相应的那部分周围的绳子. #include <iostream> ...

  5. CodeForces - 1395D - Boboniu Chats with Du 贪心

    CodeForces - 1395D - Boboniu Chats with Du 贪心 题意:如果ai>ma_i>mai​>m,并且当天可以说话,则接下来ddd天不能说话.其余所 ...

  6. Codeforces 484A - Bits (贪心)

    题意 输出[l, r]中二进制数字最多的数字. 思路 贪心,从r的最高位1开始和l比较,直到pos[r] = 1, pos[l] = 0,这时候就可以把r的当前位置置零,之前的位置全部变成1,这个值显 ...

  7. Educational Codeforces Round 12 C. Simple Strings 贪心

    C. Simple Strings 题目连接: http://www.codeforces.com/contest/665/problem/C Description zscoder loves si ...

  8. codeforces 1428E. Carrots for Rabbits(贪心(非常优秀的贪心题),结构体重载运算符)

    题目链接:https://codeforces.ml/contest/1428/problem/E 题意:给定n个数,要求将这些数拆分为k个数,是这些数的平方和最小. 题解:结构体,一开始想到的是每次 ...

  9. Codeforces 846 B Math Show DFS + 贪心

    题目链接: http://codeforces.com/contest/846/problem/B 题目描述: 有N个节点, 每个节点有相同的K个子节点, 每个子节点有时间花费,完成一个子节点获得1分 ...

最新文章

  1. matlab练习程序(简单图像融合)
  2. Python 33(1) UDP协议 数据报协议 socketsever模块
  3. linux添加用户命令_Linux useradd命令添加新用户图文详解
  4. tcp/udp高并发和高吐吞性能测试工具
  5. 计算机基础 课程简介,课程简介及计算机基础知识课件.ppt
  6. 陕西居民医保微信缴纳教程来了,太方便了
  7. 在U盘上安装Linux系统解决方案
  8. 准备创业或刚创业的朋友必读
  9. string.split方法 保留分隔符_Python pandas库159个常用方法使用说明
  10. python判断字符类型例题_Python面试题:字符类型的考察
  11. STM32断言assert_param 和 assert_failed使用
  12. 【NLP】huggingface阶段性学习小结
  13. 马云研判当前经济形势,超震撼
  14. 机器学习项目实战-能源利用率1-数据预处理
  15. jBPM4的PVM解析
  16. 【转载】什么是公网IP、内网IP和NAT转换?
  17. Vista上StarForce驱动的卸载
  18. nba2k 服务器支持,NBA2K Online篮球在线官方网站-拼出你的传奇-腾讯游戏
  19. R语言Bioconductor安装全流程
  20. html如何携带参数自动跳转页面

热门文章

  1. 统计个人已完成的工作量_已注销注册人数统计(勘察设计类)2019.4.11
  2. php网站调试出现的简单问题,调试php时网站出现502的解决方法
  3. MySQL 高级 - 索引 - 索引设计原则
  4. Nacos源码NacosNamingService
  5. Eureka-eureka原理分析
  6. 任务调度之Elastic-Job1
  7. 微服务网关Gateway中Path路径过滤
  8. SpringBoot集成其他技术-集成Redis
  9. 数组工具类Arrays
  10. Bean 在 Spring 中代表什么含义,为什么这样命名?