Codeforces 1847 A-F
题面
题解
B
题目大意:找到一组分割方法,使得 \(\sum _{i=1} ^ k (\text{&} _{j=l_i} ^ {r_i} a_j)\) 取得最小值时使 \(k\) 最大,输出 \(k\)。其中 \(\text{&}\) 表示按位与操作。
题目分析:
& | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
不难发现,因为 \(a \in \mathbb{N}\),所以 $$a, b \ge a \& b \tag{1}$$ $$a + b \ge a \& b \tag{2}$$且对于公式 (2),当且仅当 \(a=b=0\) 时取等。
因此考虑贪心。设 \(x = \text{&} _{i=1} ^ {n} a_i\)。对于 \(x > 0\) 的 情况,根据 (2),分成一组的和是最优的,因此 \(k = 1\);对于 \(x = 0\) 的情况,只要将原数组分为几段区间按位与都为 \(0\) 的区间即可。
代码略。
C
题目大意:对于数组 \(a\),它的前 \(n\) 个数由题目给定,而 \(a_i(i > n) = \oplus _{j=k} ^ {i-1} a_j\),其中 \(k\) 不确定,\(1 \le k \le i - 1\),而 \(\oplus\) 表示按位异或。求 \(a\) 中元素的最大可能值。
这套题怎么这么多位运算?
题目分析:
\(\oplus\) | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
题目给定 \(a_i < 2^8 (1\le i\le n)\),所以由按位与的定义得到全体 \(a_i < 2^8\)。
设 \(a_p = \oplus _{i=l} ^{p-1} a_i\),则 \(a_{p+1}=\oplus _{i=k} ^{p} a_i=(\oplus _{i=k} ^{p-1} a_i) \oplus a_p = (\oplus _{i=k} ^{p-1} a_i) \oplus (\oplus _{i=l} ^{p-1} a_i) = \oplus _{i=min(k, l)} ^{max(k, l)-1} a_i\)。
于是问题转化为求最大字段异或。又因为异或运算满足结合律,可以用前缀异或加速。
问题再次转化为:求前缀异或数组中,任意两数异或的最大值。
由于 \(a_i < 2^8\),所以前缀异或数组中元素的值也在这个值域内。因此考虑用桶记录前缀数组中的数,然后与前缀数组进行“配对”求异或值。时间复杂度 \(O(2^8 \times n)\),可以通过这道题。
#include <bits/stdc++.h>
using namespace std;
int t, n, a[100010];
bool x[100010];
int main() {
scanf("%d", &t);
while (t--) {
memset(x, 0, sizeof(x));
scanf("%d", &n);
int ans = 0;
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
a[i] ^= a[i - 1];
x[a[i]] = 1;
ans = max(ans, a[i]);
}
for (int i = 1; i <= n; i++) {
for (int j = 0; j < 256; j++) {
if (x[j]) {
ans = max(ans, a[i] ^ j);
}
}
}
printf("%d\n", ans);
}
return 0;
}
D
从这里开始难度陡增。
(未完)
Codeforces 1847 A-F的更多相关文章
- Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)
Problem Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...
- Educational Codeforces Round 40 F. Runner's Problem
Educational Codeforces Round 40 F. Runner's Problem 题意: 给一个$ 3 * m \(的矩阵,问从\)(2,1)$ 出发 走到 \((2,m)\) ...
- codeforces Gym 100187F F - Doomsday 区间覆盖贪心
F. Doomsday Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/problem/F ...
- Codeforces gym 100685 F. Flood bfs
F. FloodTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685/problem/F Desc ...
- Codeforces Gym 100513F F. Ilya Muromets 线段树
F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...
- Educational Codeforces Round 61 F 思维 + 区间dp
https://codeforces.com/contest/1132/problem/F 思维 + 区间dp 题意 给一个长度为n的字符串(<=500),每次选择消去字符,连续相同的字符可以同 ...
- Educational Codeforces Round 51 F. The Shortest Statement(lca+最短路)
https://codeforces.com/contest/1051/problem/F 题意 给一个带权联通无向图,n个点,m条边,q个询问,询问两点之间的最短路 其中 m-n<=20,1& ...
- Codeforces Gym 100513F F. Ilya Muromets 水题
F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...
- Educational Codeforces Round 12 F. Four Divisors 求小于x的素数个数(待解决)
F. Four Divisors 题目连接: http://www.codeforces.com/contest/665/problem/F Description If an integer a i ...
- [codeforces/edu5]总结(F)
链接:http://codeforces.com/contest/616 A题: 统一成1e6长度的字符串,右对齐比较字典序. B题: 求所有行的最小值,里面最大的那个.暴力. C题: 先用dfs给每 ...
随机推荐
- 信创环境:鲲鹏ARM+麒麟V10离线部署K8s和Rainbond信创平台
在上篇<国产化信创开源云原生平台>文章中,我们介绍了 Rainbond 作为可能是国内首个开源国产化信创平台,在支持国产化和信创方面的能力,并简要介绍了如何在国产化信创环境中在线部署 Ku ...
- Seata 核心源码详解
参考文章: 分布式事务实战方案汇总 https://www.cnblogs.com/yizhiamumu/p/16625677.html 分布式事务原理及解决方案案例https://www.cnblo ...
- linux 环境中cat命令进行关键字搜索
在linux环境中通过关键字搜索文件里面的内容 1.显示文件里匹配关键字那行以及上下50行 cat 文件名 | grep -C 50 '关键字' 2.显示关键字及前50行 cat 文件名 | grep ...
- sql 查询表数据
SELECT s.Name AS SchemaName, t.Name AS TableName, p.rows AS RowCounts--, --CAST(ROUND((SUM(a.used_pa ...
- 音视频处理三剑客之 AEC:回声产生原因及回声消除原理
在上一期课程<音视频开发者进阶 -- 音频要素>中,我们从声音三要素.音频模拟信号的数字化和音频数字信号特征等方面,重新认识了"声音"这个老朋友.今天,我们会进一步聊聊 ...
- Linux_权限理解(详细PLUS)
1.用户 Linux下有两种用户:超级用户(root)和普通用户: 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情 超级用户的命令提示符是"#&q ...
- MMU和SMMU IOMMU使用场景和区别,SMMU技术与cache
1.各种MMU MMU是memory manage unit 内存管理单元: SMMU是system memory manage unit 系统内存管理单元: IOMMU和SMMU的功能基本相同,只是 ...
- 【墨天轮专访第四期】华为云GaussDB苏光牛:发挥生态优势,培养应用型DBA
导读: 随着5G互联网时代的来临,各行各业对于数据库的依赖程度也在逐步提高.由于国内在数据库行业的发展起步较晚,数据库的市场份额长期被Oracle,微软等美国公司所控制.但是伴随着国内IT技术栈的不断 ...
- typeof typeof 'texs'是什么类型
typeof '12' 返回 'string' 是字符串类型 :
- 关于自动部署 - 基于gitlab关联 腾讯云 web 应用
gitlab 相当于 gitee 的企业版形式 : 步骤 1. 使用 Vscode 编写代码,使用 gitlab托管代码, 2. 新建腾讯云 web 应用 ,gitlab 关联 web应用, 3. 每 ...