bzoj2460题解
【题意分析】
给你一个可重复数集,要求从中选取一个关于异或空间线性无关的子集,使子集的权值和最大。
【解题思路】
定义:一个有序对(S,I)称为拟阵当且仅当该有序对满足以下性质:
1.有穷性:S是一个有限集。
2.遗传性:I是S的一类具有遗传性质的非空子集族。具体地说,∀B∈I,若A⊂B,则A∈I。
3.交换性:I满足交换性。具体地说,∀A,B∈I不妨设|A|<|B|,必定存在某一元素x∈B-A,使A∪{x}∈I。
衍生概念:
独立子集:给定拟阵M=(S,I),A称为S的独立子集当且仅当A∈I。
可扩展元素:给定拟阵M=(S,I)与独立子集A∈I,若存在x∈S但x∉A,使得A∪{x}∈I,则称x为A的可扩展元素。
我们可以构造关于可重数集S的一个有序对M=(S,I),S所有的线性基的集合为I,M满足拟阵的性质的证明如下:
1.有穷性:显然存在有限线性基的情况下S是有限的。
2.遗传性:显然一个线性基的任意独立子集都关于异或空间线性无关。(根据线性基定义可得)
3.交换性:
求证:∀A,B∈I不妨设|A|<|B|,必定存在某一元素x∈B-A,使A∪{x}∈I。
证明:
我们假设∀A,B∈I不妨设|A|<|B|,∀x∈B-A,都有A∪{x}∉I。
于是有B与A的差集包含于A的异或空间,又显然B与A的交集包含于A的异或空间,则B包含于A的异或空间。
所以整个B的异或空间包含于A的异或空间,又A,B均线性无关,则有|A|>|B|,与前提|A|<|B|矛盾。命题得证。
引理:带权拟阵的贪心算法正确性证明(懒得写了QAQ,戳这里)
这样我们证明了权值和最大的线性基可以用贪心算法构造,所以按权值排序后贪心加入即可。复杂度O(n(log2n+log2∑numberi))。
【参考代码】
#include <algorithm>
#include <cstdio>
#include <functional>
#include <utility>
#define REP(i,low,high) for(register int i=(low);i<=(high);++i)
#define PER(i,high,low) for(register int i=(high);i>=(low);--i)
#define __function__(type) __attribute__((optimize("-O2"))) inline type
#define __procedure__ __attribute__((optimize("-O2"))) inline void
using namespace std;
typedef pair<int,long long> PIL; static int n; long long base[]; PIL a[]; __function__(bool) push(const long long&n)
{
long long x=n; PER(i,,) if((x>>i)&)
{
if(!base[i]) return base[i]=x,; x^=base[i];
}
return ;
} int main()
{
scanf("%d",&n);
REP(i,,n) scanf("%lld%d",&a[i].second,&a[i].first);
int ans=; sort(a+,a+n+,greater<PIL>());
REP(i,,n) ans+=push(a[i].second)*a[i].first;
return printf("%d\n",ans),;
}
bzoj2460题解的更多相关文章
- 洛谷 P4570 BZOJ 2460 [BJWC2011]元素
Time limit 20000 ms Memory limit 131072 kB OS Linux 解题思路 看题解可知 我们将矿石按照魔法值降序排序,然后依次将矿石编号放入线性基(突然想起线代里 ...
- 【题解】 bzoj2460: [BeiJing2011]元素 (线性基)
bzoj2460,戳我戳我 Solution: 线性基板子,没啥好说的,注意long long 就好了 Code: //It is coded by Ning_Mew on 5.29 #include ...
- 【BZOJ2460】元素(贪心,线性基)
[BZOJ2460]元素(贪心,线性基) 题面 BZOJ Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到 ...
- 【BZOJ2460】[BeiJing2011]元素 贪心+高斯消元求线性基
[BZOJ2460][BeiJing2011]元素 Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
随机推荐
- 合并流SequenceInputStream
合并流 SequenceInputStream概述 SequenceInputStream类可以将多个输入流串流在一起,合并为一个输入流,因次,该流也称为合并流. SequenceInputStrea ...
- C#之委托(二)
其实在上一篇委托(一)中,创建委托还是太繁琐了点.代码量过多,可能会妨碍我们对代码和逻辑的理解.有些时候可能处理逻辑的代码都笔声明委托的代码要少,这就不可避免的增加了重复代码的量.所以在c#2中极大的 ...
- 【Unity Shader】---CG标准函数库
1.CG标准函数库 和C的标准函数库类似,CG也提供了一系列的内建函数库,这些函数用于计算数学上的通用计算或算法(如纹理映射).例如:求取入射光线的反射光线用Reflect函数,求折射光线用Refla ...
- 安卓手机作为中继器-连接Wifi共享该Wifi给PC和手机
工具 routernet.apk
- web 前端1 html5基础
HTML web sockent 实例 import socket def handle_request(client): buf = client.recv(1024) client.sendall ...
- Linux安装Python3以及虚拟环境
python3的linux环境编译安装 1.linux下安装软件的方式 选则yum工具,方便,自行解决软件之间的依赖关系,自动下载且安装 1.配置yum源 可以选择阿里云源,清华源等 配置第一个仓库, ...
- Jquery中$(function(){})
1. 在哪书写js文件 如果我们要执行一段js代码,我们该怎么办呢? 1.我们可以写一个js文件,在js文件里写执行函数,然后再<script src='...'> ... </sc ...
- P3724 [AH2017/HNOI2017]大佬
传送门 发现保持自信和做其他事情互不干扰,可以直接做一次 $dp$ 求出最多能空出几天来怼大佬 然后就变成给你若干天,是否能怼死大佬,考虑求出所有的 天数和输出的嘲讽值集合,因为天数不多,嘲讽值增长很 ...
- 25、前端知识点--webpack篇之面试考点
前端面试之webpack篇 https://blog.csdn.net/sinat_17775997/article/details/78122999 关于webpack的面试题 随着现代前端开发的复 ...
- 攻防世界--srm-50
测试文件:https://adworld.xctf.org.cn/media/task/attachments/6df7b29f8f18437887ff4be163b567d5.exe 1.准备 获取 ...