0x35 高斯消元与线性空间
颓了十天回来做题果然……
感觉还是很有收获的,这两以前都没学过
bzoj1013: [JSOI2008]球形空间产生器sphere
poj1830(upd)
之前做得很烂还被 D飞*2 了。。重做一次
对于一个灯,把能把它点亮的其他灯设为1,然后高斯消元。
注意在这里的系数只是一个判断的手段,判断是否受到影响,并不是参与运算的(之前纠结了很久)
用二进制状压判断无解多解比较方便。(之前直接判当前位是不是0直接break错的一逼)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; int n,q[];
void guess()
{
for(int j=;j<=n;j++)
{
for(int i=j+;i<=n;i++)
if(q[i]>q[j])swap(q[i],q[j]);
if(q[j]<=)
{
if(q[j]==)printf("%d\n", (<<(n-j+)) );
else if(q[j]==)printf("Oh,it's impossible~!!\n");
return ;
} int z;
for(int i=n;i>=;i--)
if(q[j]&(<<i)){z=i;break;}
for(int i=;i<=n;i++)
{
if(i==j)continue;
if(q[i]&(<<z))q[i]^=q[j];
}
}
printf("1\n");
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int x,y;
scanf("%d",&n);
memset(q,,sizeof(q));
for(int i=;i<=n;i++)scanf("%d",&x),q[i]^=x;
for(int i=;i<=n;i++)scanf("%d",&x),q[i]^=x;
for(int i=;i<=n;i++)q[i]|=(<<i);
while(scanf("%d%d",&x,&y)!=EOF)
{
if(x==&&y==)break;
q[y]|=(<<x);
}
guess();
}
return ;
}
poj1830
hdu3949(upd):没开LL见祖宗系列(记得是1LL<<i啊)
裸的线性基,但是求第k大的时候稍微注意下,求第k大的时候实际上求的是第k+1大,因为0会被看作第0大的……而且0需要特判存不存在,假如存在那么k--,否则这里就和前面的多算抵消了
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef unsigned long long uLL; uLL lt[],zero;
void insert(uLL x)
{
for(int i=;i>=;i--)
if(x&(1LL<<i))
{
if(lt[i]==){lt[i]=x;return ;}
else x^=lt[i];
}
zero=;
}
int plen;uLL p[];
void rebuild()
{
for(int i=;i>=;i--)
if(lt[i]>)
{
for(int j=i-;j>=;j--)
if(lt[i]&(1LL<<j))lt[i]^=lt[j];
}
plen=;
for(int i=;i<=;i++)
if(lt[i]>)p[++plen]=lt[i];
}
void findkth(uLL x)
{
if(x>=(1LL<<plen)){printf("-1\n");return ;}
uLL ans=;
for(int i=plen;i>=;i--)
if(x&(1LL<<i-))ans^=p[i];
printf("%I64u\n",ans);
} int main()
{
int T,T_T=;
scanf("%d",&T);
while(T--)
{
int n;uLL x;
scanf("%d",&n); zero=;
memset(lt,,sizeof(lt));
for(int i=;i<=n;i++)
scanf("%I64u",&x), insert(x);
rebuild(); int Q;
scanf("%d",&Q);
printf("Case #%d:\n",++T_T);
while(Q--)
{
scanf("%I64u",&x);x-=zero;
findkth(x);
}
}
return ;
}
hdu3949
0x35 高斯消元与线性空间的更多相关文章
- 算法竞赛进阶指南0x35高斯消元与线性空间
高斯消元 目录 高斯消元 ACWing207. 球形空间产生器(点击访问) 求解思路 代码 ACWing208. 开关问题(点击访问) 思路 代码 总结 欣赏 线性空间 定义 ACWing209. 装 ...
- 线性空间和异或空间(线性基)bzoj4004贪心+高斯消元优秀模板
线性空间:是由一组基底构成的所有可以组成的向量空间 对于一个n*m的矩阵,高斯消元后的i个主元可以构成i维的线性空间,i就是矩阵的秩 并且这i个主元线性无关 /* 每个向量有权值,求最小权极大线性无关 ...
- AcWing 209. 装备购买 (高斯消元线性空间)打卡
脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量z[i]=(ai,1,ai,2,..,ai,m)z[i]=(ai,1,ai,2,..,ai,m) 表示,每个装备需要 ...
- 高斯消元 & 线性基【学习笔记】
高斯消元 & 线性基 本来说不写了,但还是写点吧 [update 2017-02-18]现在发现真的有好多需要思考的地方,网上很多代码感觉都是错误的,虽然题目通过了 [update 2017- ...
- [JLOI2015]装备购买 (高斯消元)
[JLOI2015]装备购买 \(solution:\) 首先这道题的题面已经非常清晰的告诉我们这就是线性空间高斯消元的一道题(可以用某些装备来表示另一件装备,这已经不能再明显了),只是这道题要求我们 ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
- 【BZOJ-3270】博物馆 高斯消元 + 概率期望
3270: 博物馆 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 292 Solved: 158[Submit][Status][Discuss] ...
- *POJ 1222 高斯消元
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9612 Accepted: 62 ...
- [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
随机推荐
- Python金融量化
Python股票数据分析 最近在学习基于python的股票数据分析,其中主要用到了tushare和seaborn.tushare是一款财经类数据接口包,国内的股票数据还是比较全的 官网地址:http: ...
- 关于各浏览器下Hack的写法
下面是我收集有关于各浏览器下Hack的写法: 1.Firefox @-moz-document url-prefix() { .selector { property: value; } } 上面是仅 ...
- classname在JavaScript中的应用
<html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...
- C#监测方法执行效率
System.Diagnostics.Stopwatch watch = new Stopwatch(); watch.Start(); // 开始监视代码运行时间 //需要监测的代码 dothing ...
- AVD的Hardware选项
最近学习开发游戏,需要GLES2.0使用,使用Android虚拟机调试一直报错闪退.百度说Android 4.0及以后的版本[使用API15及以上]),已经支持GLES2.0,需要在HardWare选 ...
- 利用Axis2默认口令安全漏洞入侵WebService网站
近期,在黑吧安全网上关注了几则利用Axis2默认口令进行渗透测试的案例,大家的渗透思路基本一致,利用的技术工具也大致相同,我在总结这几则案例的基础之上进行了技术思路的拓展.黑吧安全网Axis2默认口令 ...
- hadoop基础学习
MR系类: ①hadoop生态 >MapReduce:分布式处理 >Hdfs:hadoop distribut file system >其他相关框架 ->unstructur ...
- Java 方法的应用
Java方法可以理解为C#中的函数,都是把复杂的问题简单化,按模块,按功能区分,分别完成各个部分在调用这些方法完成整个功能. 方法的综合练习,猜数字的实现: 代码要求: 生成不重复的4位数字(只有1- ...
- 04--奠定MYSQL江湖地位的开发注意要点
为不同的行业提供不同的MYSQL应用场景 吴炳锡老师谈到,不同行业的业务有不同的特点,选择好一个适合自己行业的MYSQL应用场景至关重要. 互联网行业 速度一直都是互联网发展的第一要义,互联网行业所使 ...
- IE 11 浏览器兼容性视图设置
1.打开IE 浏览器. 2.选择“工具”---“兼容性视图设置”.3.在“在兼容性视图中显示所有网站”前面勾选住. 点击关闭就可以了. 开发人员工具 1.找到“工具”----“F12开发人员工具”.2 ...