题目描述-->p4570 [BJWC2011]元素

题目大意

给定一些矿石的编号与价值,我们想要得到最大的价值和,并且选定物品的编号异或之和不为0.

分析

线性基就不多bb了,来这里->p3812 [模板]线性基

贪心

我们从小到大,选择价值大的矿石,满足异或之和不为零的条件,我们就可以加上它的贡献.

因此我们需要用到sort对价值从小到大排序.

线性基.

这题线性基有什么用?说实话开始我也没想到

我们很容易想到.

如果某个矿石能被使用,那它的编号的二进制下某一位一定是已经出现过的矿石编号中不存在的.(这句话还是仔细研读,应该不难理解,qwq.

这句话简单来讲.对于某一个编号x,我们检验其与之前已选编号时候异或起来为0.

(因为线性基进行插入元素的操作时,我们会对这个元素的大小进行削减是这么说吧.)

因此不难证明用线性基维护是正确的.

因此我们对已经选入的矿石的编号维护线性基.(那这题就裸了.

如果满足条件(异或之和不为0),我们就可以选择它,加上它的价值.

------------------代码-------------------

#include<bits/stdc++.h>
#define int long long
#define IL inline
#define RI register int
using namespace std;
int n,ans,p[64];
struct cod{int idx,w;}rock[1008];
IL bool ccp(const cod&a,const cod&b){return a.w>b.w;}
IL bool ins(int x)
{
for(RI i=63;i>=0;i--)
{
if(x&(1LL<<i))
{
if(p[i])
x^=p[i];//削减操作
else
{
p[i]=x;//如果之前选择的编号的当前一位不存在,而我的存在.
return true;//即能选择当前编号.
}
}
}
return false;
}
main()
{
ios::sync_with_stdio(false);
cin>>n;
for(RI i=1;i<=n;i++)
cin>>rock[i].idx>>rock[i].w;
stable_sort(rock+1,rock+n+1,ccp);
for(RI i=1;i<=n;i++)
if(ins(rock[i].idx))
ans+=rock[i].w;
cout<<ans;
}

线性基【p4570】 [BJWC2011]元素的更多相关文章

  1. 【题解】P4570 [BJWC2011]元素 - 线性基 - 贪心

    P4570 [BJWC2011]元素 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 给你 \(n\) 个二元组 \( ...

  2. 洛谷P4570 [BJWC2011]元素 线性基

    正解:线性基+贪心 解题报告: 传送门! 这题其实没什么好写题解的,,,显然贪心一下尽量选魔力大的,不用证明趴挺显然的来着 所以就直接按魔力排个序,插入线性基里面,能插就加个贡献,over 放下代码趴 ...

  3. 洛谷P4570 [BJWC2011]元素(线性基)

    传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 考虑贪心 将所有的矿石按价值从大到小排序 如果一块矿石不会和之前的编号异或为0就加入 这个只要判一下它能不能加进线性基里就可以了 据说这个贪心的证明 ...

  4. P4570 [BJWC2011]元素 线性基 + 贪心

    题意 给定n个物品,每个物品有一个编号和价值,问如何取使得拿到的物品价值总和最大,并且取得物品的编号的子集异或和不能为0. 思路 这是个贪心,我们先按照价值从大到小排序,然后贪心地取,如果当前要取的物 ...

  5. BZOJ 2460 & 洛谷 P4570 [BJWC2011]元素 (线性基 贪心)

    题目链接: 洛谷 BZOJ 题意 给定 \(n\) 个矿石,每个矿石有编号和魔力值两种属性,选择一些矿石,使得魔力值最大且编号的异或和不为 0. 思路 线性基 贪心 根据矿石的魔力值从大到小排序. 线 ...

  6. P4570 [BJWC2011]元素 (线性基)

    题意:n个石头 每个石头有a,b两个属性 要求选出一些石头使得没有一个子集的a属性xor和为0 且b属性和最大 题解:线性基例题了.. 好像需要理解一些性质 1.原序列里任一数都可有由线性基xor得到 ...

  7. p4570 [BJWC2011]元素

    传送门 分析 对法力值从大到小排序然后对编号跑线性基即可 代码 #include<iostream> #include<cstdio> #include<cstring& ...

  8. BZOJ 2460:元素(贪心+线性基)

    题目链接 题意 中文题意 思路 线性基学习 题目要求选价值最大的并且这些数异或后不为0,可以考虑线性基的性质:线性基的任意一个非空集合XOR之和不会为0.那么就可以贪心地对价值从大到小排序,加入线性基 ...

  9. 【BZOJ1299】巧克力棒(博弈论,线性基)

    [BZOJ1299]巧克力棒(博弈论,线性基) 题面 BZOJ 题解 \(Nim\)博弈的变形形式. 显然,如果我们不考虑拿巧克力棒出来的话,这就是一个裸的\(Nim\)博弈. 但是现在可以加入巧克力 ...

随机推荐

  1. canda 常用命令

    1.获取版本 conda -V conda --version 2.获取帮助 conda -h conda --help 查看某一命令的帮助 conda install -h conda instal ...

  2. DesiredCapabilities的作用

    负责启动服务端时的参数设置,启动session的时候是必须提供的. Desired Capabilities本质上是key value的对象,它告诉appium server这样一些事情,比如: 本次 ...

  3. QA面试题:之一(中英文题目、难度:简单)

    QA面试题:之一(中英文题目.难度:简单)

  4. neutron floating ip 限速

    查看浮动ip的id [root@10e131e69e14 oz]# openstack floating ip show 36.111.0.197 +---------------------+--- ...

  5. nginx限速白名单配置

    在<nginx限制连接数ngx_http_limit_conn_module模块>和<nginx限制请求数ngx_http_limit_req_module模块>中会对所有的I ...

  6. 第十四篇:JavaScript

    本篇内容 简介 使用 DOM 一. 简介 JavaScript 是世界上最流行的编程语言. 这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备. Ja ...

  7. iOS大神班笔记02-模仿苹果创建单例

    首先我们得要知道苹果是如何实现单例的:1.不能外界调用alloc,一调用就崩掉,其实就是抛异常(类内部第一次调用alloc就不崩溃,其他都崩溃). 2.提供一个方法给外界获取单例.  3.内部创建一次 ...

  8. [bzoj3601] 一个人的数论 [莫比乌斯反演+高斯消元]

    题面 传送门 思路 这题妙啊 先把式子摆出来 $f_n(d)=\sum_{i=1}^n[gcd(i,n)==1]i^d$ 这个$gcd$看着碍眼,我们把它反演掉 $f_n(d)=\sum_{i=1}^ ...

  9. 【CF Round 439 A. The Artful Expedient】

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  10. WINDOWS2008 KMS 服务器安装及激活

    搭建环境条件: windows server 2008 enterprise 安装光盘kms密钥kms服务安装步骤: 安装第一台windows server 2008 enterprise服务器用km ...