题意:便利店老板为了促销,推出了组合包的形式,将不同数量的各类商品打包成一个组合。比如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. 传说中的WCF(10):消息拦截与篡改

    我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过 程中,期间发送和接收的SOAP是什么样子.当然,也有人是通过 ...

  2. C# Socket 入门3 UPD(转)

    今天来写一个UPD 1.服务端: using System; using System.Collections.Generic; using System.Text; using System.Net ...

  3. lintcode:等价二叉树

    等价二叉树 检查两棵二叉树是否等价.等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等. 样例 1 1 / \ / \ 2 2 and 2 2 / / 4 4 就是 ...

  4. 安卓app缓存设置

    无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户. Android的apk可以说是作为小型应用,其中99%的应用并不是需要实时更新的,而且诟病于蜗牛 ...

  5. UML元素分析

  6. Card Game Cheater---hdu1528(扑克建图求二分匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1528 题意就是给有两个人有n张牌第二个人知道第一个人的牌的序列: 然后第二个人尽可能的让自己得更高的分 ...

  7. Mysql Workbench 学习

    1.安装 http://dev.mysql.com/downloads/tools/workbench/ 选择合适的,下载(以Ubuntu 为例) cd到下载目录,然后sudo dpkg -i wor ...

  8. 298. Binary Tree Longest Consecutive Sequence

    题目: Given a binary tree, find the length of the longest consecutive sequence path. The path refers t ...

  9. CentOS下下删除大量文件

    首先建立50万个文件 ➜ test for i in $(seq 1 500000);do echo text >>$i.txt;done 1. rm ➜ test time rm -f ...

  10. Android 【问题汇总】列表数组越界的问题

    遇到了一个诡异的问题,ListView发生数组越界(偶尔会),程序崩溃. 错误信息如下: W/dalvikvm( ): threadid=: thread exiting with uncaught ...