ARC100E. Or Plus Max
好题。没想出解法。
官方题解:

这个解法和 Small Multiple 那道题的解法有异曲同工之妙。
扩展
若把 $\mathsf{or}$ 改成 $\mathsf{and}$ 或者 $\mathsf{xor}$ 怎么解?
代码
int main() {
int n;
scan(n);
vi a(1 << n);
scan(a);
vpii b(1 << n);
rng (i, 0, 1 << n) {
b[i] = {i, -1};
}
auto cmp = [&](int x, int y) {
if (x == y) return false;
if (x == -1) return false;
if (y == -1) return true;
return a[x] > a[y];
};
auto update = [&](pii &a, pii b) {
vi x{a.first, a.second, b.first, b.second};
sort(all(x), cmp);
UNIQ(x);
a = {x[0], x[1]};
};
rng (i, 0, 1 << n) {
rng (j, 0, n) {
if (!get_bit(i, j)) {
update(b[i | 1 << j], b[i]);
}
}
}
int ans = 0;
rng (i, 1, 1 << n) {
chkmax(ans, a[b[i].first] + a[b[i].second]);
println(ans);
}
return 0;
}
Exec Time: 206 ms.
但是改成
int main() {
int n;
scan(n);
vi a(1 << n);
scan(a);
vv<int> b(1 << n);
rng (i, 0, 1 << n) {
b[i] = {i};
}
auto cmp = [&](int x, int y) {
return a[x] > a[y];
};
auto update = [&](vi &a, vi &b) {
vi tmp = a;
tmp.insert(tmp.end(), all(b));
sort(all(tmp), cmp);
UNIQ(tmp);
a = {tmp[0], tmp[1]};
};
rng (i, 0, 1 << n) {
rng (j, 0, n) {
if (!get_bit(i, j)) {
update(b[i | 1 << j], b[i]);
}
}
}
int ans = 0;
rng (i, 1, 1 << n) {
chkmax(ans, a[b[i][0]] + a[b[i][1]]);
println(ans);
}
return 0;
}
Exec Time 416 ms.
仅仅是把pair<int,int>改为vector<int>,为何二者运行时间悬殊?
ARC100E. Or Plus Max的更多相关文章
- AtCoder Regular Contest 100 (ARC100) E - Or Plus Max 其他
原文链接https://www.cnblogs.com/zhouzhendong/p/9251448.html 题目传送门 - ARC100E 题意 给定一个正整数 $n(n\leq 18)$. 然后 ...
- Kafka副本管理—— 为何去掉replica.lag.max.messages参数
今天查看Kafka 0.10.0的官方文档,发现了这样一句话:Configuration parameter replica.lag.max.messages was removed. Partiti ...
- 排序算法----基数排序(RadixSort(L,max))单链表版本
转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...
- [LeetCode] Max Sum of Rectangle No Larger Than K 最大矩阵和不超过K
Given a non-empty 2D matrix matrix and an integer k, find the max sum of a rectangle in the matrix s ...
- [LeetCode] Max Points on a Line 共线点个数
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...
- BZOJ 4390: [Usaco2015 dec]Max Flow
4390: [Usaco2015 dec]Max Flow Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 113[Submi ...
- supervisor监管进程max file descriptor配置不生效的问题
配置了 sudo vim /etc/security/limits.conf * soft nofile * hard nofile 单独起进程没问题, 放到supervisor下监管启动,则报错 ...
- Max double slice sum 的解法
1. 上题目: Task description A non-empty zero-indexed array A consisting of N integers is given. A tripl ...
- 3ds max 渲染清晰面片的边缘
3ds max的菜单栏 -> 渲染 -> 材质编辑器->精简材质编辑器,将面状打勾,如下图,就能渲染出面片清晰的图形.
随机推荐
- linux下pyenv的安装和使用
一:pyenv介绍 项目地址:https://github.com/pyenv/pyenv pyenv lets you easily switch between multiple vers ...
- [CCC 2016] 生命中的圆
题面 有这么一类题,它让你求一个0/1环经过T轮周围异或过程之后的样子. 周围异或即 a[i][k] = a[i-1][k-1] ^ a[i-1][k+1] ,其中第一维表示轮数,第二维表示位置. 千 ...
- 图论之tarjan真乃神人也,强连通分量,割点,桥,双连通他都会
先来%一下Robert Tarjan前辈 %%%%%%%%%%%%%%%%%% 然后是热情感谢下列并不止这些大佬的博客: 图连通性(一):Tarjan算法求解有向图强连通分量 图连通性(二):Tarj ...
- Codevs 2482 宝库通道 2007年省队选拔赛安徽
2482 宝库通道 2007年省队选拔赛安徽 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 探宝的旅程仍然继续中,由于你的帮助 ...
- quartz.net 执行后台任务
... https://www.cnblogs.com/zhangweizhong/category/771057.html https://www.cnblogs.com/lanxiaoke/cat ...
- .NetCore 读取配置文件
1.创建config.json配置,并设置成始终复制 2.需要安装 nuget 包 Microsoft.Extensions.Configuration .Microsoft.Extensions.C ...
- BZOJ 2402 陶陶的难题II (树链剖分、线段树、凸包、分数规划)
毒瘤,毒瘤,毒瘤-- \(30000\)这个数据范围,看上去就是要搞事的啊... 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2402 ...
- PHP反序列化学习
在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数. 序列化serialize() 序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对 ...
- JAVA NIO缓冲区(Buffer)------ByteBuffer常用方法
参考:https://blog.csdn.net/xialong_927/article/details/81044759 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I ...
- 转载 AMI方案和Insyde方案
闲来无事回头看看,自毕业以来一直都在BIOS这个行业打转,目前的各种新闻来看全球的IT行业都似乎不太景气,PC出货量一泻千里,想要有所转机看起来不是一天两天的事情,想来无事来看看做过的几个UEFI B ...