bzoj4004,戳我戳我

Solution:

  • 裸的线性基,这没啥好说的,我们说说有意思的地方(就是我老是wa的地方)

Attention:

  • 这题在\(luogu\),上貌似不卡精度,\(bzoj\)卡精度(一开始还以为自己精度被卡的很惨,结果是线性基打错了)
  • 线性基板子:
    for(int j=50;j>=0;j--){
if(!(box>>j))continue;
if(!a[j]){a[j]=box;break;}
else box=(a[j]^box);
}
  • 注意不是一个个动态开位置存线性基,而是像高斯消元一样存一个倒三角
  • 然后我们要注意的就是线性基的制作方式,这道题表达意思是要前面存在过的装备组合相加得到,那么我们消元的时候是拿存在的线性基的倍数消元

    是这个样子:
double X=eqt[num].a[i]/x[i][i];
for(int j=i;j<=m;j++){
eqt[num].a[j]-=(x[i][j]*X);
}

不是这个样子(他和高斯小消元还是有点小不同(我觉得可能是我的高斯消元板子写错了))

double X=x[i][i]/eqt[num].a[i];
for(int j=i;j<=m;j++){
eqt[num].a[j]*=X;
eqt[num].a[j]-=x[i][j];
}

Code:

//It is coded by Ning_Mew on 5.27
#include<bits/stdc++.h>
#define double long double
using namespace std; const int maxn=507;
const double eps=1e-5; int n,m,ans=0,sum=0;
struct Node{
double a[maxn];int val;
}eqt[maxn];
double x[maxn][maxn]; bool cmp(const Node &xx,const Node &yy){return xx.val<yy.val;}
double ffabs(double xx){return xx<0?-xx:xx;}
bool par(int num){
bool kk=false;
for(int i=1;i<=m;i++){
if(fabs(eqt[num].a[i])<eps)continue;
if(fabs(x[i][i])<eps){
for(int j=i;j<=m;j++){x[i][j]=eqt[num].a[j];}
kk=true;break;
}else{
/*double X=x[i][i]/eqt[num].a[i];
for(int j=i;j<=m;j++){
eqt[num].a[j]*=X;
eqt[num].a[j]-=x[i][j];
}*/
double X=eqt[num].a[i]/x[i][i];
for(int j=i;j<=m;j++){
eqt[num].a[j]-=(x[i][j]*X);
}
}
}
return kk;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%Lf",&eqt[i].a[j]);
}
}
for(int i=1;i<=n;i++)scanf("%d",&eqt[i].val); sort(eqt+1,eqt+n+1,cmp); for(int i=1;i<=n;i++){
if(par(i))ans+=eqt[i].val,sum++;
}
printf("%d %d\n",sum,ans);
return 0;
}

【题解】 bzoj4004: [JLOI2015]装备购买 (线性基)的更多相关文章

  1. bzoj4004 [JLOI2015]装备购买——线性基+贪心

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4004 今天讲课讲到的题,据说满足拟阵的性质,所以贪心是正确的: 总之就贪心,按价格从小到大排 ...

  2. BZOJ 4004 [JLOI2015]装备购买 | 线性基

    题目链接 Luogu P3265 题解 非常正常的线性基! 但是我不会线性基-- (吐槽:#define double long double 才过--) #include <cstdio> ...

  3. BZOJ 4004 [JLOI2015]装备购买 ——线性基

    [题目分析] 题目很简单,就是要维护一个实数域上的线性基. 仿照异或空间的线性基的方法,排序之后每次加入一个数即可. 卡精度,开long double 和 1e-6就轻松水过了. [代码] #incl ...

  4. BZOJ4004 [JLOI2015]装备购买[贪心+线性基+高消]

    一个物品可以被其他物品表出,说明另外的每个物品看成矩阵的一个行向量可以表出该物品代表的行向量. 于是构造矩阵,求最多选多少个物品,就是尽可能用已有的物品去表示,相当于去消去一些没必要物品, 类似于xo ...

  5. BZOJ4004: [JLOI2015]装备购买

    总之就是线性基那一套贪心理论直接做就好了. 然而加强数据后很卡精度的样子. 于是重点在于这个特技:在整数模意义下搞. #include<cstdio> #include<algori ...

  6. [BZOJ4004][JLOI2015]装备购买(贪心+线性基)

    求最小权极大线性无关组. 先将所有向量按权值排序,从小到大依次判断,若能被前面已选向量线性表出则不选,这样一定最优. 据说是用拟阵来证明,但感性理解一下感觉比较显然,首先这样个数一定是最多的,其次对于 ...

  7. 【BZOJ4004】装备购买(线性基)

    [BZOJ4004]装备购买(线性基) 题面 BZOJ 洛谷 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am ...

  8. [JLOI2015]装备购买(线性基)

    [JLOI2015]装备购买 题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 nn 件装备,每件装备有 \(m\) 个属性,用向量 \(\mathbf{z_i}\)=\((a_1, \ldots ...

  9. BZOJ_4004_[JLOI2015]装备购买_线性基

    BZOJ_4004_[JLOI2015]装备购买_线性基 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) ...

随机推荐

  1. awk、sed处理文件的简单例子

    awk.sed对处理日志文件和写shell脚本时非常有益.这个东西,如果不经常操作,真心过一段时间就忘差不多..要掌握熟练,就要多练习,这没什么可说的. awk '条件{命令}' filename 假 ...

  2. 在main函数前后执行的函数之 C语言

    在gcc中,可以使用attribute关键字,声明constructor和destructor,来指定了函数在main之前或之后运行,代码如下: #include <stdio.h> __ ...

  3. Eclipse-快捷键大全(转载)

    快速展开类:ctrl + shift +*(小键盘) 快速关闭类:ctrl+ shift + /(小键盘)  Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl ...

  4. Scala_数据类型

    Scala与Java有着相同的数据类型,Scala数据类型都是对象,Scala中没有类似Java中那样的原始类型. Scala 的基本数据类型有: Byte,Short,Int,Long 和 Char ...

  5. c# thread pause example

    some times we need pause thread to do some additional job: c# thread pause example as below: 1. crea ...

  6. [Deep-Learning-with-Python]基于Kears的Reuters新闻分类

    Reuters数据集下载速度慢,可以在我的repo库中找到下载,下载后放到~/.keras/datasets/目录下,即可正常运行. 构建神经网络将路透社新闻分类,一共有46个类别.因为有多个类别,属 ...

  7. 阿里云centos 安装禅道

    下载 我的阿里云服务器系统是 centos6.8 64 位,下载的禅道版本是 Linux 64位一键安装包(适用于Linux 64位) 由于阿里云服务器没桌面,所以下载用不了浏览器,可考虑在本地下载后 ...

  8. Azure : 通过 SendGrid 发送邮件

    SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递.并且具有可扩充性和实时分析的能力.常见的用例有:1. 自动回复用户的邮件2. 定期发送信 ...

  9. Ubuntu16.04+Java8+Mysql5.7+Tomcat8.5服务器环境配置

    本文章使用环境: Ubuntu16.04 Java8 Mysql5.7 Tomcat8.5 Ubuntu 版本16.04, 本文采用SSH远程登录主机 工具:Xshell 默认使用root用户登录 ( ...

  10. CentOS Docker环境搭建教程

    安装与配置 Docker 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum 命令: yum inst ...