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的菜单栏 -> 渲染 -> 材质编辑器->精简材质编辑器,将面状打勾,如下图,就能渲染出面片清晰的图形.
随机推荐
- Cocos Creator中按钮组件数组的使用
Cocos Creator游戏开发中经常使用到按钮,特别是大量按钮的情况,此时使用数组来管理这些按钮就显得更具通用性.我大致走了一下官方的示例,好像没有发现有这个小内容(或者有,但我却是没有找到),于 ...
- SecureCRT的安装与破解,详细过程
使用SecureCRT可以方便用户在windows环境下对linux主机进行管理,这里为大家讲一下SecureCRT的破解方法,仅供大家参考学习: 1.首先在本站下载SecureCRT 7.3.6最新 ...
- Leetcode题目102.二叉树的层次遍历(队列-中等)
题目描述: 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 ...
- Python 寻找文件夹里以特定格式结尾的文件
代码: import os, re, time name = 'linuxday01' flags = True# 文件夹bi_test中的文件列表 print os.listdir('E:\\bi_ ...
- github上打开或下载过慢的问题解决
1.用站长工具查询github.com http://tool.chinaz.com/dns?type=1&host=github.com&ip= 2.找到“美国[海外]”项查到的ip ...
- Selenium 2自动化测试实战41(多线程技术)
多线程技术 python通过两个标准库thread和threading提供对线程的支持.thread提供了低级别的,原始的线程以及一个简单的锁.threading基于Java的线程模型设计. 1.th ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-3.Vidoe相关接口完善和规范协议
笔记 3 .Vidoe相关接口完善和规范协议 简介:完善相关接口,协议规范讲解 1.save接口保存对象 1)@RequestParam(value = "p ...
- redis 超时失效key 的监听触发使用
redis自2.8.0之后版本提供Keyspace Notifications功能,允许客户订阅Pub / Sub频道,以便以某种方式接收影响Redis数据集的事件. 可能收到的事件的例子如下: 所有 ...
- TCP/IP 和 和 DoD 模型
TCP/IP 模型也被称作 DoD 模型(Department of Defense Model).TCP/IP 字面上代表了两个协议:TCP(传输控制协议)和 IP(网络之间互联协议).TCP/IP ...
- vue引入插件方法
jQuery插件npm install jquery --save-dev 需要用jQuery的文件中引入:import $ from 'jquery' 轮播图插件安装:npm install vue ...