BZOJ2460,LG4570 [BJWC2011]元素】的更多相关文章

题意 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而使用了很多矿石,却在炼制过程中发现魔法矿石全部消失了,从而无法炼制出法杖,这个现象被称为"魔法抵消" .特别地,如果在炼制过程中使用超过一块同一种矿石,那么一定会发生"魔法抵消".后来,随着人们认知水平的提高,这个现象得到了很好的解释.经过了…
题目描述-->p4570 [BJWC2011]元素 题目大意 给定一些矿石的编号与价值,我们想要得到最大的价值和,并且选定物品的编号异或之和不为0. 分析 线性基就不多bb了,来这里->p3812 [模板]线性基 贪心 我们从小到大,选择价值大的矿石,满足异或之和不为零的条件,我们就可以加上它的贡献. 因此我们需要用到sort对价值从小到大排序. 线性基. 这题线性基有什么用?说实话开始我也没想到 我们很容易想到. 如果某个矿石能被使用,那它的编号的二进制下某一位一定是已经出现过的矿石编号中不…
[BZOJ2460][BeiJing2011]元素 Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而使用了很多矿石,却在炼制过程中发现魔法矿石全部消失了,从而无法炼制出法杖,这个现象被称为“魔法抵消” .特别地,如果在炼制过程中使用超过一块同一种矿石,那么一定会发生“魔法抵消”.   后来,随着人们认知…
P4570 [BJWC2011]元素 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 给你 \(n\) 个二元组 \((x, y)\),从中选取任意个,构成集合 \(S\),其中不允许存在某个 \(S\) 的子集中的 \(x_i\) 异或起来为 \(0\).求 \(\sum_{i\in S} y_i\) 的最大值 输入格式 第一行包含一个正整数 \(N\),表示二元组个数. 接下来 \(N\) 行,每行两个正整数…
Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而使用了很多矿石,却在炼制过程中发现魔法矿石全部消失了,从而无法炼制出法杖,这个现象被称为“魔法抵消” .特别地,如果在炼制过程中使用超过一块同一种矿石,那么一定会发生“魔法抵消”.后来,随着人们认知水平的提高,这个现象得到了很好的解释.经过了大量的实验后…
3105: [cqoi2013]新Nim游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 839  Solved: 490[Submit][Status][Discuss] Description 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴.可以只拿一根,也可以拿走整堆火柴,但不能同时从超过一堆火柴中拿.拿走最后一根火柴的游戏者胜利. 本题的游戏…
www.lydsy.com/JudgeOnline/problem.php?id=2460 (题目链接) 题意 n个二元组(a,b),求一个∑b最大,且所有子集XOR<>0的集合 Solution 线性基的经典应用.具体证明好像要用到拟阵,不会,好像是很高深的东西. 代码 // bzoj2460 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #…
2460: [BeiJing2011]元素 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 692  Solved: 372[Submit][Status][Discuss] Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而使用了很多矿石,却在炼制过程中发…
Time limit 20000 ms Memory limit 131072 kB OS Linux 解题思路 看题解可知 我们将矿石按照魔法值降序排序,然后依次将矿石编号放入线性基(突然想起线代里某个叫施密特正交化的东西--)以判断是否会和之前已经使用的矿石发生魔法抵消(线性基还是有点懵--),如果不会抵消,就贪心地选上. 关于这题贪心正确性的证明,我查到的有以下几种 拟阵(留坑) bzoj2460题解 [抄书]贪心策略的理论基础--拟阵 2007年集训队论文 刘雨辰 <对拟阵的初步研究>…
嘟嘟嘟 题中说选的数的编号亦或和不能为0,也就是在这个集合中,不能用不同的选取方案亦或出相同的值.由此联想到线性基的一个性质是,每一个数都能由线性基中特定的一些数亦或得到. 所以我们就是要求出这些数的线性基,并且满足所选的数的魔力值的和最大. 本来以为是dp,结果按魔力值排个序贪心就过了. 证明在网上找了半天,终于找到了一片很不错的题解:传送门.. 利用的性质就是如果原数组固定,线性基的大小就是固定的.所以我们贪心的插入魔力值大的数. #include<cstdio> #include<…
正解:线性基+贪心 解题报告: 传送门! 这题其实没什么好写题解的,,,显然贪心一下尽量选魔力大的,不用证明趴挺显然的来着 所以就直接按魔力排个序,插入线性基里面,能插就加个贡献,over 放下代码趴QwQ (我好像,真的,写得越来越敷衍了TT #include<bits/stdc++.h> using namespace std; #define il inline #define ll long long #define gc getchar() #define rc register c…
题面 题面 题解 一个方案合法,当且仅当选取的01串凑不出0. 因此就是要使得选取的01串全在线性基内,具体原因可以看这道题:[CQOI2013]新Nim游戏 线性基 要使得魔力值最大,只需要按法力值从大到小,贪心的往线性基中加串就可以了 #include<bits/stdc++.h> using namespace std; #define R register int #define AC 1100 #define LL long long int n; LL ans; LL f[AC];…
传送门 分析 对法力值从大到小排序然后对编号跑线性基即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include<…
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 考虑贪心 将所有的矿石按价值从大到小排序 如果一块矿石不会和之前的编号异或为0就加入 这个只要判一下它能不能加进线性基里就可以了 据说这个贪心的证明得用拟阵……反正我是不会 //minamoto #include<iostream> #include<cstdio> #include<algorithm> #define ll long long using namespace std; #define getc()…
题意 给定n个物品,每个物品有一个编号和价值,问如何取使得拿到的物品价值总和最大,并且取得物品的编号的子集异或和不能为0. 思路 这是个贪心,我们先按照价值从大到小排序,然后贪心地取,如果当前要取的物品的编号和之前取的存在异或为0的情况,我们就丢弃这个物品,否则加入.判断异或为0可以用线性基来做.具体证明参考 #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include <algorithm>…
题目链接: 洛谷 BZOJ 题意 给定 \(n\) 个矿石,每个矿石有编号和魔力值两种属性,选择一些矿石,使得魔力值最大且编号的异或和不为 0. 思路 线性基 贪心 根据矿石的魔力值从大到小排序. 线性基的所有异或和都不为零.因此维护一个线性基,每次插入编号 \(i\),如果 \(i\) 与之前的线性基都线性无关,也就是能插入,就插入并将魔力值累加到 \(ans\). #include <bits/stdc++.h> using namespace std; typedef long long…
题意:n个石头 每个石头有a,b两个属性 要求选出一些石头使得没有一个子集的a属性xor和为0 且b属性和最大 题解:线性基例题了.. 好像需要理解一些性质 1.原序列里任一数都可有由线性基xor得到 2.线性基里的数是线性无关的 及没有一个子集xor和为0 (就刚好满足题意了 3.线性基在保证性质1的前提下 数的大小是最少的 于是这个题就把b属性从大到小排序 贪心的如果这个数能插进去就算上贡献 如果某个数插入不进来 那么说明他和之前的插入进来的数 线性相关了 那么之前的数都比他大 那么肯定要前…
按价值从大到小考虑每个元素,维护一个线性基,如果向其中加入该元素的编号仍然构成线性基,则将其加入. 不会证明.当做线性基的一个性质吧. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long #…
[BZOJ2460]元素(贪心,线性基) 题面 BZOJ Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而 使用了很多矿石,却在炼制过程中发现魔法矿石全部消失了,从而无法炼制 出法杖,这个现象被称为"魔法抵消" .特别地,如果在炼制过程中使用超过 一块同一种矿石,那么一定会发生"…
2460: [BeiJing2011]元素 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 2195  Solved: 1119[Submit][Status][Discuss] Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而使用了很多矿石,却在炼制过程…
Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而使用了很多矿石,却在炼制过程中发现魔法矿石全部消失了,从而无法炼制出法杖,这个现象被称为“魔法抵消” .特别地,如果在炼制过程中使用超过一块同一种矿石,那么一定会发生“魔法抵消”.后来,随着人们认知水平的提高,这个现象得到了很好的解释.经过了大量的实验后…
bzoj2460,戳我戳我 Solution: 线性基板子,没啥好说的,注意long long 就好了 Code: //It is coded by Ning_Mew on 5.29 #include<bits/stdc++.h> #define LL long long using namespace std; const int maxn=1007; int n; LL A[maxn]; struct Node{ LL num;int val; }s[maxn]; LL ans=0; bo…
http://www.lydsy.com/JudgeOnline/problem.php?id=2460 按魔力值从小到大排序构造线性基 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; typedef long long LL; LL b[]; template <typename T> void read(T &x) { x=; char c=…
题意:让你求一些数在XOR下的带权极大无关组. 带权极大无关组可以用贪心,将这些数按权值从大到小排序之后,依次检验其与之前的数是否全都线性无关.可以用线性基来搞. 可以用拟阵严格证明,不过也可以脑补一下…… #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; ll d[64],p[64]; int cnt;//简化线性基的大小 bool Insert(ll val){//尝试…
2460: [BeiJing2011]元素 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 1675  Solved: 869 [Submit][Status][Discuss] Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔 法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而 使用了很多矿石,却在…
元素 Time Limit: 20 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术. 那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而使用了很多矿石,却在炼制过程中发现魔法矿石全部消失了,从而无法炼制出法杖,这个现象被称为“魔法抵消”. 特别地,如…
p2460: #include<cstdio> #include<algorithm> using namespace std; #define N 1001 typedef long long ll; struct Point{ll p;int v;}a[N]; bool operator < (const Point &a,const Point &b){return a.v>b.v;} int n,ans; ll base[64]; int mai…
题目大意: 有一些矿石,每个矿石有一个a和一个b值,要求选出一些矿石,b的和最大且不存在某个矿石子集它们的a的异或和为0. 解题关键:对魔力进行由大到小排序,依次加入线性基,统计即可. #include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<iostream> #include<cmath> using namespace st…
题意:给定n个物品,每个物品有属性x和价值y,要求从中选出一些使得价值和最大并且其中没有属性xor和为0的非空子集 n<=1000,x<=1e18,y<=1e4 思路:没有xor和为0的非空子集本来就是线性基的定义 拟阵,直接按价值排序之后贪心插入并维护线性基 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned int uint; typedef unsigne…
题目大意: 给定\(n\)个二元组\((a,b)\),求一个最大的\(\sum b\)的集合,满足这个集合的任意子集的\(a\)的\(xor\)值不为0 这道题需要一个线性基的性质: 线性基的任何非空子集的\(xor\)值不为0 那么我们对于题目中对a的要求,只需要维护一个线性基即可. 那如何保证\(\sum b\)最大呢....我们可以按照b排序,然后依次插入线性基,如果经过插入操作后\(a[i].a\)不为0,就说明他被加入了线性基,那么就可以将他的\(a[i].b\)加入答案 至于贪心的正…