题目链接:

  http://uoj.ac/problem/179

Solution

就是单纯形模板题,这篇博客就是存一下板子。

Code

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<algorithm>
  6. #include<vector>
  7. using namespace std;
  8. #define eps 1e-9
  9. inline int read()
  10. {
  11. int x=0,f=1; char ch=getchar();
  12. while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
  13. while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
  14. return x*f;
  15. }
  16.  
  17. int N,M,id[11000];
  18. double a[1100][1100],c[1100],b[1100],v,ans[1100];
  19. inline void Pivot(int l,int e)
  20. {
  21. swap(id[e],id[N+l]);
  22.  
  23. double r=a[l][e];
  24.  
  25. a[l][e]=1;
  26. for (int i=1; i<=N; i++) a[l][i]/=r;
  27. b[l]/=r;
  28.  
  29. for (int i=1; i<=M; i++)
  30. if (i!=l) {
  31. r=a[i][e];
  32.  
  33. a[i][e]=0,b[i]-=r*b[l];
  34. for (int j=1; j<=N; j++) a[i][j]-=r*a[l][j];
  35. }
  36.  
  37. r=c[e];
  38. c[e]=0;
  39. for (int i=1; i<=N; i++) c[i]-=r*a[l][i];
  40.  
  41. v+=r*b[l];
  42. }
  43.  
  44. inline int Simplex()
  45. {
  46. int l,e; double k;
  47. while (1) {
  48. l=e=0; k=-eps;
  49. for (int i=1; i<=M; i++)
  50. if (b[i]<k) k=b[i],l=i;
  51. if (!l) break;
  52. k=-eps;
  53. for (int i=1; i<=N; i++)
  54. if (a[l][i]<k && (!e || (rand()&1))) k=a[l][i],e=i;
  55. if (!e) {puts("Infeasible"); return 1;}
  56. Pivot(l,e);
  57. }
  58. while (1) {
  59. for (int i=1; i<=N; i++) {
  60. if (c[i]>eps) {e=i; break;}
  61. if (i==N) {printf("%.8lf\n",v); return 0;}
  62. }
  63. double re=1e18; l=0;
  64.  
  65. for (int i=1; i<=M; i++)
  66. if (a[i][e]>eps && b[i]/a[i][e]<re)
  67. re=b[i]/a[i][e],l=i;
  68.  
  69. if (!l) {puts("Unbounded"); return 2;}
  70. Pivot(l,e);
  71. }
  72.  
  73. }
  74.  
  75. int main()
  76. {
  77. N=read(),M=read(); int type=read();
  78.  
  79. for (int i=1; i<=N; i++) scanf("%lf",&c[i]),id[i]=i;
  80. for (int i=1; i<=M; i++) {
  81. for (int j=1; j<=N; j++) scanf("%lf",&a[i][j]);
  82. scanf("%lf",&b[i]);
  83. }
  84.  
  85. int flag=Simplex();
  86.  
  87. if (flag || !type) return 0;
  88.  
  89. for (int i=1; i<=M; i++) ans[id[N+i]]=b[i];
  90. for (int i=1; i<=N; i++) printf("%.8lf ",ans[i]);
  91.  
  92. return 0;
  93. }

  

【UOJ#179】线性规划 单纯形的更多相关文章

  1. UOJ.179.线性规划(单纯形)

    题目链接 这写得还不错:http://www.cnblogs.com/zzqsblog/p/5457091.html 引入基变量\(x_{i+n}\),将约束\(\sum_{i=1}^m a_{ij} ...

  2. UOJ#179. 线性规划[模板]

    传送门 http://uoj.ac/problem/179 震惊,博主竟然还不会线性规划! 单纯形实在学不会啊……背个板子当黑盒用…… 学(chao)了NanoApe dalao的板子 #includ ...

  3. UOJ#179. 线性规划(线性规划)

    描述 提交 自定义测试 这是一道模板题. (这个题现在标程挂了..哪位哥哥愿意提供一下靠谱的标程呀?) 本题中你需要求解一个标准型线性规划: 有 nn 个实数变量 x1,x2,…,xnx1,x2,…, ...

  4. uoj#179 线性规划

    这是一道模板题. 本题中你需要求解一个标准型线性规划: 有nn个实数变量x1,x2,⋯,xnx1,x2,⋯,xn和mm条约束,其中第ii条约束形如∑nj=1aijxj≤bi∑j=1naijxj≤bi. ...

  5. 【UOJ #179】线性规划 单纯形模板

    http://uoj.ac/problem/179 终于写出来了单纯性算法的板子,抄的网上大爷的qwq 辅助线性规划找非基变量时要加个随机化才能A,我也不知道为什么,卡精度吗? 2017-3-6UPD ...

  6. 【UOJ 179】 #179. 线性规划 (单纯形法)

    http://uoj.ac/problem/179 补充那一列修改方法: 对于第i行: $$xi=bi-\sum Aij*xj$$    $$=bi-\sum_{j!=e} Aij*xj-Aie*xe ...

  7. UVA 10498 Happiness(线性规划-单纯形)

    Description Prof. Kaykobad has given Nasa the duty of buying some food for the ACM contestents. Nasa ...

  8. Note -「线性规划」学习笔记

    \(\mathcal{Definition}\)   线性规划(Linear Programming, LP)形式上是对如下问题的描述: \[\operatorname{maximize}~~~~z= ...

  9. 线性规划VB求解

    线性规划VB求解 Rem 定义动态数组 Dim a() As Single, c() As Single, b() As Single, cb() As Single Dim aa() As Sing ...

随机推荐

  1. Content-Type:几种常用数据编码格式

    Content-Type: 用于定义用户的浏览器或相关设备如何显示将要加载的数据,或者如何处理将要加载的数据. 内容类型,一般指网页中存在的Content-Type,Content-Type属性指定请 ...

  2. Spark记录-Scala循环语句

    Scala while循环语句 当给定条件为真时,while循环重复一个语句或一组语句.它在执行循环体之前测试条件状态. 只要给定的条件为真,while循环语句重复执行目标语句. object Dem ...

  3. 在ajax请求后台时在请求标头RequestHeader加token

    情景:为了保证系统数据的安全性,一般前后台之间的数据访问会有授权与验证,这里的Token机制相对于Cookie支持跨域访问,在RESTful API里面,验证一般可以使用POST请求来通过验证,使服务 ...

  4. php-fpm的status可以查看汇总信息和详细信息

    nginx.conf 配置文件 server { listen ; server_name localhost; index index.php index.html; root /home/tiny ...

  5. livereload使用方法

    搞这个自动刷新的插件搞了好几个小时了还没搞明白,快被气死了,想改用browser-sync结果npm又一直转啊转一直卡死. 刚才终于神奇地搞定了,结果发现还是我自己智商太低...大概的经过是这样的.. ...

  6. JavaScript内部原理实践——真的懂JavaScript吗?(转)

    通过翻译了Dmitry A.Soshnikov的关于ECMAScript-262-3 JavaScript内部原理的文章, 从理论角度对JavaScript中部分特性的内部工作机制有了一定的了解. 但 ...

  7. SDWebImage源码阅读-第二篇

    一  SDWebImageManager的downloadImageWithURL的方法 上一篇,我们刚开了个头,分析了一下开始加载图片之前如何取消其他正在下载的任务,接着,我们回到 - (void) ...

  8. [转]CMake cache

    CMakeCache.txt 可以将其想象成一个配置文件(在Unix环境下,我们可以认为它等价于传递给configure的参数). CMakeLists.txt 中通过 set(... CACHE . ...

  9. 关于Mysql5.6半同步主从复制的开启方法【转】

    介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...

  10. how-to-pass-a-class-variable-to-a-decorator-inside-class-definition

    https://stackoverflow.com/questions/17522706/how-to-pass-a-class-variable-to-a-decorator-inside-clas ...