题意:便利店老板为了促销,推出了组合包的形式,将不同数量的各类商品打包成一个组合。比如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 高斯消元·一的更多相关文章

  1. HihoCoder 1195 高斯消元·一(高斯消元)

    题意 https://hihocoder.com/problemset/problem/1195 思路 高斯消元是解决高元方程的一种算法,复杂度 \(O(n^3)\) . 过程大致是: 构造一个未知数 ...

  2. hihoCoder 1195 高斯消元.一

    传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:喂不得了啦,那边便利店的薯片半价了! 小Hi:啥?! 小Ho:那边的便利店在打折促销啊. 小Hi:走走走, ...

  3. hihoCoder 1196 高斯消元·二

    Description 一个黑白网格,点一次会改变这个以及与其连通的其他方格的颜色,求最少点击次数使得所有全部变成黑色. Sol 高斯消元解异或方程组. 先建立一个方程组. \(x_i\) 表示这个点 ...

  4. hihocoder 1196 高斯消元.二

    传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回中,小Hi和小Ho趁着便利店打折,买了一大堆零食.当他们结账后,看到便利店门口还有其他的活动. 店主:买了 ...

  5. hihoCoder#1196 : 高斯消元·二(开关灯问题)

    传送门 高斯消元解异或方程组 小Ho在游戏板上忙碌了30分钟,任然没有办法完成,于是他只好求助于小Hi. 小Ho:小Hi,这次又该怎么办呢? 小Hi:让我们来分析一下吧. 首先对于每一个格子的状态,可 ...

  6. [hihoCoder] 高斯消元·一 [TPLY]

    高斯消元一 题目链接 : http://hihocoder.com/problemset/problem/1195?sid=1269842 很"好aoaoaoaoaoaoa"的高斯 ...

  7. hihocoder 第五十二周 高斯消元·二【高斯消元解异或方程 难点【模板】】

    题目地址:http://hihocoder.com/contest/hiho57/problem/1 输入 第1..5行:1个长度为6的字符串,表示该行的格子状态,1表示该格子是亮着的,0表示该格子是 ...

  8. hihocoder图像算子(高斯消元)

    描述 在图像处理的技术中,经常会用到算子与图像进行卷积运算,从而达到平滑图像或是查找边界的效果. 假设原图为H × W的矩阵A,算子矩阵为D × D的矩阵Op,则处理后的矩阵B大小为(H-D+1) × ...

  9. 【BZOJ-3143】游走 高斯消元 + 概率期望

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2264  Solved: 987[Submit][Status] ...

随机推荐

  1. Dom新find

    1.HTML标签和属性是不区分大小写的,但JS是区分大小写的:所以(1)HTML专有的接口的属性应该以小写字母开头,如果属性名由多个单词构成,第二个及接下来的每个单词的首字母都要大写.(2)有些HTM ...

  2. hdu2025查找最大元素

    #include<iostream> #include<stdio.h> #include<math.h> #include<stdlib.h> #in ...

  3. 利用反射完成初级万能DAO

    一.目标 利用反射完成初级万能DAO 二.注意 1.Field[] fi = clazz.getDeclaredFields(); for(Field ff : fi){ ff.setAccessib ...

  4. 对QT的理解——能在公司里不做Java,不做很偏门的产品,不使用偏门的语言,还有钱挣,要有感恩的心

    我的理解: QT做应用软件可以很强大,界面足够漂亮(最有意思的是QSS,让我刮目相看),应该是足够了.同时QT也提供了源码,不过超级复杂,难以理解,所以还是无法深入底层.另外它提供了一个额外的好处,就 ...

  5. iOS 全屏布局

    edgesForExtendedLayout属性用于替代wantsFullScreenLayout,控制页面显示的范围,默认值是UIRectEdgeAll automaticallyAdjustsSc ...

  6. iOS:核心动画之动画组CAAnimationGroup

    CAAnimationGroup——动画组 动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行 属性说明: ...

  7. 使用OPENROWSET(BULK...)从平面文件加载数据

    要使用OPENROWSET首先要开启一个configure选项 sp_configure ‘show advanced options’, 1;GORECONFIGURE;GOsp_configure ...

  8. Java中的ArrayList的初始容量和容量分配

    List接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素.ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的大 ...

  9. YTU 2621: B 继承 圆到圆柱体

    2621: B 继承 圆到圆柱体 时间限制: 1 Sec  内存限制: 128 MB 提交: 313  解决: 240 题目描述 定义了Circle圆形类,在此基础上派生出Cylinder圆柱体类. ...

  10. VS2013控制台一闪而过问题解决方法

    1.修改项目配置,右键点击项目: 2.在右键菜单中选择属性,然后在弹出的对话框左侧列表中中选择 “配置属性”-->“链接器”-->“系统”然后在右侧的列表中,在第一项”子系统“的值中选择” ...