2460: [BeiJing2011]元素

Description

相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔
法矿石炼制法杖的技术。那时人们就认识到,一个法杖的法力取决于使用的矿石。
一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而
使用了很多矿石,却在炼制过程中发现魔法矿石全部消失了,从而无法炼制
出法杖,这个现象被称为“魔法抵消” 。特别地,如果在炼制过程中使用超过
一块同一种矿石,那么一定会发生“魔法抵消”。 
  后来,随着人们认知水平的提高,这个现象得到了很好的解释。经过了大量
的实验后,著名法师 Dmitri 发现:如果给现在发现的每一种矿石进行合理的编
号(编号为正整数,称为该矿石的元素序号),那么,一个矿石组合会产生“魔
法抵消”当且仅当存在一个非空子集,那些矿石的元素序号按位异或起来
为零。 (如果你不清楚什么是异或,请参见下一页的名词解释。 )例如,使用两
个同样的矿石必将发生“魔法抵消”,因为这两种矿石的元素序号相同,异或起
来为零。 
  并且人们有了测定魔力的有效途径,已经知道了:合成出来的法杖的魔力
等于每一种矿石的法力之和。人们已经测定了现今发现的所有矿石的法力值,
并且通过实验推算出每一种矿石的元素序号。 
   现在,给定你以上的矿石信息,请你来计算一下当时可以炼制出的法杖最多
有多大的魔力。

Input

第一行包含一个正整数N,表示矿石的种类数。 
  接下来 N行,每行两个正整数Numberi 和 Magici,表示这种矿石的元素序号
和魔力值。

Output

仅包一行,一个整数:最大的魔力值

Sample Input

3
1 10
2 20
3 30

Sample Output

50

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]元素 线性基相关推荐

  1. [BZOJ]2460: [BeiJing2011]元素 线性基+贪心

    Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越 ...

  2. 线性基(bzoj 2460: [BeiJing2011]元素)

    线性基: 包含最多h个数(a1, a2, a3, -, ah),其中ak如果存在,那么最高位一定是第k位 性质①:线性基中任意集合xor出来的数的值域 = 原数列任意集合xor出的数的值域 性质②:线 ...

  3. Bzoj 2460: [BeiJing2011]元素

    原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 Description 相传,在远古时期,位于西方大陆的 Magic Land 上, ...

  4. 【bzoj 2460 [BeiJing2011]元素】

    题意:  相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必 ...

  5. 2460: [BeiJing2011]元素

    2460: [BeiJing2011]元素 Time Limit: 20 Sec   Memory Limit: 128 MB Submit: 788   Solved: 421 [ Submit][ ...

  6. 【Bzoj 2460 [BeiJing2011]】——元素 线性基+贪心

    Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力 ...

  7. 2460: [BeiJing2011]元素 有关线性基的理解

    题意比较简单吧,就是要你求一对魔法石的集合,并且这些东西都是线性无关的,要是集合的魔力值总和最大 总的来说就是一个线性基模板题.. 我们先将他排序,接着贪心地插入就好了,正确性可以类比于最小生成树,匈 ...

  8. bzoj 3811: 玛里苟斯【线性基+期望dp】

    这个输出可是有点恶心啊--WA*inf,最后抄了别人的输出方法orz 还有注意会爆long long,要开unsigned long long 对于k==1,单独考虑每一位i,如果这一位为1则有0.5 ...

  9. BZOJ 2115 [Wc2011] Xor ——线性基

    [题目分析] 显然,一个路径走过两边是不需要计算的,所以我么找到一条1-n的路径,然后向该异或值不断异或简单环即可. 但是找出所有简单环是相当复杂的,我们只需要dfs一遍,找出所有的环路即可,因为所有 ...

最新文章

  1. [Asp.net MVC]Asp.net MVC5系列——添加数据
  2. 使用Nginx实现服务器反向代理和负载均衡
  3. 线程安全的单例模式的几种实现方法分享
  4. Ganglia监控安装配置
  5. linux 查看系统版本 32位 or 64位
  6. RxSwift之UI控件UISwitch与UISegmentedControl扩展的使用
  7. 从源文件和JAR文件构建Java代码模型
  8. vue 环境的搭建及初始化项目
  9. webstorm 代码提示
  10. Vue学习-基本指令
  11. 光线跟踪的几种常见求交运算
  12. 人活着,就应该对其他人贡献价值
  13. activiti7在线流程设计器_springboot2.x集成activiti6.0在线流程设计器
  14. 昌邑机器人_昌邑四轴CNC加工齿模长沙四轴CNC加工精鑫精密
  15. oracle-pl/sql之二
  16. php 5.5.9安装,php5.5.9+apache2.4.7 编译安装
  17. 中国游戏2022趋势报告:6大潜力领域4大发展趋势 多家企业分析
  18. mix2线刷开发板救砖_小米小米Mix 2手机快速救砖,线刷教程分享,小白轻松救活手机...
  19. u盘修复计算机系统,如何使用u盘修复系统
  20. java文件拒绝访问权限_运行java文件,一直显示拒绝访问,谁知道哪里出了問題≥﹏≤...

热门文章

  1. Java 中Iterator 、Vector、ArrayList、List 使用深入剖析
  2. 轻量级前端MVVM框架avalon - 整体架构
  3. notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别? (转载)
  4. 笨笨工作室告别十月模拟赛
  5. IPv4与IPv6数据报格式
  6. C#后台调用前台js(RegisterStartupScript)
  7. AngularJS入门之数据绑定
  8. 第10章 bit_vector位向量容器
  9. 汉诺塔问题 hdu 2064 hdu1997
  10. 自己动手实现权限控制(数据库表的设计)