BZOJ2460 [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。
Source
Day2
1 //It is made by jump~ 2 #include <iostream> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cstdio> 6 #include <cmath> 7 #include <algorithm> 8 #include <ctime> 9 #include <vector> 10 #include <queue> 11 #include <map> 12 #include <set> 13 using namespace std; 14 typedef long long LL; 15 const int MAXN = 1011; 16 int n; 17 LL ans,p[64]; 18 struct thing{ 19 int w; 20 LL id; 21 }a[MAXN]; 22 23 inline int getint() 24 { 25 int w=0,q=0; char c=getchar(); 26 while((c<'0' || c>'9') && c!='-') c=getchar(); if(c=='-') q=1,c=getchar(); 27 while (c>='0' && c<='9') w=w*10+c-'0', c=getchar(); return q ? -w : w; 28 } 29 inline LL getlong() 30 { 31 LL w=0,q=0; char c=getchar(); 32 while((c<'0' || c>'9') && c!='-') c=getchar(); if(c=='-') q=1,c=getchar(); 33 while (c>='0' && c<='9') w=w*10+c-'0', c=getchar(); return q ? -w : w; 34 } 35 inline bool cmp(thing q,thing qq){ return q.w>qq.w; } 36 37 inline void work(){ 38 n=getint(); for(int i=1;i<=n;i++) a[i].id=getlong(),a[i].w=getint(); 39 sort(a+1,a+n+1,cmp);//贪心地插入到线性基当中,权值越大的贡献越大,所以如果能插入线性基当中越早越好 40 for(int i=1;i<=n;i++) { 41 for(int j=62;j>=0;j--) { 42 if(!(a[i].id>>j)) continue;//对线性基的这一位没有贡献 43 if(!p[j]) { p[j]=a[i].id; break; }//选入线性基中 44 a[i].id^=p[j]; 45 } 46 if(a[i].id!=0) ans+=a[i].w; 47 } 48 printf("%lld",ans); 49 } 50 51 int main() 52 { 53 work(); 54 return 0; 55 }
转载于:https://www.cnblogs.com/ljh2000-jump/p/5868888.html
BZOJ2460 [BeiJing2011]元素相关推荐
- BZOJ2460: [BeiJing2011]元素(线性基+贪心)
BZOJ2460: [BeiJing2011]元素 Time Limit: 20 Sec Memory Limit: 128 MB Description 相传,在远古时期,位于西方大陆的 Magic ...
- [BZOJ2460][BeiJing2011]元素
Time Limit: 20 Sec Memory Limit: 128 MB Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技 ...
- bzoj2460: [BeiJing2011]元素
怕不是学了个假的线性基...一直以为要高位到低位插入,结果那个是高斯消元的线性基... 那么直接排序权值就行了. #include<cstdio> #include<iostream ...
- bzoj2460 [BeiJing2011]元素 贪心+线性基
线性基其实和向量关系很近.只是他们都是单位向量 然后重复的01组判断方式类似高斯消元判无消方程的情况 由于出现无解方程类似于一个环,所以这个线性无关组就类似一棵树,所以就可以用类似kruskal的方法 ...
- BZOJ 2460: [BeiJing2011]元素 线性基
2460: [BeiJing2011]元素 Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法 ...
- 线性基(bzoj 2460: [BeiJing2011]元素)
线性基: 包含最多h个数(a1, a2, a3, -, ah),其中ak如果存在,那么最高位一定是第k位 性质①:线性基中任意集合xor出来的数的值域 = 原数列任意集合xor出的数的值域 性质②:线 ...
- 贪心+线性基 [BeiJing2011]元素
问题 C: [BeiJing2011]元素 时间限制: 2 Sec 内存限制: 128 MB 提交: 25 解决: 16 [提交][状态][讨论版] 题目描述 相传,在远古时期,位于西方大陆的 Mag ...
- 2460: [BeiJing2011]元素
2460: [BeiJing2011]元素 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 788 Solved: 421 [ Submit][ ...
- 【bzoj2460】[BeiJing2011]元素 贪心+高斯消元求线性基
题目描述 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反 ...
最新文章
- 大规模 Node.js 网关架构设计与工程实践
- Linux VNC server 安装配置
- Linux 移除python Error: Trying to remove “yum”, which is protected
- java zip压缩_压缩工具
- Linux赋予目录或文件任何人都可以读、写、执行的操作
- redis中的key设置了过期时间了还会在持久化到文件中吗
- shell - 查看天气
- 1013-----C语言----------几个va_宏函数的使用
- socket 支持 ipv6
- 在知网下载硕士的论文PDF格式无需安装CAJ软件
- python 分词及语义识别
- python table删除一列_在python中从dataframe中删除多个列
- H264视频传输、编解码----H264数据结构
- OpenJ_Bailian - 2714 求平均年龄
- AppNode面板安装搭建教程
- 沉痛哀悼我的弟弟-恽小华-南理工教授,候选中科院院士——一声叹息
- 大数据与云计算概论2
- Ubuntu 壁纸下载
- 获取本机ip和端口号
- python用户登录a_Python入门案例-用户注册和登录
热门文章
- Ubuntu安装OpenSSH让向日葵可以远程控制
- 玉米收割机割台的设计 开题报告
- 人脸跟踪:KCF核相关滤波算法
- python程序怎么保存到u盘_Python 骚操作,自动拷贝U盘
- 如何恢复苹果笔记本电脑误删的数据?
- pythonturtle写字_对于Python turtle的学习笔记
- 计算机二级ms office必背知识点,计算机二级MS Office 函数必背考点资料
- 五面拿下阿里飞猪offer,思维图+核心+架构让你一步到位,全网首发!
- 斗地主游戏制作流程(1)
- Android双卡手机:获取主卡副卡的simid(上)方案实现