E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
BZOJ4245
【
BZOJ4245
】【ONTAK2015】OR-XOR
题目大意将n个数分成m段,最小化各段内异或和的或和N≤5×105,ai≤1018Solution这题好神呀。首先这种跟位运算有关的题目肯定是按位考虑的,那么我们从高位往低位贪心。判断每一位是否能取0时,采取下面的策略:先计算前缀异或和。因为考虑到我们最后通过or统计答案,那么就要保证这m段在这一位异或必须为0,那么就是要在这些前缀异或和中能否找到≥m个数都是0,且总的前缀和也在这一位为0(否则最后
llgyc
·
2020-09-15 14:15
BZOJ
[ONTAK2015] [
BZOJ4245
] OR-XOR - 二进制
4245:[ONTAK2015]OR-XORTimeLimit: 10Sec MemoryLimit: 256MBSubmit: 339 Solved: 183[Submit][Status][Discuss]Description给定一个长度为n的序列a[1],a[2],...,a[n],请将它划分为m段连续的区间,设第i段的费用c[i]为该段内所有数字的异或和,则总费用为c[1]orc[2
whzzt
·
2016-04-25 21:00
【
bzoj4245
】Or-Xor 递推
显然我们可以贪心从高到低分析,如果高位能不取就不取,这样得到的一定是最优解。 令s[i]=s[i-1]^a[i],那么对于某一段(x,y)的Xor值结尾s[x-1]^s[y]。考虑第k位能不能取,显然需要s[n]的第k位=0,另外需要有不少于m个“可取”的s[]的值为0,这样可以在这些s[]的位置处划分使得第k位为0。那么如果第k位可以为0,就要把所有s[]中第k位为1的那些都标记为
lych_cys
·
2016-03-18 15:00
位运算
递推
【
bzoj4245
】 [ONTAK2015]OR-XOR 二进制相关
利用前缀和选m个区间等价于选m个数从最高位开始找,如果这一位至少有m个0,则可以为0,该位为1的后面就不可以选了。还要注意,最后一个数如果该位为1,那么这一位必须为1,然后要从62开始枚举,而不是从31。#include #include #include #include #include #include #definemaxn500010 usingnamespacestd; longl
u012288458
·
2015-10-20 16:00
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他