【传送门:BZOJ2895


简要题意:

  在一个篮球联赛里,有n支球队,球队的支出是和他们的胜负场次有关系的,具体来说,第i支球队的赛季总支出是Ci*x^2+Di*y^2,Di<=Ci。(赢得多,给球员的奖金就多嘛),其中x,y分别表示这只球队本赛季的胜负场次。现在赛季进行到了一半,每只球队分别取得了a[i]场胜利和b[i]场失利。而接下来还有m场比赛要进行。问联盟球队的最小总支出是多少。


题解:

  费用流

  同BZOJ1449


参考代码:

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<cmath>
  6. using namespace std;
  7. struct node
  8. {
  9. int x,y,c,d,next,other;
  10. int el;
  11. node()
  12. {
  13. d=;
  14. }
  15. }a[];int len,last[];
  16. void ins(int x,int y,int c,int d)
  17. {
  18. int k1=++len,k2=++len;
  19. a[k1].x=x;a[k1].y=y;a[k1].c=c;a[k1].d=d;
  20. a[k1].next=last[x];last[x]=k1;
  21. a[k2].x=y;a[k2].y=x;a[k2].c=;a[k2].d=-d;
  22. a[k2].next=last[y];last[y]=k2;
  23. a[k1].other=k2;
  24. a[k2].other=k1;
  25. }
  26. int st,ed;
  27. int list[];
  28. int d[];
  29. bool v[];
  30. int ans;
  31. int pos[],pre[];
  32. bool spfa()
  33. {
  34. for(int i=st;i<=ed;i++) d[i]=;
  35. d[st]=;
  36. memset(v,false,sizeof(v));
  37. v[st]=true;
  38. int head=,tail=;
  39. list[]=st;
  40. while(head!=tail)
  41. {
  42. int x=list[head];
  43. for(int k=last[x];k;k=a[k].next)
  44. {
  45. int y=a[k].y;
  46. if(a[k].c>&&d[y]>d[x]+a[k].d)
  47. {
  48. d[y]=d[x]+a[k].d;
  49. pos[y]=x;
  50. pre[y]=k;
  51. if(v[y]==false)
  52. {
  53. v[y]=true;
  54. list[tail++]=y;
  55. }
  56. }
  57. }
  58. head++;
  59. v[x]=false;
  60. }
  61. if(d[ed]==) return false;
  62. else return true;
  63. }
  64. int w[],l[],C[],D[];
  65. void Flow()
  66. {
  67. while(spfa())
  68. {
  69. ans+=d[ed];
  70. for(int x=ed;x!=st;x=pos[x])
  71. {
  72. a[pre[x]].c--;
  73. a[a[pre[x]].other].c++;
  74. }
  75. }
  76. }
  77. int s[];
  78. int main()
  79. {
  80. int n,m;
  81. scanf("%d%d",&n,&m);
  82. for(int i=;i<=n;i++) scanf("%d%d%d%d",&w[i],&l[i],&C[i],&D[i]);
  83. int sum=;
  84. st=;ed=m+n+;
  85. memset(s,,sizeof(s));
  86. for(int i=;i<=m;i++)
  87. {
  88. int x,y;
  89. scanf("%d%d",&x,&y);
  90. s[x]++;s[y]++;
  91. ins(st,i,,);
  92. ins(i,x+m,,);
  93. ins(i,y+m,,);
  94. l[x]++;l[y]++;
  95. }
  96. for(int i=;i<=n;i++) ans+=C[i]*w[i]*w[i]+D[i]*l[i]*l[i];
  97. //C[i]*2*w[i]+C[i]-D[i]*2*l[i]+D[i]
  98. for(int i=;i<=n;i++)
  99. {
  100. for(int j=;j<=s[i];j++)
  101. {
  102. ins(i+m,ed,,C[i]**w[i]+C[i]-D[i]**l[i]+D[i]);
  103. w[i]++;l[i]--;
  104. }
  105. }
  106. Flow();
  107. printf("%d\n",ans);
  108. return ;
  109. }

BZOJ2895: 球队预算的更多相关文章

  1. BZOJ1449[JSOI2009]球队收益&BZOJ2895球队预算——最小费用最大流

    题目描述 输入 输出 一个整数表示联盟里所有球队收益之和的最小值. 样例输入 3 3 1 0 2 1 1 1 10 1 0 1 3 3 1 2 2 3 3 1 样例输出 43 提示   要求总费用最低 ...

  2. [BZOJ1449] [JSOI2009]球队收益 / [BZOJ2895] 球队预算

    Description 在一个篮球联赛里,有n支球队,球队的支出是和他们的胜负场次有关系的,具体来说,第i支球队的赛季总支出是Cix^2+Diy^2,Di<=Ci.(赢得多,给球员的奖金就多嘛) ...

  3. 【BZOJ1449/2895】[JSOI2009]球队收益/球队预算 最小费用最大流

    [BZOJ2895]球队预算 Description 在一个篮球联赛里,有n支球队,球队的支出是和他们的胜负场次有关系的,具体来说,第i支球队的赛季总支出是Ci*x^2+Di*y^2,Di<=C ...

  4. 【BZOJ-1449&2895】球队收益&球队预算 最小费用最大流

    1449: [JSOI2009]球队收益 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 648  Solved: 364[Submit][Status][ ...

  5. bozj 1449/2895: 球队预算 -- 费用流

    2895: 球队预算 Time Limit: 10 Sec  Memory Limit: 256 MB Description 在一个篮球联赛里,有n支球队,球队的支出是和他们的胜负场次有关系的,具体 ...

  6. 【BZOJ1449&&2895】球队预算 [费用流]

    球队预算 Time Limit: 10 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 在一个篮球联赛里,有n支球队, 球 ...

  7. 【bzoj1449/bzoj2895】[JSOI2009]球队收益/球队预算 费用流

    题目描述 输入 输出 一个整数表示联盟里所有球队收益之和的最小值. 样例输入 3 3 1 0 2 1 1 1 10 1 0 1 3 3 1 2 2 3 3 1 样例输出 43 题解 费用流 由于存在一 ...

  8. 【题解】JSOI2009球队收益 / 球队预算

    为什么大家都不写把输的场次增加的呢?我一定要让大家知道,这并没有什么关系~所以 \(C[i] <= D[i]\) 的条件就是来卖萌哒?? #include <bits/stdc++.h&g ...

  9. 洛谷 P4307 [JSOI2009]球队收益 / 球队预算(最小费用最大流)

    题面 luogu 题解 最小费用最大流 先假设剩下\(m\)场比赛,双方全输. 考虑\(i\)赢一局的贡献 \(C_i*(a_i+1)^2+D_i*(b_i-1)^2-C_i*a_i^2-D_i*b_ ...

随机推荐

  1. 在vue中使用的Echarts的步骤

    1.首先在项目中安装Echarts npm install echarts -g --save //安装 2.在项目中引入Echarts(在main.js中引入) import echarts fro ...

  2. JS函数传参传入对象

    例如: value为一个对象 value={} var valueStr = JSON.stringify(value); 对象转字符串 "<a style='cursor: poin ...

  3. WPF 内存释放

    原文:WPF 内存释放 在WPF 项目中引用到Transitionals 实现图片转场特效,发现每次图片转场内存都会增加,在每次转场后进行内存压缩 记录 解决方案如下: GC.Collect(); G ...

  4. 中国象棋程序的设计与实现(六)--N皇后问题的算法设计与实现(源码+注释+截图)

    八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题. 该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列 ...

  5. Docker学习总结(4)——Docker镜像与容器命令

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...

  6. Vim 批量替换

    假设在非Win系统下. 想批量替换文本不再是Ctrl+F那么简单了, 一般用Vim来做批量替换, 略微复杂点: 比如将192.168.0.1替换为192.168.0.2 :%s/192.168.0.1 ...

  7. tomcatserver管理界面username和password忘记

    tomcatserverhttp://localhost:8080/ 这样訪问,点击Manager App后要求输入username和password才干进入管理应用界面 我忘记了username和p ...

  8. nodejs01

    一.Node.js简介 1.1 简介 V8引擎本身就是用于Chrome浏览器的JS解释部分,但是Ryan Dahl这哥们,鬼才般的,把这个V8搬到了服务器上,用于做服务器的软件. Node.js是一个 ...

  9. Seq和Ack

    http://blog.csdn.net/bytebai/article/details/21752925 握手阶段: 序号    方向         seq           ack1  A-& ...

  10. flatMap作用

    总结:1. map会将每一条输入映射为一个新对象.{苹果,梨子}.map(去皮) = {去皮苹果,去皮梨子} 其中: “去皮”函数的类型为:A => B 2.flatMap包含两个操作:会将每一 ...