BZOJ 2460 BeiJing2011 元素 贪心+高斯消元
2015-01-09 18:33
337 查看
题目大意:给定一些元素,每个元素有两个值a和b,现在需要选出一些元素,在不存在a值异或和为0的子集的情况下使b之和最大
可以用拟阵证明贪心的正确性(我不会证,同学会)
于是我们将b值排序,从大到小插入
动态维护线性基即可
可以用拟阵证明贪心的正确性(我不会证,同学会)
于是我们将b值排序,从大到小插入
动态维护线性基即可
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define M 1010 using namespace std; struct abcd{ long long a; int b; friend istream& operator >> (istream& _,abcd &x) { _>>x.a>>x.b; return _; } bool operator < (const abcd &x) const { return b > x.b ; } }a[M]; int n; long long ans,linear_bases[70]; int main() { int i,j; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); for(i=1;i<=n;i++) { for(j=62;~j;j--) if(a[i].a&(1ll<<j) ) { if(!linear_bases[j]) { linear_bases[j]=a[i].a; break; } a[i].a^=linear_bases[j]; } if(a[i].a) ans+=a[i].b; } cout<<ans<<endl; }
相关文章推荐
- 【BZOJ2460】[BeiJing2011]元素 贪心+高斯消元求线性基
- 【bzoj2460】[BeiJing2011]元素 贪心+高斯消元求线性基
- [高斯消元 线性基 贪心 拟阵] BZOJ 2460 [BeiJing2011]元素
- 【BZOJ2460】【贪心】【拟阵】【高斯消元】[BeiJing2011]元素
- [BZOJ2460][BeiJing2011]元素(贪心+高斯消元求线性基)
- 2460: [BeiJing2011]元素|线性基|高斯消元|贪心
- bzoj2460 [BeiJing2011]元素(贪心+线性基)
- [线性基+贪心] BZOJ2460: [BeiJing2011]元素
- 【Bzoj 2460 [BeiJing2011]】——元素 线性基+贪心
- BZOJ2460 Beijing2011元素(线性基+贪心)
- BZOJ 2460: [BeiJing2011]元素 贪心,线性基
- bzoj 2460: [BeiJing2011]元素 线性基+贪心
- [BZOJ]2460: [BeiJing2011]元素 线性基+贪心
- 【bzoj2460】【beijing2011】【元素】【线性基+贪心】
- bzoj2460 [BeiJing2011]元素 贪心+线性基
- 【贪心】【线性基】bzoj2460 [BeiJing2011]元素 / bzoj3105 [cqoi2013]新Nim游戏
- 【贪心】【线性基】bzoj2460 [BeiJing2011]元素
- BZOJ 2460 [BeiJing2011]元素 ——线性基
- BZOJ 2322 BeiJing2011 梦想封印 高斯消元
- 2460: [BeiJing2011]元素 贪心+线性基