题目描述

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

输入

第一行包含一个正整数N,表示矿石的种类数。

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

输出

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

样例输入

3
1 10
2 20
3 30

样例输出

50


题解

贪心+高斯消元求线性基

题目要求不存在非空子集的异或和为0,即线性无关组。所以我们肯定使用最大线性无关组,即线性基。

拟阵最优化问题考虑贪心,求线性基时,对于相同最高位的,选择权值最大的作为线性基加到答案中。

#include <cstdio>
#include <algorithm>
#define N 1010
using namespace std;
typedef long long ll;
struct data
{ll num;int val;
}a[N];
int n;
int gauss()
{ll i;int j , ans = 0 , tot = 0 , p;for(i = 1ll << 62 ; i ; i >>= 1){for(p = 0 , j = ++tot ; j <= n ; j ++ )if(a[j].num & i && a[j].val > a[p].val)p = j;if(!p){tot -- ;continue;}swap(a[tot] , a[p]) , ans += a[tot].val;for(j = 1 ; j <= n ; j ++ )if(j != tot && a[j].num & i)a[j].num ^= a[tot].num;}return ans;
}
int main()
{int i;scanf("%d" , &n);for(i = 1 ; i <= n ; i ++ ) scanf("%lld%d" , &a[i].num , &a[i].val);printf("%d\n" , gauss());return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/7054863.html

【bzoj2460】[BeiJing2011]元素 贪心+高斯消元求线性基相关推荐

  1. 【BZOJ2115】[Wc2011] Xor 高斯消元求线性基+DFS

    [BZOJ2115][Wc2011] Xor Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ...

  2. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南):签到题A Matrix Equation(高斯消元求线性异或方程组自由元个数)

    problem 给出两个n*n的01矩阵,A和B 定义两种运算,Z(i,j)=Xi行*Yj列相加%2,D(i,j)=X(i,j)*Y(i,j) 求最多有多少个可能的矩阵C,满足A运算1C==B运算2C ...

  3. HDU4870_Rating_双号从零单排_高斯消元求期望

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4870 原题: Rating Time Limit: 10000/5000 MS (Java/Other ...

  4. 2020 icpc济南 A - Matrix Equation (高斯消元求自由元个数)

    链接: A - Matrix Equation 题意: 给一个 A 矩阵 一个 B 矩阵(矩阵元素为 0 或 1),求有多少个 C 矩阵 满足 A X C = B . C (叉乘 和 点乘). 思路: ...

  5. 洛谷 - P4783 【模板】矩阵求逆(高斯消元求逆矩阵)

    题目链接:点击查看 题目大意:给出一个 n * n 的矩阵,求出其逆矩阵,mod 为 1e9 + 7,若不存在输出 No Solution 题目分析:囤个模板,原理就是,初始时在原矩阵右侧设置一个单位 ...

  6. bzoj2460 [BeiJing2011]元素 贪心+线性基

    线性基其实和向量关系很近.只是他们都是单位向量 然后重复的01组判断方式类似高斯消元判无消方程的情况 由于出现无解方程类似于一个环,所以这个线性无关组就类似一棵树,所以就可以用类似kruskal的方法 ...

  7. BZOJ:4820: [Sdoi2017]硬币游戏BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)

    1444: [Jsoi2009]有趣的游戏 4820: [Sdoi2017]硬币游戏 这两道题都是关于不断随机生成字符后求出现给定字符串的概率的问题. 第一题数据范围较小,将串建成AC自动机以后,以A ...

  8. 矩阵与高斯消元【矩阵乘法,高斯消元求线性方程组,求行列式】 全网最详,附例题与姊妹篇 一万三千字详解

    (详解)矩阵快速幂详解与常见转移矩阵的构造_秦小咩的博客-CSDN博客_矩阵快速幂转移矩阵 目录 矩阵乘法 矩阵快速幂 伪代码模板 例题一 例题2 例题三 例题四 高斯消元 整形高斯消元 浮点型高斯消 ...

  9. 中石油训练赛 - Switches(高斯消元求逆矩阵+逆矩阵求线性方程组)

    题目大意:给出一个 n * n 的布尔矩阵表示开关与灯的关系,现在每个灯来说,是否存在一种开关的集合,使得恰好使得只有当前灯是打开状态,其余灯都是熄灭状态,分别输出方案 题目分析:将开关视为变元,将灯 ...

最新文章

  1. ACMNO.26 C语言-字符统计2 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
  2. 我学UML建模系列之核心元素 -------- 参与者
  3. 安卓SurfaceFlinger框架初探
  4. C++ STL : 模拟实现STL中的string类
  5. Spring——自定义属性编辑器+Bean的生存范围+Bean的生命周期
  6. CAN总线很难吗?CAN总线看不懂是不可能的!
  7. 人在斯坦福,刚上CS224n
  8. 没有bug队——加贝——Python 练习实例 25,26
  9. 苹果将明年上半年iPhone出货量目标提高 30%
  10. perf-perf stat用户层代码分析
  11. 用于CPU性能SQL Server监视工具
  12. 指向Member Function的指针
  13. xcode打包导出ipa
  14. windows7系统的时间服务器,win7系统搭建ntp服务器的操作方法
  15. sqlServer2014用sql server身份认证登录
  16. 简述Android操作系统和IOS系统的区别;
  17. window——生成ssh密钥
  18. 如何用excel做多元回归分析
  19. 2019年中国在线酒店预订行业发展分析报告
  20. PHP对接网络游戏防沉迷实名认证系统

热门文章

  1. MRI炎症和结构损伤指标对TNF拮抗剂治疗AS患者获持续缓解的预测价值
  2. 前端优秀博客网站收集
  3. Centos 6.2部署CSVN服务器
  4. 使用Windows8开发Metro风格应用五
  5. (转)各种纹理贴图技术
  6. EXCEL_CLASS
  7. Engineering Department Bulletin News and information for the Department
  8. the worries in life: basically two things
  9. final year project prepare part one 认知论
  10. 【转】8086内部结构及原理