BZOJ 2460: [BeiJing2011]元素 线性基
2460: [BeiJing2011]元素
Description
相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔
法矿石炼制法杖的技术。那时人们就认识到,一个法杖的法力取决于使用的矿石。
一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而
使用了很多矿石,却在炼制过程中发现魔法矿石全部消失了,从而无法炼制
出法杖,这个现象被称为“魔法抵消” 。特别地,如果在炼制过程中使用超过
一块同一种矿石,那么一定会发生“魔法抵消”。
后来,随着人们认知水平的提高,这个现象得到了很好的解释。经过了大量
的实验后,著名法师 Dmitri 发现:如果给现在发现的每一种矿石进行合理的编
号(编号为正整数,称为该矿石的元素序号),那么,一个矿石组合会产生“魔
法抵消”当且仅当存在一个非空子集,那些矿石的元素序号按位异或起来
为零。 (如果你不清楚什么是异或,请参见下一页的名词解释。 )例如,使用两
个同样的矿石必将发生“魔法抵消”,因为这两种矿石的元素序号相同,异或起
来为零。
并且人们有了测定魔力的有效途径,已经知道了:合成出来的法杖的魔力
等于每一种矿石的法力之和。人们已经测定了现今发现的所有矿石的法力值,
并且通过实验推算出每一种矿石的元素序号。
现在,给定你以上的矿石信息,请你来计算一下当时可以炼制出的法杖最多
有多大的魔力。
Input
第一行包含一个正整数N,表示矿石的种类数。
接下来 N行,每行两个正整数Numberi 和 Magici,表示这种矿石的元素序号
和魔力值。
Output
仅包一行,一个整数:最大的魔力值
Sample Input
1 10
2 20
3 30
Sample Output
HINT
由于有“魔法抵消”这一事实,每一种矿石最多使用一块。
如果使用全部三种矿石,由于三者的元素序号异或起来:1 xor 2 xor 3 = 0 ,
则会发生魔法抵消,得不到法杖。
可以发现,最佳方案是选择后两种矿石,法力为 20+30=50。
对于全部的数据:N ≤ 1000,Numberi ≤ 10^18
,Magici ≤ 10^4
。
题解:
贪心,优先选择价值大的,证明木有
维护n个数的线性基更新答案
#include<bits/stdc++.h> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") #define ls i<<1 #define rs ls | 1 #define mid ((ll+rr)>>1) #define pii pair<int,int> #define MP make_pair typedef long long LL; const long long INF = 1e18+1LL; const double Pi = acos(-1.0); const int N = 7e5+10, M = 1e3+20, mod = 1e9+7, inf = 2e9;int n; LL ins[N]; struct ss{LL id,value; }a[N]; bool cmp(ss s1,ss s2) {return s1.value>s2.value; } int main() {scanf("%d",&n);for(int i = 1; i <= n; ++i) {scanf("%lld%lld",&a[i].id,&a[i].value);}sort(a+1,a+n+1,cmp);LL ans = 0;for(int i = 1; i <= n; ++i) {for(int j = 62; j >= 0; --j) {if(a[i].id&(1LL<<j)) {if(!ins[j]) {ins[j] = a[i].id;break;}a[i].id ^= ins[j];}}if(a[i].id) ans += a[i].value;}cout<<ans<<endl;return 0; }
转载于:https://www.cnblogs.com/zxhl/p/6674133.html
BZOJ 2460: [BeiJing2011]元素 线性基相关推荐
- [BZOJ]2460: [BeiJing2011]元素 线性基+贪心
Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越 ...
- 线性基(bzoj 2460: [BeiJing2011]元素)
线性基: 包含最多h个数(a1, a2, a3, -, ah),其中ak如果存在,那么最高位一定是第k位 性质①:线性基中任意集合xor出来的数的值域 = 原数列任意集合xor出的数的值域 性质②:线 ...
- Bzoj 2460: [BeiJing2011]元素
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 Description 相传,在远古时期,位于西方大陆的 Magic Land 上, ...
- 【bzoj 2460 [BeiJing2011]元素】
题意: 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必 ...
- 2460: [BeiJing2011]元素
2460: [BeiJing2011]元素 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 788 Solved: 421 [ Submit][ ...
- 【Bzoj 2460 [BeiJing2011]】——元素 线性基+贪心
Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力 ...
- 2460: [BeiJing2011]元素 有关线性基的理解
题意比较简单吧,就是要你求一对魔法石的集合,并且这些东西都是线性无关的,要是集合的魔力值总和最大 总的来说就是一个线性基模板题.. 我们先将他排序,接着贪心地插入就好了,正确性可以类比于最小生成树,匈 ...
- bzoj 3811: 玛里苟斯【线性基+期望dp】
这个输出可是有点恶心啊--WA*inf,最后抄了别人的输出方法orz 还有注意会爆long long,要开unsigned long long 对于k==1,单独考虑每一位i,如果这一位为1则有0.5 ...
- BZOJ 2115 [Wc2011] Xor ——线性基
[题目分析] 显然,一个路径走过两边是不需要计算的,所以我么找到一条1-n的路径,然后向该异或值不断异或简单环即可. 但是找出所有简单环是相当复杂的,我们只需要dfs一遍,找出所有的环路即可,因为所有 ...
最新文章
- [Asp.net MVC]Asp.net MVC5系列——添加数据
- 使用Nginx实现服务器反向代理和负载均衡
- 线程安全的单例模式的几种实现方法分享
- Ganglia监控安装配置
- linux 查看系统版本 32位 or 64位
- RxSwift之UI控件UISwitch与UISegmentedControl扩展的使用
- 从源文件和JAR文件构建Java代码模型
- vue 环境的搭建及初始化项目
- webstorm 代码提示
- Vue学习-基本指令
- 光线跟踪的几种常见求交运算
- 人活着,就应该对其他人贡献价值
- activiti7在线流程设计器_springboot2.x集成activiti6.0在线流程设计器
- 昌邑机器人_昌邑四轴CNC加工齿模长沙四轴CNC加工精鑫精密
- oracle-pl/sql之二
- php 5.5.9安装,php5.5.9+apache2.4.7 编译安装
- 中国游戏2022趋势报告:6大潜力领域4大发展趋势 多家企业分析
- mix2线刷开发板救砖_小米小米Mix 2手机快速救砖,线刷教程分享,小白轻松救活手机...
- u盘修复计算机系统,如何使用u盘修复系统
- java文件拒绝访问权限_运行java文件,一直显示拒绝访问,谁知道哪里出了問題≥﹏≤...
热门文章
- Java 中Iterator 、Vector、ArrayList、List 使用深入剖析
- 轻量级前端MVVM框架avalon - 整体架构
- notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别? (转载)
- 笨笨工作室告别十月模拟赛
- IPv4与IPv6数据报格式
- C#后台调用前台js(RegisterStartupScript)
- AngularJS入门之数据绑定
- 第10章 bit_vector位向量容器
- 汉诺塔问题 hdu 2064 hdu1997
- 自己动手实现权限控制(数据库表的设计)