传送门

文章目录

  • 题意:
  • 思路:

题意:

给你一个长度为2n2^n2n的数组,让你对于所有的1≤k≤2n−11\le k\le 2^n-11≤k≤2n−1求最大的ai+aj,0≤i<j≤2n−1,iorj≤ka_i+a_j,0\le i<j\le2^n-1,i\ \ or \ \ j\le kai​+aj​,0≤i<j≤2n−1,i  or  j≤k。

思路:

直接想不好想,考虑如何能转化一下条件。
可以发现iorj≤ki\ \ or \ \ j\le ki  or  j≤k里面的i,ji,ji,j都是kkk的子集,所以对于每个kkk我们如果能快速求出其所有子集的最大值和次大值,就可以维护一个前缀最大值直接输出答案了。这个显然可以用sosdpsos dpsosdp来解决,由子集向上推即可。

// Problem: E - Or Plus Max
// Contest: AtCoder - AtCoder Regular Contest 100
// URL: https://atcoder.jp/contests/arc100/tasks/arc100_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
int a[N];
PII ans[N];void merge(int x,int y) {if(ans[x].X<y) ans[x].Y=ans[x].X,ans[x].X=y;else if(ans[x].Y<y) ans[x].Y=y;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);scanf("%d",&n);for(int i=0;i<1<<n;i++) scanf("%d",&a[i]),ans[i].X=a[i],ans[i].Y=-INF;for(int i=0;i<n;i++)for(int j=0;j<1<<n;j++) {if(!(j>>i&1)) continue;merge(j,ans[j^(1<<i)].X);merge(j,ans[j^(1<<i)].Y);}int res=0;for(int i=1;i<1<<n;i++) printf("%d\n",res=max(res,ans[i].X+ans[i].Y));return 0;
}
/**/

AtCoder Regular Contest 100 E - Or Plus Max Sos dp相关推荐

  1. AtCoder Regular Contest 100 D - Equal Cut 思维 + 前缀和

    传送门 文章目录 题意: 思路: 题意: 给你一个数组aaa,你要将其分成四份,让这四份中和的最大值−-−最小值最小,输出这个最小值. n≤2e5,ai≤1e9n\le2e5,a_i\le1e9n≤2 ...

  2. AtCoder Regular Contest 085 F NRE 线段树优化dp

    题意 有长度为n初始全为0的数组A和仅由0和1组成的数组B.现在给出m个区间,每次可以选择某个区间[l,r],使得A数组下标在[l,r]之间的元素变为1.问A和B最小不同位置数量是多少. n,m< ...

  3. AtCoder Regular Contest 065

    AtCoder Regular Contest 065 C - Daydream Score : 300300300 points 倒着来就行了,正着来会产生歧义匹配,dreamer,dreamdre ...

  4. NOMURA Programming Contest 2021(AtCoder Regular Contest 121)

    文章目录 A - 2nd Greatest Distance B - RGB Matching C - Odd Even Sort D - 1 or 2 E - Directed Tree F - L ...

  5. AtCoder题解——AtCoder Regular Contest 107——B - Quadruple

    题目相关 题目链接 AtCoder Regular Contest 107 B 题,https://atcoder.jp/contests/arc107/tasks/arc107_b. Problem ...

  6. AtCoder Regular Contest 061 E - Snuke‘s Subway Trip(建图 + dijkstra最短路 / 0/1bfs / 并查集)

    AtCoder Regular Contest 061 E - Snuke's Subway Trip problem 洛谷翻译 my idea 最近一直在做网络流,所以一读这题后,我就想到了最小费用 ...

  7. AtCoder Regular Contest 062 E - AtCoDeerくんと立方体づくり / Building Cubes with AtCoDeer

    题目传送门:https://arc062.contest.atcoder.jp/tasks/arc062_c 题目大意: 给你\(N\)块正方形木板,每块木板四角有四种颜色(可以相同),木板中央有编号 ...

  8. AtCoder Regular Contest 071 D - 井井井 / ###

    题目:http://arc071.contest.atcoder.jp/tasks/arc071_b 题意: 有一个二维的平面,给你xn根竖线和ym根横线,问这些线围成的长方形(正方形)的面积和(要求 ...

  9. AtCoder Regular Contest 058

    这个应该是第一场有英文的atcoder吧??不过题解却没有英文的... 从前往后慢慢做... C こだわり者いろはちゃん / Iroha's Obsession 数据范围这么小,直接暴力 #inclu ...

最新文章

  1. 09 Java程序员面试宝典视频课程之多线程
  2. html固定右侧显示,html+css布局之--左边固定宽,右侧自适应(4种方法)
  3. 3.4.1 计算机网络之流量控制(停止-等待协议、滑动窗口、后退N帧协议GBN、选择重传协议SR)、滑动窗口、可靠传输机制
  4. python pip修改安装镜像源
  5. searchindexer.exe占cpu使用率高
  6. 【渝粤教育】电大中专电子商务网站建设与维护 (21)作业 题库
  7. 工作71:nexttick使用
  8. mybatis中refid是什么意思
  9. Java中的泛型全解析(二)
  10. Go语言学习之11 日志收集系统kafka库实战
  11. 如何将文件自动一传到服务器,Windows文件传输篇:怎么上传文件到服务器?
  12. 云桌面到底是干什么的?
  13. Java程序员在用的大数据工具
  14. 用例图、活动图、时序图、类图的详细介绍
  15. python3.6 opencv3.4.3使用surf特征出错【解决方案】
  16. CSS齿轮转动加载动画
  17. 图片去水印工具-图片一键去水印的免费app
  18. 运行 Shell 脚本有两种方法:
  19. 面试测试岗想拿13K,HR说最多能给你10K,一招教你怼死HR?
  20. Reflex WMS入门系列十八:如何看年终盘点的Inventory report数据?

热门文章

  1. python基本随机数生成函数有_Python中生成随机数的常用方法
  2. 实验 4 操作、输出值和数据表实验报告--软件功能测试与性能测试实验
  3. 中国第一个发《Nature》的竟然是清朝人!被皇帝夸天下第一,他却觉得羞耻..........
  4. 土木工程到底有多惨?哭了哭了......
  5. 微信又添新功能!这个微信群可以学英语,而且全程免费
  6. 这哥们到底是应聘的还是来收购公司的?| 今日趣图
  7. 西游记里学化学,请收下我的膝盖~ | 今日最佳
  8. 4-8岁那些最难的数学概念,美国老师用一套绘本让孩子秒懂
  9. 资料分享 | 数据挖掘实例资料分享来袭
  10. 《自然》杂志:中国人越来越沉迷于对着一个叫“区块链”的东西胡言乱语