BZOJ 1061: [Noi2008]志愿者招募【单纯形裸题】
1061: [Noi2008]志愿者招募
Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 4813 Solved: 2877
[Submit][Status][Discuss]
Description
Input
Output
仅包含一个整数,表示你所设计的最优方案的总费用。
Sample Input
2 3 4
1 2 2
2 3 5
3 3 2
Sample Output
HINT
1 ≤ N ≤ 1000,1 ≤ M ≤ 10000,题目中其他所涉及的数据均 不超过2^31-1。
Source
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1061
分析:单纯形裸题,也就是裸题,只能是裸题QAQ!
下面给出AC代码:
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 inline int read() 5 { 6 int x=0,f=1; 7 char ch=getchar(); 8 while(ch<'0'||ch>'9') 9 { 10 if(ch=='-') 11 f=-1; 12 ch=getchar(); 13 } 14 while(ch>='0'&&ch<='9') 15 { 16 x=x*10+ch-'0'; 17 ch=getchar(); 18 } 19 return x*f; 20 } 21 const int M=10005; 22 const int N=1005; 23 const int INF=1e9; 24 const double eps=1e-6; 25 int n,m; 26 double a[M][N],b[M],c[N],v; 27 void pivot(int l,int e)///矩阵的转置 28 { 29 b[l]/=a[l][e]; 30 for(int j=1;j<=n;j++) 31 { 32 if(j!=e) 33 a[l][j]/=a[l][e]; 34 } 35 a[l][e]=1/a[l][e]; 36 for(int i=1;i<=m;i++) 37 { 38 if(i!=l&&fabs(a[i][e])>0) 39 { 40 b[i]-=a[i][e]*b[l]; 41 for(int j=1;j<=n;j++) 42 { 43 if(j!=e) 44 a[i][j]-=a[i][e]*a[l][j]; 45 } 46 a[i][e]=-a[i][e]*a[l][e]; 47 } 48 } 49 v+=c[e]*b[l]; 50 for(int j=1;j<=n;j++) 51 { 52 if(j!=e) 53 { 54 c[j]-=c[e]*a[l][j]; 55 } 56 } 57 c[e]=-c[e]*a[l][e]; 58 } 59 double simplex() 60 { 61 while(1) 62 { 63 int e=0,l=0; 64 for(e=1;e<=n;e++) 65 { 66 if(c[e]>eps) 67 break; 68 } 69 if(e==n+1) 70 return v; 71 double mn=INF; 72 for(int i=1;i<=m;i++) 73 { 74 if(a[i][e]>eps&&mn>b[i]/a[i][e]) 75 { 76 mn=b[i]/a[i][e]; 77 l=i; 78 } 79 } 80 if(mn==INF) 81 return INF; 82 pivot(l,e); 83 } 84 } 85 int main() 86 { 87 n=read(); 88 m=read(); 89 for(int i=1;i<=n;i++) 90 c[i]=read(); 91 for(int i=1;i<=m;i++) 92 { 93 int s=read(); 94 int t=read(); 95 for(int j=s;j<=t;j++) 96 { 97 a[i][j]=1; 98 } 99 b[i]=read(); 100 } 101 printf("%d\n",(int)(simplex()+0.5)); 102 return 0; 103 }
作 者:Angel_Kitty
出 处:https://www.cnblogs.com/ECJTUACM-873284962/
关于作者:阿里云ACE,目前主要研究方向是Web安全漏洞以及反序列化。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
欢迎大家关注我的微信公众号IT老实人(IThonest),如果您觉得文章对您有很大的帮助,您可以考虑赏博主一杯咖啡以资鼓励,您的肯定将是我最大的动力。thx.
我的公众号是IT老实人(IThonest),一个有故事的公众号,欢迎大家来这里讨论,共同进步,不断学习才能不断进步。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码),个人QQ和微信的二维码也已给出,扫描下面👇的二维码一起来讨论吧!!!
欢迎大家关注我的Github,一些文章的备份和平常做的一些项目会存放在这里。