这个题是对刚才线性基的一个补充,就是中间有一些小贪心,贪心就很有意思,先按权值排序,然后就瞎搞就行了.

题干:

  1. Description
  2.  
  3. 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔
  4. 法矿石炼制法杖的技术。那时人们就认识到,一个法杖的法力取决于使用的矿石。
  5. 一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而
  6. 使用了很多矿石,却在炼制过程中发现魔法矿石全部消失了,从而无法炼制
  7. 出法杖,这个现象被称为“魔法抵消” 。特别地,如果在炼制过程中使用超过
  8. 一块同一种矿石,那么一定会发生“魔法抵消”。
  9. 后来,随着人们认知水平的提高,这个现象得到了很好的解释。经过了大量
  10. 的实验后,著名法师 Dmitri 发现:如果给现在发现的每一种矿石进行合理的编
  11. 号(编号为正整数,称为该矿石的元素序号),那么,一个矿石组合会产生“魔
  12. 法抵消”当且仅当存在一个非空子集,那些矿石的元素序号按位异或起来
  13. 为零。 (如果你不清楚什么是异或,请参见下一页的名词解释。 )例如,使用两
  14. 个同样的矿石必将发生“魔法抵消”,因为这两种矿石的元素序号相同,异或起
  15. 来为零。
  16. 并且人们有了测定魔力的有效途径,已经知道了:合成出来的法杖的魔力
  17. 等于每一种矿石的法力之和。人们已经测定了现今发现的所有矿石的法力值,
  18. 并且通过实验推算出每一种矿石的元素序号。
  19. 现在,给定你以上的矿石信息,请你来计算一下当时可以炼制出的法杖最多
  20. 有多大的魔力。
  21.  
  22. Input
  23.  
  24. 第一行包含一个正整数N,表示矿石的种类数。
  25. 接下来 N行,每行两个正整数Numberi Magici,表示这种矿石的元素序号
  26. 和魔力值。
  27. Output
  28. 仅包一行,一个整数:最大的魔力值
  29. Sample Input
  30.  
  31. Sample Output
  32.  
  33. HINT
  34. 由于有“魔法抵消”这一事实,每一种矿石最多使用一块。
  35. 如果使用全部三种矿石,由于三者的元素序号异或起来: xor xor =
  36. 则会发生魔法抵消,得不到法杖。
  37. 可以发现,最佳方案是选择后两种矿石,法力为 +=。
  38. 对于全部的数据:N Numberi ^
  39. Magici ^

代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<ctime>
  5. #include<queue>
  6. #include<algorithm>
  7. #include<cstring>
  8. using namespace std;
  9. #define duke(i,a,n) for(int i = a;i <= n;i++)
  10. #define lv(i,a,n) for(int i = a;i >= n;i--)
  11. #define clean(a) memset(a,0,sizeof(a))
  12. const int INF = << ;
  13. typedef long long ll;
  14. typedef double db;
  15. template <class T>
  16. void read(T &x)
  17. {
  18. char c;
  19. bool op = ;
  20. while(c = getchar(), c < '' || c > '')
  21. if(c == '-') op = ;
  22. x = c - '';
  23. while(c = getchar(), c >= '' && c <= '')
  24. x = x * + c - '';
  25. if(op) x = -x;
  26. }
  27. template <class T>
  28. void write(T x)
  29. {
  30. if(x < ) putchar('-'), x = -x;
  31. if(x >= ) write(x / );
  32. putchar('' + x % );
  33. }
  34. struct node
  35. {
  36. ll x,y;
  37. }a[];
  38. ll ans = ,n;
  39. ll p[];
  40. bool cmp(node a,node b)
  41. {
  42. return a.y > b.y;
  43. }
  44. void get_num(int f,ll x)
  45. {
  46. lv(i,,)
  47. {
  48. if(!(x & (1LL << i)))
  49. continue;
  50. if(!p[i])
  51. {
  52. p[i] = x;
  53. break;
  54. }
  55. x ^= p[i];
  56. }
  57. if(x != )
  58. ans += a[f].y;
  59. }
  60. int main()
  61. {
  62. read(n);
  63. duke(i,,n)
  64. {
  65. read(a[i].x);
  66. read(a[i].y);
  67. }
  68. sort(a + ,a + n + ,cmp);
  69. duke(i,,n)
  70. {
  71. get_num(i,a[i].x);
  72. }
  73. printf("%lld\n",ans);
  74. return ;
  75. }
  76. /*
  77. 3
  78. 1 10
  79. 2 20
  80. 3 30
  81. */

B2460 [BeiJing2011]元素 线性基的更多相关文章

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

    2460: [BeiJing2011]元素 Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力 ...

  2. BZOJ.2460.[BeiJing2011]元素(线性基 贪心)

    题目链接 线性基:https://blog.csdn.net/qq_36056315/article/details/79819714. \(Description\) 求一组矿石,满足其下标异或和不 ...

  3. BZOJ 2460 [BeiJing2011]元素 ——线性基

    [题目分析] 线性基,由于最多有63个,只需要排序之后,动态的去维护线性基即可. [代码] #include <cstdio> #include <cstring> #incl ...

  4. BZOJ-6-2460: [BeiJing2011]元素-线性基

    链接 :https://www.lydsy.com/JudgeOnline/problem.php?id=2460 思路 :线性基不唯一,所以排序 进行贪心选择,价值最大的线性基, #include& ...

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

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2460 题意: 给你一堆矿石,矿石有a,b两种性质,取任意个矿石,满足取得的这些矿石a性质异或 ...

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

    题目大意: 有一些矿石,每个矿石有一个a和一个b值,要求选出一些矿石,b的和最大且不存在某个矿石子集它们的a的异或和为0. 解题关键:对魔力进行由大到小排序,依次加入线性基,统计即可. #includ ...

  7. [BZOJ2460][BJOI2011]元素(线性基)

    2460: [BeiJing2011]元素 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 2195  Solved: 1119[Submit][Sta ...

  8. BZOJ 2460 [BeiJing2011]元素(线性基模板题)

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

  9. 【BZOJ2460】【BJOI2011】元素 [线性基]

    元素 Time Limit: 20 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 相传,在远古时期,位于西方大陆的 Ma ...

随机推荐

  1. 清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具

    https://gitee.com/bitprince/memory 1. 概述 1.1 连接.语句和结果集 从JDBC的规范上看,其对数据访问层有相当简洁的抽象:1.连接(connection) 2 ...

  2. The type new View.OnClickListener(){} must implement the inherited abstract method View.Onclicklis

    public class MainActivity extends Activity { protected Button startBrew = null; @Override protected ...

  3. javascript的严格模式:use strict

    ECMAscript 5添加的运行模式,禁止一些非标准.不安全的操作. <script> "use strict"; console.log("这是严格模式. ...

  4. 大白_uva10795_新汉诺塔

    题意:给出所有盘子的初态和终态,问最少多少步能从初态走到终态,其余规则和老汉诺塔一样. 思路: 若要把当前最大的盘子m从1移动到3,那么首先必须把剩下的所有盘子1~m-1放到2上,然后把m放到3上. ...

  5. HDU_1087_Super Jumping! Jumping! Jumping!_dp

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  6. C/C++ 之数组排序

    #include <stdio.h> #include <stdlib.h> void array_sort(int *a, int len) { int i, j, tmp; ...

  7. iPhone设备当前IP和SSID的获取

    #import <Foundation/Foundation.h> typedef void(^Complation)(NSString *res); @interface WIFIMan ...

  8. uva 1585 Score(Uva-1585)

    vj:https://vjudge.net/problem/UVA-1585 不多说水题一个o一直加x就加的变为0 我的代码 #include <iostream> #include &l ...

  9. 66.零停机下reindex

    主要知识点: 理解reindex的使用场景和必要性 学会reindex         一.理解reindex的使用场景和必要性 假设:在某一个index中依靠dynamic mapping插入数据, ...

  10. Mac在python3环境下安装virtualwrapper遇到的问题

    前言 我在使用mac安装virtualwrapper的时候遇到了问题,搞了好长时间,才弄好,在这里总结一下分享出来,供遇到相同的问题的朋友使用,少走些弯路. 问题说明: Mac默认系统的python2 ...