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维球体的球心坐标,以便于摧 ...
随机推荐
- Spark Streaming概念学习系列之SparkStreaming性能调优
SparkStreaming性能调优 合理的并行度 减少批处理所消耗时间的常见方式还有提高并行度.有以下三种方式可以提高并行度: 1.增加接收器数目 有时如果记录太多导致单台机器来不及读入并分发的话, ...
- WPF全球化与本地化
当一个App需要推出多语言版本时,就需要使用到[全球化与本地化]服务. 原理及过程 资源文件中包含了所有的控件信息,通过导出这些控件信息,修改其对应的相关属性(比如TextBlock的Text属性)的 ...
- Spring学习笔记之基础、IOC、DI(1)
0.0 Spring基本特性 Spring是一个开源框架:是基于Core来架构多层JavaEE系统 1.0 IOC 控制反转:把对象的创建过程交给spring容器来做. 1.1 application ...
- Android GoogleMap 谷歌地图从零开始
说明 由于国内使用v2最新的谷歌地图有很多限制,所有如果要在真机上测试运行要做一些准备 准备1: vpn必不可少啦 推荐cloud vpn或者betternet都是不错的免费vpn 准备2: 由于最新 ...
- android反编译查看源码,apk解压后XML乱码解决
1:找了好几个软件都不能图形化的解决反编译,很不舒服,最后找了个还算顺手的,顺便保存下. 2:使用过程 <1> apk转jar apktoolkit工具 <2> 查看jar源码 ...
- c# 异步任务队列(可选是否使用单线程执行任务,以及自动取消任务)
使用demo,(.net framework 4.0 自行添加async wait 扩展库) class Program { static void Main(string[] args) { Con ...
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
简单说明: 为了方便数据在客户端及服务器端的传输,有时候我们会用一些比较方便组织的数据类型,比如json.xml等传给客户端,客户端也可以重新组织数据传回服务器端.JSON和XML提供了一套比较方便的 ...
- 00-- 关于C++ const 的全面总结
转:关于C++ const 的全面总结 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C ...
- java连接AD域
import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.Hashtable; imp ...
- MongoDB 学习笔记(七):主从复制与副本集
一.主从复制 1.主从复制是一个简单的数据库同步备份的集群技术,如下图:要明确的知道主服务器与从服务器,且从服务器要明确的知道主服务器的存在. 2.在MongoDB中在启动数据库服务时,可以用mast ...