hihoCoder #1195 高斯消元·一
题意:便利店老板为了促销,推出了组合包的形式,将不同数量的各类商品打包成一个组合。比如2袋薯片,1听可乐的组合只要5元,而1袋薯片,2听可乐的组合只要4元。通过询问老板知道:一共有N种不同的商品和M种不同的商品组合;每一个组合的价格等于组合内商品售价之和,一个组合内同一件商品不会超过10件。
思路:高斯消元!精度的坑啊!一直错在90分!!!终于AC了,很多需要注意的地方!!
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N=; double a[N][N];
double t[N]; //临时行
double value[N]; //临时行 int Gaussian_elimination(int row,int col)
{
//计算上三角
for(int i=; i<col; i++) //列
{
int r=i;
for(int j=row; j>i; j--)
if( fabs(a[j][i])>fabs(a[r][i]) )
r=j;
if(r==i && fabs(a[i][i])<1e-) return -; //注意点1:精度
if(r!=i) swap(a[r], a[i]); for( int j=i+; j<=row; j++)
{
for(int k=col; k>i; k--) //注意点2:反向
a[j][k]-= a[j][i]/a[i][i]*a[i][k];
a[j][i]=; //注意点3:必须置0
}
} //检查是否有解
for(int i=col-,j; i<=row; i++)
{
for(j=; j<col; j++) if(fabs(a[i][j])>1e-) break;
if(j==col && fabs(a[i][col])>1e- ) return ; //无解,左边系数全0,右边值不为0。反过来是可以的,因为可能有东西不用钱呢?
} for(int i=col-; i>; i--) //从正方形最后一行开始往上。
{
for(int j=i+; j<col; j++) //消掉i+1~col-1
a[i][col]-=a[i][j]*t[j];
t[i]=a[i][col]/a[i][i]; //答案
}
return ;
} int main()
{
freopen("input.txt", "r", stdin);
int m, n; scanf("%d%d",&n,&m);
for(int i=; i<=m; i++)
for(int j=; j<=n+; j++)
scanf("%lf", &a[i][j]); //a[][n+1]存价格
int ans=Gaussian_elimination(m, n+);
if(ans==-) puts("Many solutions");
else if(ans==) puts("No solutions");
else
{
for(int i=; i<=n; i++)
printf("%d\n", (int)(t[i]+0.5));
}
return ;
}
AC代码
hihoCoder #1195 高斯消元·一的更多相关文章
- HihoCoder 1195 高斯消元·一(高斯消元)
题意 https://hihocoder.com/problemset/problem/1195 思路 高斯消元是解决高元方程的一种算法,复杂度 \(O(n^3)\) . 过程大致是: 构造一个未知数 ...
- hihoCoder 1195 高斯消元.一
传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:喂不得了啦,那边便利店的薯片半价了! 小Hi:啥?! 小Ho:那边的便利店在打折促销啊. 小Hi:走走走, ...
- hihoCoder 1196 高斯消元·二
Description 一个黑白网格,点一次会改变这个以及与其连通的其他方格的颜色,求最少点击次数使得所有全部变成黑色. Sol 高斯消元解异或方程组. 先建立一个方程组. \(x_i\) 表示这个点 ...
- hihocoder 1196 高斯消元.二
传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回中,小Hi和小Ho趁着便利店打折,买了一大堆零食.当他们结账后,看到便利店门口还有其他的活动. 店主:买了 ...
- hihoCoder#1196 : 高斯消元·二(开关灯问题)
传送门 高斯消元解异或方程组 小Ho在游戏板上忙碌了30分钟,任然没有办法完成,于是他只好求助于小Hi. 小Ho:小Hi,这次又该怎么办呢? 小Hi:让我们来分析一下吧. 首先对于每一个格子的状态,可 ...
- [hihoCoder] 高斯消元·一 [TPLY]
高斯消元一 题目链接 : http://hihocoder.com/problemset/problem/1195?sid=1269842 很"好aoaoaoaoaoaoa"的高斯 ...
- hihocoder 第五十二周 高斯消元·二【高斯消元解异或方程 难点【模板】】
题目地址:http://hihocoder.com/contest/hiho57/problem/1 输入 第1..5行:1个长度为6的字符串,表示该行的格子状态,1表示该格子是亮着的,0表示该格子是 ...
- hihocoder图像算子(高斯消元)
描述 在图像处理的技术中,经常会用到算子与图像进行卷积运算,从而达到平滑图像或是查找边界的效果. 假设原图为H × W的矩阵A,算子矩阵为D × D的矩阵Op,则处理后的矩阵B大小为(H-D+1) × ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
随机推荐
- POJ 1001 Exponentiation(JAVA,BigDecimal->String)
题目 计算实数a的n次方,具体输出格式看案例 import java.util.*; import java.math.*; public class Main { public static voi ...
- 使用git了解代码编写过程
在看教程时,有的老师会将代码放到github,如果不想跟着视频一步一步来,那就直接clone整个代码,但整个看着又有点蒙,那就使用版本切换的功能了. 首先 git clone 下载下来 git log ...
- ExtJs布局之viewport
<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...
- AngularJS学习笔记2——AngularJS的初始化
本文主要介绍AngularJS的自动初始化以及在必要的适合如何手动初始化. Angular <script> Tag 下面通过一小段代码来介绍推荐的自动初始化过程: <!doctyp ...
- Android SlidingMenu侧滑菜单使用
把下载的侧滑菜单压缩包打开,会有一个library文件夹,在eclipse中import existing android code into workspace,导入library文件夹,并且选择作 ...
- 修改bigbluebutton白板上传中文乱码
中文命名的文档,上传是乱码 -- 显示的 打开后, 中文部分是乱码 Comment 1 by project member ffdixon, Nov 08, 2010 Translatio ...
- lines---hdu5124(离散化+数组模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5124 就是有n条在x轴的线段,给你线段的左右端点,每条线段都会覆盖点,求出最多被覆盖多少次: #inc ...
- spring3定时器简单配置
最近在做oa项目中写到一个功能,就是员工每天的签到和签退.当时想了很久都没有想出来,后来自己上网查了一下spring的定时器,然后就有了思路. 下面我贴上自己用到的这个定时器的配置.希望能够和大家一起 ...
- 如何使用 EXCEL 的筛选功能
假设有一个Excel文档,有两列“姓名”和“成绩”. 现需筛选出成绩 “大于等于90”或者“小于60”的学生. 步骤如下: 1.选中任意一个单元格,点击工具栏上的 数据 - 筛选 - 自动筛选 ,可以 ...
- html下select追加元素,IE下错误
var selectCtr=window.document.getElementById("lesson_up"); selectCtr.add(opt,selectCtr.opt ...