正题

题目链接:https://www.luogu.com.cn/problem/P4570


题目大意

给出nnn个物品有aia_iai​和bib_ibi​。要求选出一个bib_ibi​和最大的子集满足其中的aia_iai​不能由其中的其他aia_iai​异或得到


解题思路

我们发现对于一个集合能否加入一个物品其实就是判断aia_iai​是否能插入当前集合的线性基。每次插入一个物品必定会使得一个did_idi​改变,也就是每次禁止掉一个did_idi​就必定会使得一个物品无法选择。

对于一个无法插入的物品xxx,也就是若干个did_idi​异或得到xxx。如果删除其中一个d?d_?d?​就可以插入xxx,那么就有若干的did_idi​异或xxx得到d?d_?d?​也就是我们每次插入一个无法插入的数就可以删除其中的一个数并且不会改变当前的线性基。

那么我们按照bib_ibi​从大到小排序然后依次插入,那么无法插入的一定不会插入,因为插入就会替换出一个bib_ibi​更大的物品。

时间复杂度O(60n+nlog⁡n)O(60n+n\log n)O(60n+nlogn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1100;
ll n,a[N],b[N],p[N],d[80],ans;
bool cmp(ll x,ll y)
{return b[x]>b[y];}
void add(ll x,ll y){for(ll i=60;i>=0;i--)if((x>>i)&1ll){if(d[i])x^=d[i];else{d[i]=x;if(x)ans+=y;break;}}return;
}
int main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++)scanf("%lld%lld",&a[i],&b[i]),p[i]=i;sort(p+1,p+1+n,cmp);for(ll i=1;i<=n;i++)add(a[p[i]],b[p[i]]);printf("%lld",ans);
}

P4570-[BJWC2011]元素【线性基,贪心】相关推荐

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

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

  2. 【Bzoj 2460 [BeiJing2011]】——元素 线性基+贪心

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

  3. 【CodeForces 1100F】异或线性基 | 贪心 | 离线区间最大异或和 | E

    补题ing- 真的不应该错过这场比赛的 qwq 1100F. Ivan and Burgers time limit per test: 3 seconds memory limit per test ...

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

    题目链接:https://www.luogu.org/problem/P4570 题目大意: 给一个序列,在这个序列中选一些数,这些数的魔法值之和要最大,要求这些数中任意几个数的异或和不为0. 解题报 ...

  5. BZOJ2460: [BeiJing2011]元素(线性基+贪心)

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

  6. 【BZOJ2460】元素,线性基+贪心

    Time:2016.09.07 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 水题 有一个比较明显的性质 如果一个数x不能添加到已选集合中,那么有且只有一个已选集合中的子集A,使得 ...

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

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

  8. 【BZOJ3105】新Nim游戏,线性基+贪心

    Time:2016.09.08 Author:xiaoyimi 转载注明出处谢谢 思路: 思路题 看似简单,但是使用的知识还是很有意思(sang bing)的 首先就是关于Nim游戏 总之就是第一次取 ...

  9. P4570 [BJWC2011]元素题解

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

最新文章

  1. pyqt 照片打上水印
  2. CTFshow 反序列化 web264
  3. 都21世纪20年代了,还有人问我学网络安全干嘛,你自己看吧
  4. Navicat设置字段类型
  5. markdown输出为pdf没有图片怎么办?
  6. 一个独立测试组织工作的五大方面
  7. sketch 将动图转换为json_开源 | Picasso:sketch设计稿智能解析工具
  8. ORACLE与.NET类型对应关系(转)
  9. 以JTextPanel为例Swing的鼠标事件详解
  10. 管理新语:一项工作如果一定要上,不要等准备好,立即上
  11. Proteus仿真:行列式键盘
  12. 通信专业顶刊_通信类会议期刊排名(转)
  13. 松下伺服驱动器A4系列图纸
  14. Redis imgrate迁移键 (error) ERR Target instance replied with error: NOAUTH Authentication required.
  15. G1 垃圾收集器详解
  16. Oracle数据字典表
  17. python findall函数用法_Python--re模块的findall等用法
  18. 18年大专毕业,转行入职车载测试岗位,薪资13K
  19. 一线互联网架构师筑基必备技能之Java篇,一招彻底弄懂!
  20. MEM/MBA数学基础(04)方程 函数 不等式

热门文章

  1. PHP 接收 UDP包_php只能做网站?基于swoole+websocket开发双向通信应用
  2. 苹果手机透明桌面_原来苹果手机辨别真假很容易!查看桌面1个图标,就能轻松分辨...
  3. ORACLE数据加载加本,使用oracle sqlldr加载数据
  4. python 中文编码差异_Python 编码为什么那么蛋疼?
  5. php myadmin怎么用,关于apachemysqlphpmyadmin的安装与配置
  6. java的编译器怎么出来_怎样掌握ava编译器的使用,教程在这里,如何进行Java初级学习...
  7. azure linux 多磁盘 lvm,EVE-NG扩展磁盘空间(扩展LVM卷)
  8. 机器学习之数据集划分——训练集测试集划分,划分函数,估计器的使用
  9. [Swagger2]SpringBoot集成Swagger
  10. 堆的定义与操作(C语言)