GYM100962A ABBA
题目链接: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的更多相关文章
- ABBA BABA statistics
The ABBA BABA statistics are used to detect and quantify an excess of shared derived alleles, which ...
- 2019牛客多校第一场E ABBA(DP)题解
链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 ABBA 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语 ...
- 2019牛客多校第一场E ABBA dp
ABBA dp 题意 给出2(N+M)个AB字符,问能构造出N个AB子序列和M个BA子序列组成的2*(n+m)的序列种类有多少 思路 碰到计数构造类的题目,首先要去找到判断合法性的条件,即什么情况下合 ...
- 2019年牛客多校第一场 E题 ABBA DP
题目链接 传送门 思路 首先我们知道\('A'\)在放了\(n\)个位置里面是没有约束的,\('B'\)在放了\(m\)个位置里面也是没有约束的,其他情况见下面情况讨论. \(dp[i][j]\)表示 ...
- 2019牛客暑期多校训练营(第一场)E ABBA
题意问你有多少个长度为2*(n+m)的字符串满足A和B数量相等 且可以分割为n个AB子序列和m个BA子序列 很容易得出前n个A肯定是可以给AB的 后面的m个A给BA 所以当一个字符串满足条件时要满足任 ...
- 2019牛客暑期多校训练营(第一场) - E - ABBA - 贪心 - dp - 组合
https://ac.nowcoder.com/acm/contest/881/E 从dp的角度来看是比较正常的.无后效性来源于前面只要的合法的方案分配,那么对后面造成的影响就只有A,B的数目. 从贪 ...
- 2019牛客多校第一场E ABBA 贪心 + DP
题意:问有多少个有(n + m)个A和(n + m)个B的字符串可以凑出n个AB和m个BA. 思路:首先贪心的发现,如果从前往后扫,遇到了一个A,优先把它看成AB的A,B同理.这个贪心策略用邻项交换很 ...
- 2019 牛客多校第一场 E ABBA
题目链接:https://ac.nowcoder.com/acm/contest/881/E 题目大意 问有多少个由 (n + m) 个 ‘A’ 和 (n + m) 个 ‘B’,组成的字符串能被分割成 ...
- 【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)的字符串,并且使得字符串中有 ...
随机推荐
- 【JAVA基础】10 Object类
1. Object类概述 是类层次结构的根类 每个类都使用 Object 作为超类 所有类都直接或者间接的继承自该类 所有对象(包括数组)都实现这个类的方法. 2. Object的构造方法 publi ...
- mac OS nvm 常用命令
nvm install stable ## 安装最新稳定版 node,当前是node v10.15.0 (npm v6.4.1) nvm install <version> ## 安装指定 ...
- TCP连接过程及报文解析
可能大家都听过TCP建立连接时需要经历三次握手和四次挥手的. 那么具体的握手挥手的过程是怎么样的呢? 这篇文章就通过WireShark抓包来了解TCP连接建立和断开的过程. 实验方法: 写一段简单的代 ...
- 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
为什么80%的码农都做不了架构师?>>> 摘要: 近日,阿里云宣布高性能时间序列数据库 (High-Performance Time Series Database , 简称 H ...
- Jmeter 插件图表分析
1.jp@gc - Actiive Threads Over Time:不同时间的活动用户数量展示(图表) 当前的时间间隔是1毫秒,在 setting 中可以设置时间间隔以及其他的参数,右击可以导出 ...
- predixy源码学习
Predixy是一个代理,代理本质上就是用来转发请求的.其主要功能就是接收客户端的请求,然后把客户端请求转发给redis服务端,在redis服务端处理完消息请求后,接收它的响应,并把这个响应返回给客户 ...
- undef用法
#undef的语法 定义:#undef 标识符,用来将前面定义的宏标识符取消定义. 整理了如下几种#undef的常见用法. 1. 防止宏定义冲突在一个程序块中用完宏定义后,为防止后面标识符冲突需要取消 ...
- Java——多线程锁的那些事
引入 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率. 下面先带大家来总体预览一下锁的分类图 1.乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了 ...
- IDEA破解,自动激活【2020年版本也可以破解】
破解 在破解之前,需要下载的文件有两个ideaIU-2019.3.3.exe.jetbrains-agent-latest.zip,前者是程序安装包,后者是破解补丁包(PS:补丁包里面有使用说明,下面 ...
- Spring官网阅读(十一)ApplicationContext详细介绍(上)
文章目录 ApplicationContext 1.ApplicationContext的继承关系 2.ApplicationContext的功能 Spring中的国际化(MessageSource) ...