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的菜单栏 -> 渲染 -> 材质编辑器->精简材质编辑器,将面状打勾,如下图,就能渲染出面片清晰的图形.
随机推荐
- Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C 倒序并查集
C. Destroying Array time limit per test 1 second memory limit per test 256 megabytes input standard ...
- hdu 5536 Chip Factory 字典树+bitset 铜牌题
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
- 漫谈计算机编码:从ASCII码到UTF-8
第一阶段 盘古开天辟地——ASCII码 计算机大家都知道,本质是二进制运算和存储.在计算机中人类的几乎所有文字和字符都没法直接表示,所以美国人在发明计算机的时候为了让计算机可以用于保存和传输文字,就发 ...
- x86—EFLAGS寄存器详解[转]
鉴于EFLAGS寄存器的重要性,所以将这一部分内容从处理器体系结构及寻址模式一文中单独抽出另成一文,这部分内容主要来自Intel Developer Mannual,在后续的内核系列中遇到的许多和EF ...
- Hbuilder快速代码技巧和常用快捷键
1.在body内输入div.abc按下tab键 效果:<divclass="abc"></div> 2.在body内输入div#abc按下tab键 效果:& ...
- mysql保留最新数据
直接上sql语句,亲测可用: DELETE tb FROM lotus_system_log AS tb ,(SELECT pk_id FROM lotus_system_log ORDER BY p ...
- 【软件工程】Beta冲刺(3/5)
链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 新增数据分析展示等功能API 服务器后端部署,API接口的beta版实现 展示 ...
- LeetCode 复原IP地址(探索字节跳动)
题目描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135&qu ...
- LeetCode 25. k个一组翻转链表(Reverse Nodes in k-Group)
题目描述 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序. 示例 : 给定 ...
- mybatis sql不等于
转载地址: https://blog.csdn.net/weixin_40797576/article/details/78796028 select * from test where id& ...