【贪心】【线性基】bzoj2460 [BeiJing2011]元素
题意:让你求一些数在XOR下的带权极大无关组。
带权极大无关组可以用贪心,将这些数按权值从大到小排序之后,依次检验其与之前的数是否全都线性无关。可以用线性基来搞。
可以用拟阵严格证明,不过也可以脑补一下……
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll d[64],p[64];
int cnt;//简化线性基的大小
bool Insert(ll val){//尝试插入线性基,返回是否插入成功
for(int i=62;i>=0;--i){
if(val&(1ll<<i)){
if(!d[i]){
d[i]=val;
break;
}
val^=d[i];
}
}
return val>0;
}
ll QueryMax(){
ll res=0;
for(int i=62;i>=0;--i){
if((res^d[i])>res){
res^=d[i];
}
}
return res;
}
ll QueryMin(){
for(int i=0;i<=62;++i){
if(d[i]){
return d[i];
}
}
return 0;
}
void Rebuild(){//化为简化线性基
for(int i=62;i>=0;--i){
for(int j=i-1;j>=0;--j){
if(d[i]&(1ll<<j)){
d[i]^=d[j];
}
}
}
for(int i=0;i<=60;++i){
if(d[i]){
p[cnt++]=d[i];
}
}
}
ll Kth(ll K){
ll res=0;
if(K>=(1ll<<cnt)){
return -1ll;
}
for(int i=60;i>=0;--i){
if(K&(1ll<<i)){
res^=p[i];
}
}
return res;
}
int n;
struct Point{
ll x,y;
Point(const ll &x,const ll &y){
this->x=x;
this->y=y;
}
Point(){}
};
Point a[1005];
bool cmp(const Point &a,const Point &b){
return a.y>b.y;
}
int main(){
// freopen("bzoj2460.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%lld%lld",&a[i].x,&a[i].y);
}
sort(a+1,a+n+1,cmp);
ll ans=0;
for(int i=1;i<=n;++i){
if(Insert(a[i].x)){
ans+=a[i].y;
}
}
printf("%lld\n",ans);
return 0;
}
【贪心】【线性基】bzoj2460 [BeiJing2011]元素的更多相关文章
- BZOJ 2460:元素(贪心+线性基)
题目链接 题意 中文题意 思路 线性基学习 题目要求选价值最大的并且这些数异或后不为0,可以考虑线性基的性质:线性基的任意一个非空集合XOR之和不会为0.那么就可以贪心地对价值从大到小排序,加入线性基 ...
- BZOJ2460 [BeiJing2011]元素
Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越 ...
- BZOJ2460 Beijing2011元素(线性基+贪心)
按价值从大到小考虑每个元素,维护一个线性基,如果向其中加入该元素的编号仍然构成线性基,则将其加入. 不会证明.当做线性基的一个性质吧. #include<iostream> #includ ...
- [bzoj2460] [BeiJing2011]元素(线性基+贪心)
题目大意: 有一些矿石,每个矿石有一个a和一个b值,要求选出一些矿石,b的和最大且不存在某个矿石子集它们的a的异或和为0. 解题关键:对魔力进行由大到小排序,依次加入线性基,统计即可. #includ ...
- [BeiJing2011]元素[贪心+线性基]
2460: [BeiJing2011]元素 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1245 Solved: 652[Submit][Stat ...
- BZOJ2460 [BeiJing2011]元素 【线性基】
2460: [BeiJing2011]元素 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 1675 Solved: 869 [Submit][St ...
- BZOJ2460:[BJWC2011]元素(贪心,线性基)
Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越 ...
- 【题解】 bzoj2460: [BeiJing2011]元素 (线性基)
bzoj2460,戳我戳我 Solution: 线性基板子,没啥好说的,注意long long 就好了 Code: //It is coded by Ning_Mew on 5.29 #include ...
- BZOJ - 2460 :元素 (贪心&线性基)
相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越强,但物极必反:有时,人们 ...
随机推荐
- JAVA list 列表 字典 dict
import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; pu ...
- 边缘检测:Canny算子,Sobel算子,Laplace算子
1.canny算子 Canny边缘检测算子是John F.Canny于 1986 年开发出来的一个多级边缘检测算法.更为重要的是 Canny 创立了边缘检测计算理论(Computational the ...
- C# SuperSocket 消息推送
服务端使用Nuget引用SuperSocket.WebSocket和SuperSocket.Engine 服务器端代码[控制台] using SuperSocket.WebSocket; using ...
- error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'
error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System. ...
- shell 文件内容替换 sed用法
sed 's/要被替换的字符串/新的字符串/g' sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest. 如果没有g标记,则只有每行第一个匹配的 ...
- 【Linux学习】nohup后台运行程序以及输出重定向
Linux有两种命令使程序后台运行 第一种:支持后台运行,但是关闭终端的话,程序也会停止 command & 第二种:支持后台运行,关闭终端后,程序也会继续运行 nohup command & ...
- in_device结构和in_ifaddr结构
/* ip配置块 */ struct in_device { /* 二层设备 */ struct net_device *dev; /* 引用计数 */ atomic_t refcnt; /* 是否正 ...
- charger related source code position
Platform Qualcomm MSM8917 or MSM8937 Source kernel/msm-3.18/drivers/power/qpnp-smbcharger.c kernel/m ...
- Makefile parameters pass 參數傳遞
command $make ARCH=7777777777777777777777777777777 Makefile content $(warning $(ARCH)) output Makefi ...
- 菜鸟进阶之:VC++之Visual Studio中DLL调用实现
C++写的DLL,用C++调用其实是一个比较简单的事情,调用DLL函数的方法其实有很多,说一个最普通的方法: 1.新建一个解决方案,文件->新建项目->Visual c++->win ...