题目链接:https://vjudge.net/problem/Gym-100962A

题目大意:

  给出一个 \(h \times w\) 的目标矩阵。定义一种 \(h \times w\) 的矩阵,它由两个向量 \(a = (a_1, a_2, ..., a_h)\) 和 \(b = (b_1, b_2, ..., b_w)\) 推出,其第 \(i\) 行第 \(j\) 列的元素为 \(a_i b_j\),问目标矩阵最少由多少个这种矩阵相加而成(一开始是零矩阵)。

知识点:  高斯消元

解题思路:

  其实就是求 \(h\) 的方程、\(w\) 个未知数的方程组的秩。不过这题的坑点在于精度。

AC代码:

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = +;
const double ep = 1e-; //一开始是 1e-6, 一直wa, 后来看了题解, 学他改成 1e-2 就 AC 了
double a[maxn][maxn]; int Gauss(int equ,int var){
int row=,col=,max_r;
for(;row<equ&&col<var;row++,col++){
max_r=row;
for(int i=row+;i<equ;i++){
if(fabs(a[i][col])>fabs(a[max_r][col]))
max_r=i;
}
if(max_r!=row){
for(int j=row;j<var+;j++)
swap(a[row][j],a[max_r][j]);
}
if(fabs(a[row][col])<ep){
row--;
continue;
}
for(int i=row+;i<equ;i++){
if(fabs(a[i][col])>ep){
double f=a[i][col]/a[row][col];
for(int j=row;j<=var;j++){
a[i][j]-=f*a[row][j];
}
}
}
}
return row;
}
int main(){
// freopen("in.txt","r",stdin);
int h,w;
while(scanf("%d%d",&h,&w)==){
memset(a,,sizeof(a));
for(int i=;i<h;i++){
for(int j=;j<w;j++)
scanf("%lf",&a[i][j]);
a[i][w]=;
}
printf("%d\n",Gauss(h,w));
}
return ;
}

GYM100962A ABBA的更多相关文章

  1. ABBA BABA statistics

    The ABBA BABA statistics are used to detect and quantify an excess of shared derived alleles, which ...

  2. 2019牛客多校第一场E ABBA(DP)题解

    链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 ABBA 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语 ...

  3. 2019牛客多校第一场E ABBA dp

    ABBA dp 题意 给出2(N+M)个AB字符,问能构造出N个AB子序列和M个BA子序列组成的2*(n+m)的序列种类有多少 思路 碰到计数构造类的题目,首先要去找到判断合法性的条件,即什么情况下合 ...

  4. 2019年牛客多校第一场 E题 ABBA DP

    题目链接 传送门 思路 首先我们知道\('A'\)在放了\(n\)个位置里面是没有约束的,\('B'\)在放了\(m\)个位置里面也是没有约束的,其他情况见下面情况讨论. \(dp[i][j]\)表示 ...

  5. 2019牛客暑期多校训练营(第一场)E ABBA

    题意问你有多少个长度为2*(n+m)的字符串满足A和B数量相等 且可以分割为n个AB子序列和m个BA子序列 很容易得出前n个A肯定是可以给AB的 后面的m个A给BA 所以当一个字符串满足条件时要满足任 ...

  6. 2019牛客暑期多校训练营(第一场) - E - ABBA - 贪心 - dp - 组合

    https://ac.nowcoder.com/acm/contest/881/E 从dp的角度来看是比较正常的.无后效性来源于前面只要的合法的方案分配,那么对后面造成的影响就只有A,B的数目. 从贪 ...

  7. 2019牛客多校第一场E ABBA 贪心 + DP

    题意:问有多少个有(n + m)个A和(n + m)个B的字符串可以凑出n个AB和m个BA. 思路:首先贪心的发现,如果从前往后扫,遇到了一个A,优先把它看成AB的A,B同理.这个贪心策略用邻项交换很 ...

  8. 2019 牛客多校第一场 E ABBA

    题目链接:https://ac.nowcoder.com/acm/contest/881/E 题目大意 问有多少个由 (n + m) 个 ‘A’ 和 (n + m) 个 ‘B’,组成的字符串能被分割成 ...

  9. 【2019牛客暑期多校第一场】E题ABBA

    题目链接 大致题意 有(n+m)(n + m)(n+m)个字母A和(n+m)(n + m)(n+m)个字母B,组成一个长度为 2∗(n+m)2*(n + m)2∗(n+m)的字符串,并且使得字符串中有 ...

随机推荐

  1. Android Studio常用配置

    目录 1. 主题颜色设置 2. Logcat颜色设置 3. 类注释 4. 编译器添加背景图 4.1 第一种方式 Background Image 4.2 第二种方式 Sexy Editor 5. 修改 ...

  2. SpringCloud入门(十一):Sleuth 与 Zipkin分布式链路跟踪

    现今业界分布式服务跟踪的理论基础主要来自于 Google 的一篇论文<Dapper, a Large-Scale Distributed Systems Tracing Infrastructu ...

  3. Omnicore RPC API中文文档

    2019独角兽企业重金招聘Python工程师标准>>> OmniCore是比特币核心的一个分支,它在比特币协议之上实现了一个新的Omni协议层,用于代币发行.众售等应用,USDT就是 ...

  4. Linux开发初探

    坚持用了十几天的Linux操作系统,学会了很多的东西,但现在必须得抉择如何选择开发工具.在这些天的开发中,各种Linux下的IDE都有 所尝试.一向看好的Code::Blocks还是过于简单,用了一阵 ...

  5. 【10月新版】Aspose.Pdf 10月新版V17.10发布 | 附下载

    2019独角兽企业重金招聘Python工程师标准>>> Aspose.Pdf for .NET 17.10 更新 功能和改进 核心 概述 类别 PDFNET-38067 支持DICO ...

  6. Linux 查看进程资源--ps、top命令

    1,ps命令 ps能够给出当前系统中进程的快照.它能捕获系统在某一事件的进程状态 命令参数:          a                                      显示所有进 ...

  7. Eclipse中获取html jsp 标签的属性提示信息方法

    操作方法: windows------preferences----------搜索 html----------找到 html Source这项---------找到 content assist ...

  8. C++ 模板(template) 的定义

    定义: 模板(template)是实现代码重用机制的一种工具,它可以实现类型参数化,把类型定义为参数(模板元编程),从而实现了真正的代码可重用性. 模板是用来批量生成功能和形式都几乎相同的代码的.编译 ...

  9. spring的bean的属性注入

    一.设置注入 设置注入要求: 要求属性在实体类中必须有getter 和setter方法,然后在spring的工厂中就可以使用property标签进行设值注入. 二.构造注入 通过类的构造方法的方式注入 ...

  10. Spring官网阅读(十八)Spring中的AOP

    文章目录 什么是AOP AOP中的核心概念 切面 连接点 通知 切点 引入 目标对象 代理对象 织入 Spring中如何使用AOP 1.开启AOP 2.申明切面 3.申明切点 切点表达式 excecu ...