2460: [BeiJing2011]元素|线性基|高斯消元|贪心
2016-03-19 15:19
525 查看
贪心从大到小加入,正确性不是很会证(根本不会证),需要用到拟阵来证明
总之做法就是从大到小贪心加入,如果不与已选的元素冲突,那么就贪心选他
总之做法就是从大到小贪心加入,如果不与已选的元素冲突,那么就贪心选他
#include<iostream> #include<algorithm> #include<cstdlib> #include<cstdio> #include<cstring> #include<vector> #include<cmath> #include<complex> #include<queue> #include<map> #include<set> #define ll long long #define N 1005 using namespace std; ll sc() { ll i=0; char c=getchar(); while( c>'9' || c<'0' ) c=getchar(); while( c>='0' && c<='9' )i=i*10+c-'0',c=getchar(); return i; } struct W{int x;ll a;}a ; ll ins[66],ans; int n; bool cmp(W a,W b) { return a.x>b.x; } int main() { n=sc(); for(int i=1;i<=n;i++) a[i].a=sc(),a[i].x=sc(); sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) { for(int k=65;k>=0;k--) { if((a[i].a>>k)&1) { if(!ins[k]) { ins[k]=a[i].a; break; } a[i].a^=ins[k]; } } if(a[i].a)ans+=a[i].x; } cout<<ans; return 0; }
相关文章推荐
- 设计模式之代理模式
- Linux下的多线程编程
- 203. Remove Linked List Elements【E】【70】【leetcode】
- CentOS下怎么退出telnet
- html第二节课
- JavaScript引用类型--Function类型
- 如何免费搭建自己的个人网站
- 集合的使用
- 安装POSTMAN插件
- Java中,如何调用“其他类的方法中生成的实例化的对象”的属性?
- Linux多线程编程小结
- 3743加强版(有重复元素)(14年多校)(4911)
- 关于FMDB的基本使用
- 11.投票系统(3)
- Ack 框架分析
- cpu缓存与多线程
- JAVA高级程序设计
- ZOJ 3620 Escape Time II【dfs】
- Linux学习之基础命令
- {小结}USACO NOV06