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] ...
随机推荐
- JSP 页面传参和接受参数
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding=&q ...
- ZJU 1180 Self Numbers(暴力模拟判断,水题)
题目链接 同HDU 1128 , POJ 1316(这个范围小一点). 原本怕超时,以为有技巧或者规律,死命的想,后来发现这就是一道水体,模拟着全部判断一下就好了,10秒呢,完全不怕超时...唔,废话 ...
- POJ 2181
#include <iostream> #include <cstdio> #include <cmath> #define MAXN 150005 #includ ...
- LoaderManager使用详解(一)---没有Loader之前的世界
来源: http://www.androiddesignpatterns.com/2012/07/loaders-and-loadermanager-background.html 感谢作者Alex ...
- JAVA动态加载JAR包的实现
如何动态的加载这些驱动!不可能把所有的数据库驱动都集成到JAR包中吧?!于是动态加载驱动的JAR包就产生了!其实这些在做系统基础代码时,经常用到,只是一般我们没有机会去搞而已. 动态加载JAR包,使用 ...
- UVA 11038 - How Many O's? 计算对答案的贡献
题意: 求[n, m]之间包含0的数字的个数题解:转化为求solve(n) - solve(m-1)的前缀问题 对于求0到n的解,我们举例 n = 25789 对于8这位,让其为0对答案的贡献是 (0 ...
- poj 2349(最小生成树应用)
题目链接:http://poj.org/problem?id=2349 思路:由于有S个专门的通道,我们可以先求一次最小生成树,然后对于最小生成树上的边从大到小排序,前S-1条边用S-1个卫星通道连接 ...
- MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-4]
引入Hibernate 在pom.xml中加入jar包引用 <!-- hibernate4 --> <dependency> <groupId>org.hibern ...
- 快速幂取模 POJ 3761 bubble sort
题目传送门 /* 题意:求冒泡排序扫描k次能排好序的全排列个数 数学:这里有一个反序列表的概念,bj表示在j左边,但大于j的个数.不多说了,我也是看网上的解题报告. 详细解释:http://blog. ...
- sql openrowset
select * from openrowset('sqloledb','ip';'user';'pwd','exec 库..过程')