3265: 志愿者招募加强版

Time Limit: 20 Sec  Memory Limit: 512 MB
Submit: 848  Solved: 436
[Submit][Status][Discuss]

Description

Input

Output

Sample Input

3 3
2 3 4
1 1 2 2
1 2 3 5
1 3 3 2

Sample Output

14

HINT

题解:这一题类似于BZOJ1061,(几乎相同,只是把一段连续区间改为几段连续区间而已),做法一样,单纯形模板直接套就行;
具体看代码:
 
参考代码:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define cls(x, val) memset(x,val,sizeof(x))
  4. #define RI register int
  5. #define eps 1e-6
  6. typedef long long ll;
  7. typedef unsigned long long ull;
  8. const int INF=0x3f3f3f3f;
  9. inline int read()
  10. {
  11. int x=,f=;char ch=getchar();
  12. while(ch<''||ch>'') {if(ch=='-') f=-;ch=getchar();}
  13. while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
  14. return x*f;
  15. }
  16. const int N=;
  17. const int M=;
  18. int n,m;
  19. double a[M][N],b[M],c[M],v;
  20. inline void pivot(int l,int e)//矩阵的转秩
  21. {
  22. b[l]/=a[l][e];
  23. for(int j=;j<=n;++j)
  24. {
  25. if(j!=e) a[l][j]/=a[l][e];
  26. }
  27. a[l][e]=/a[l][e];
  28. for(int i=;i<=m;++i)
  29. {
  30. if(i!=l&&fabs(a[i][e])>)
  31. {
  32. b[i]-=a[i][e]*b[l];
  33. for(int j=;j<=n;++j)
  34. {
  35. if(j!=e) a[i][j]-=a[i][e]*a[l][j];
  36. }
  37. a[i][e]=-a[i][e]*a[l][e];
  38. }
  39. }
  40. v+=c[e]*b[l];
  41. for(int j=;j<=n;++j)
  42. {
  43. if(j!=e) c[j]-=c[e]*a[l][j];
  44. }
  45. c[e]=-c[e]*a[l][e];
  46. }
  47.  
  48. inline double simplex()
  49. {
  50. while()
  51. {
  52. int e=,l=;
  53. for(e=;e<=n;++e)
  54. {
  55. if(c[e]>eps) break;
  56. }
  57. if(e==n+) return v;
  58. double mn=INF;
  59. for(int i=;i<=m;++i)
  60. {
  61. if(a[i][e]>eps&&mn>b[i]/a[i][e]) mn=b[i]/a[i][e],l=i;
  62. }
  63. if(mn==INF) return INF;
  64. pivot(l,e);
  65. }
  66. }
  67.  
  68. int main()
  69. {
  70. n=read(),m=read();
  71. for(RI i=;i<=n;++i) c[i]=read();
  72. for(RI i=;i<=m;++i)
  73. {
  74. RI k=read();
  75. while(k--)
  76. {
  77. int s,t;
  78. s=read(),t=read();
  79. for(RI j=s;j<=t;++j) a[i][j]=1.0;
  80. }
  81. b[i]=read();
  82. }
  83. printf("%d\n",(int)(simplex()+0.5));
  84. return ;
  85. }

BZOJ 3265 志愿者招募加强版(单纯形)的更多相关文章

  1. BZOJ.3265.志愿者招募加强版(费用流SPFA)

    题目链接 见上题. 每类志愿者可能是若干段,不满足那个...全幺模矩阵(全单位模矩阵)的条件,所以线性规划可能存在非整数解. 于是就可以用费用流水过去顺便拿个rank2 233. //20704kb ...

  2. BZOJ 3265: 志愿者招募加强版 [单纯形法]

    传送门 一个人多段区间,一样.... 不过国家队论文上说这道题好像不能保证整数解.... #include <iostream> #include <cstdio> #incl ...

  3. BZOJ 3265 志愿者招募增强版 单

    标题效果:同1061 只是间隔为每种类型的志愿工作是多级 这是卡网络流量?未知 所有在所有的1061您将可以更改为在稍微改变- - #include <cmath> #include &l ...

  4. BZOJ 1061: [Noi2008]志愿者招募【单纯形裸题】

    1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 4813  Solved: 2877[Submit][Stat ...

  5. 【BZOJ1061/3265】[Noi2008]志愿者招募/志愿者招募加强版 单纯形法

    [BZOJ1061][Noi2008]志愿者招募 Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募 ...

  6. bzoj3265: 志愿者招募加强版(线性规划+单纯形法)

    传送门 鉴于志愿者招募那题我是用网络流写的所以这里还是写一下单纯形好了-- 就是要我们求这么个线性规划(\(d_{ij}\)表示第\(i\)种志愿者在第\(j\)天能不能服务,\(x_i\)表示第\( ...

  7. bzoj 1061 志愿者招募(最小费用最大流)

    [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 3792  Solved: 2314[Submit][Status][Di ...

  8. 突然想看单纯形 BZOJ3265 志愿者招募加强版

    本来的版本是可以差分之后建图利用网络流,这个题是板子题,就当存个板子,嘻嘻嘻 讲解可以到卿学姐的算法讲堂 https://www.bilibili.com/video/av7847726?from=s ...

  9. bzoj 1061 志愿者招募 有上下界费用流做法

    把每一天看作一个点,每一天的志愿者数目就是流量限制,从i到i+1连边,上下界就是(A[i],+inf). 对于每一类志愿者,从T[i]+1到S[i]连边,费用为招募一个志愿者的费用,流量为inf.这样 ...

随机推荐

  1. [Office] 显示Office 2013中的Developer Tab和启用Macro

    显示Developer Tab是对Office 2013进行开发的前提条件. 在Excel 2013中,打开Excel Option: 只要勾选对应的Developer选项即可显示该tab. 随着Of ...

  2. VS Code 中使用 GitHub pull request 插件提交代码

    VS Code作为一个代码编辑器,受到很多人的喜爱:其中有很多非常有用的插件/扩展功能,也会极大的提高我们的工作效率. 这里介绍一下GitHub pull request,用来向GitHub提交在VS ...

  3. gcc悄无声色将静态函数内联了

    说到内联,可能你还停在十几年前甚至二十多年前的C++教典,c++有内联关键字inline,甚至还用来与c做区分.c99开始c引入inline,gcc比c99早实现对inline支持,vc中c没有关键字 ...

  4. 红帽学习记录[RHCE] 防火墙与网络合作

    目录 防火墙 基本介绍 firewalld 区域zone 管理firewalld 关于富规则 定义 firewalld操作富规则的命令 语法 常用的示例 网络合作 链路聚合 网络组的文件 网络组命令 ...

  5. opencv resize图片为正方形尺寸

    在深度学习中,模型的输入size通常是正方形尺寸的,比如300 x 300这样.直接resize的话,会把图像拉的变形.通常我们希望resize以后仍然保持图片的宽高比. 例如: 如果直接resize ...

  6. Java入门系列之集合HashMap源码分析(十四)

    前言 我们知道在Java 8中对于HashMap引入了红黑树从而提高操作性能,由于在上一节我们已经通过图解方式分析了红黑树原理,所以在接下来我们将更多精力投入到解析原理而不是算法本身,HashMap在 ...

  7. tar文件归档

    tar是UNIX和类UNIX系统上的压缩,备份工具, 名字来源于Tape archive--磁盘归档,最初的时候是用来将数据储存,备份到磁带上的.而今最简单的备份方法是添加新的磁盘或者在云端存储,但即 ...

  8. day 33 线程锁

    Python的GIL锁 - Python内置的一个全局解释器锁,锁的作用就是保证同一时刻一个进程中只有一个线程可以被cpu调度. 为什么有这把GIL锁? 答:Python语言的创始人在开发这门语言时, ...

  9. 1sql

    ------------------ MySQL 服务-- sudo service mysql start/stop/restart/status ------------------ 数据库相关的 ...

  10. ASP.NET Core 中的 ObjectPool 对象重用(二)

    前言 上一篇文章主要介绍了ObjectPool的理论知识,再来介绍一下Microsoft.Extensions.ObjectPool是如何实现的. 核心组件 ObjectPool ObjectPool ...