【传送门:BZOJ2895


简要题意:

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


题解:

  费用流

  同BZOJ1449


参考代码:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct node
{
int x,y,c,d,next,other;
int el;
node()
{
d=;
}
}a[];int len,last[];
void ins(int x,int y,int c,int d)
{
int k1=++len,k2=++len;
a[k1].x=x;a[k1].y=y;a[k1].c=c;a[k1].d=d;
a[k1].next=last[x];last[x]=k1;
a[k2].x=y;a[k2].y=x;a[k2].c=;a[k2].d=-d;
a[k2].next=last[y];last[y]=k2;
a[k1].other=k2;
a[k2].other=k1;
}
int st,ed;
int list[];
int d[];
bool v[];
int ans;
int pos[],pre[];
bool spfa()
{
for(int i=st;i<=ed;i++) d[i]=;
d[st]=;
memset(v,false,sizeof(v));
v[st]=true;
int head=,tail=;
list[]=st;
while(head!=tail)
{
int x=list[head];
for(int k=last[x];k;k=a[k].next)
{
int y=a[k].y;
if(a[k].c>&&d[y]>d[x]+a[k].d)
{
d[y]=d[x]+a[k].d;
pos[y]=x;
pre[y]=k;
if(v[y]==false)
{
v[y]=true;
list[tail++]=y;
}
}
}
head++;
v[x]=false;
}
if(d[ed]==) return false;
else return true;
}
int w[],l[],C[],D[];
void Flow()
{
while(spfa())
{
ans+=d[ed];
for(int x=ed;x!=st;x=pos[x])
{
a[pre[x]].c--;
a[a[pre[x]].other].c++;
}
}
}
int s[];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d%d%d%d",&w[i],&l[i],&C[i],&D[i]);
int sum=;
st=;ed=m+n+;
memset(s,,sizeof(s));
for(int i=;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
s[x]++;s[y]++;
ins(st,i,,);
ins(i,x+m,,);
ins(i,y+m,,);
l[x]++;l[y]++;
}
for(int i=;i<=n;i++) ans+=C[i]*w[i]*w[i]+D[i]*l[i]*l[i];
//C[i]*2*w[i]+C[i]-D[i]*2*l[i]+D[i]
for(int i=;i<=n;i++)
{
for(int j=;j<=s[i];j++)
{
ins(i+m,ed,,C[i]**w[i]+C[i]-D[i]**l[i]+D[i]);
w[i]++;l[i]--;
}
}
Flow();
printf("%d\n",ans);
return ;
}

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. Linux系统下安装配置 OpenLDAP + phpLDAPadmin

    实验环境: 操作系统:Centos 7.4 服务器ip:192.168.3.41 运行用户:root 网络环境:Internet LDAP(轻量级目录访问协议)是一个能实现提供被称为目录服务的信息服务 ...

  2. 紫书 例题 11-14 UVa 1279 (动点最小生成树)(详细解释)

    这道题写了好久-- 在三维空间里面有动的点, 然后求有几次最小生成树. 其实很容易发现, 在最小生成树切换的时候,在这个时候一定有两条边相等, 而且等一下更大的那条边在最小生成树中,等一下更小的边不在 ...

  3. 计算机系统之汇编---IA32处理器数据格式及数据操作

    计算机系统之汇编---IA32处理器数据格式及数据操作 IA32数据格式: Intel用术语"字"表示16位数据类型,因此.称32位数为"双字",称64位数为& ...

  4. 几种常见sqlalchemy查询:

        #简单查询     print(session.query(User).all())     print(session.query(User.name, User.fullname).all ...

  5. 安卓开发--HttpClient

    package com.zx.httpclient01; import android.app.Activity; import android.os.Bundle; import android.v ...

  6. 一些 <link> 标记分享

    <link rel="alternate" media="handheld" href="#" /> <link rel= ...

  7. Android中的Junit测试

    在开发中Junit测试可以很方便的帮助开者尽可能早的发现并处理问题,而且使用也非常简单,只需要导入Junit测试相关的jar包并创建测试类,就可以对业务功能进行测试,而不用为了测试在代码中添加输出语句 ...

  8. 高德地图和canvas画图结合应用(一)

    现在重构web项目的时候发现,以前项目中是高德画基站的扇区的时候,通过计算点来画多边形,在站点的数量比较多的时候,会增加请求,同时计算扇区的时候有大量的计算,这样会极度浪费服务器的性能,所以对这块进行 ...

  9. PostgreSQL两种事务隔离级

    PostgreSQL两种事务隔离级别: 读已提交:PostgreSQL中缺省隔离级别.当一个事务运行在这个隔离级别时,一个SELECT查询只能看到查询开始之前提交的数据而永远无法看到未提交的数据或者在 ...

  10. net实现压缩功能

    public static class Compressor { public static byte[] Compress(byte[] data) { using (MemoryStream ou ...