BZOJ 2460: [BeiJing2011]元素 排序,线形基,异或消元
来源:互联网 发布:nuc977dk62y数据手册 编辑:程序博客网 时间:2024/05/22 15:08
题意:有一些矿石,每个矿石有一个a和一个b值,要求选出一些矿石,b的和最大且不存在某个矿石子集它们的a的异或和为0。
解法:向按b从大到小排序,依次加入矿石,判断和前面选中的矿石是否冲突。 可以发现这个过程和前面求线性基的算法是一样的。贪心的正确性 证明可以用拟阵。 可以参考 刘雨辰的 《对拟阵的初步研究》的线性拟阵内容 。我是yy的。
//BZOJ 2460#include <bits/stdc++.h>using namespace std;const int maxn = 1010;struct node{ long long a, b; node(){} node(int a, int b) : a(a), b(b) {} bool operator < (const node &rhs) const{ return b > rhs.b; }}p[maxn];long long A[63]; //线形基int main(){ int n; scanf("%d", &n); long long ans = 0; for(int i = 1; i <= n; i++) scanf("%lld%lld", &p[i].a, &p[i].b); sort(p+ 1, p+n+1); for(int i = 1; i <= n; i++){ for(int j = 61; j >= 0; j--){ if((p[i].a >> j) & 1){ if(A[j]) p[i].a ^= A[j]; else {A[j] = p[i].a; break;} } } if(p[i].a) ans += p[i].b; } printf("%lld\n", ans); return 0;}
0 0
- BZOJ 2460: [BeiJing2011]元素 排序,线形基,异或消元
- Bzoj 2460: [BeiJing2011]元素
- BZOJ 2460 [BeiJing2011] 元素
- 【BZOJ】2460: [BeiJing2011]元素
- bzoj 2460 [BeiJing2011]元素
- bzoj 2460: [BeiJing2011]元素
- bzoj 2460: [BeiJing2011]元素(线性基)
- bzoj 2460: [BeiJing2011]元素 线性基+贪心
- [BZOJ]2460: [BeiJing2011]元素 线性基+贪心
- BZOJ 2460 [BeiJing2011]元素 线性基入门
- 线性基(bzoj 2460: [BeiJing2011]元素)
- [高斯消元 线性基 贪心 拟阵] BZOJ 2460 [BeiJing2011]元素
- BZOJ 2460 BeiJing2011 元素 贪心+高斯消元
- 【BZOJ 2060】[BeiJing2011]元素 线性基
- HDU 3949 XOR 线形基,异或消元,求一个数组的第k小异或和
- BZOJ 2460 [BeiJing2011]元素 拟阵+极大线性无关组
- 2460: [BeiJing2011]元素 贪心+线性基
- 2460: [BeiJing2011]元素|线性基|高斯消元|贪心
- 坦克胆战
- JavaScript知识点总结---------001(前述)
- 【数据结构_顺序表_List_0943】顺序表插入操作的实践
- Doing Homework again 贪心算法
- nginx系统真正有效的图片防盗链完整设置详解
- BZOJ 2460: [BeiJing2011]元素 排序,线形基,异或消元
- 网页loading(加载)效果的实现
- 关于主板换固态硬盘装系统无法装起可能原因之一
- 【玲珑】1099
- 【Hibernate】Hibernate的映射关系
- 机房-----关系
- LeetCode 338 Counting Bits
- IntelliJ IDEA常用快捷键汇总
- C++第三次实验-利息计算器和月的天数