传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1449

题目简述:

Description

Input

Output

一个整数表示联盟里所有球队收益之和的最小值。

Sample Input

3 3
1 0 2 1
1 1 10 1
0 1 3 3
1 2
2 3
3 1

Sample Output

43
题解:
设x为win,y为lose;
先让所有人后面比赛都会输,计算出一个preans,那么怎么处理会赢的请况呢?
很简单,就让一个人的win+1,lose-1,那么相对于之前就可以获得(c*(x+1)^2+d*(y-1)^2-c*x^2-d*y^2=2*c[i]*win[i]+c[i]+d[i]-2*d[i]*lose[i])
所以就在建一条这样的边就好了,推荐使用 zkw(速度快,代码短);
 #include<iostream>
#include<cstring>
#include<cstdio>
#define inf 0x7fffffff
#define maxn 1000000
int pre[maxn],v[maxn],cost[maxn],cap[maxn],lis[maxn];
int lose[],win[],in[],c[],d[],dis[],now[],sla[],mark[];
bool vis[];
int n,m,s,t,tot,ans;
using namespace std;
void ins(int a, int b, int c, int d)
{
tot++; pre[tot]=now[a]; now[a]=tot; v[tot]=b; cost[tot]=d; cap[tot]=c;
}
void insert(int a, int b, int c, int d)
{
ins(a,b,c,d); ins(b,a,,-d);
}
bool spfa()
{
int head=,tail=;
for (int i=s; i<=t; i++) dis[i]=inf;
memset(mark,,sizeof(mark));
lis[]=t; dis[t]=; mark[t]=;
while (head!=tail)
{
int x=lis[head]; mark[x]=; head++;
if(head==)head=;
for (int i=now[x]; i; i=pre[i])
{
if (dis[x]+cost[i^]<dis[v[i]] && cap[i^])
{
dis[v[i]]=dis[x]+cost[i^];
if (!mark[v[i]])
{
mark[v[i]]=;
tail++;
lis[tail]=v[i];
if(tail==)tail=;
}
}
}
}
// printf("%d\n",dis[s]);
if (dis[s]!=inf ) return true; else return false;
}
int dfs(int x, int f)
{
mark[x]=;
if (x==t) return f;
int w,used=;
for (int i=now[x]; i; i=pre[i])
{
if (!mark[v[i]] && cap[i] && dis[x]-cost[i]==dis[v[i]])
{
w=dfs(v[i],min(f-used,cap[i]));
cap[i]-=w; cap[i^]+=w;
ans+=w*cost[i];
used+=w; if (used==f) return f;
}
}
return used;
}
void zkw()
{
while(spfa())
{
mark[t]=;
while(mark[t])
{
memset(mark,,sizeof(mark));
dfs(s,inf);
}
}
}
int main()
{
scanf("%d%d",&n,&m); tot=; ans=;
for (int i=; i<=n; i++)
scanf("%d%d%d%d",&win[i],&lose[i],&c[i],&d[i]);
s=; t=n+m+;
for (int i=; i<=m; i++)
{
int u,v;
insert(s,i,,);
scanf("%d%d",&u,&v);
insert(i,u+m,,);
insert(i,v+m,,);
in[u]++; in[v]++;
}
for (int i=; i<=n; i++)
{
lose[i]+=in[i];
}
ans=;
for(int i=;i<=n;i++)
ans+=win[i]*win[i]*c[i]+lose[i]*lose[i]*d[i];
for (int i=; i<=n; i++)
for (int j=; j<=in[i]; j++)
{
//insert(i+m,t,1,c[i]*(2*win[i]+2*j-1)-d[i]*(2*lose[i]-2*j+1));
insert(i+m,t,,*c[i]*win[i]+c[i]+d[i]-*d[i]*lose[i]);
win[i]++; lose[i]--;
}
//printf("%d\n",ans);
zkw();
printf("%d\n",ans);
return ;
}
 
 
 
 

bzoj1449————2016——3——14的更多相关文章

  1. 2016.09.14,英语,《Using English at Work》全书笔记

    半个月时间,听完了ESLPod出品的<Using English at Work>,笔记和自己听的时候的备注列在下面.准备把每个语音里的快速阅读部分截取出来,放在手机里反复听. 下一阶段把 ...

  2. Murano Weekly Meeting 2016.06.14

    Meeting time: 2016.June.14 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: 1. ...

  3. 2016.10.14,英语,《American Accent Training》

    这本书是讲述美语发音训练的.已经看了一段时间了,决定向周叶学习,记录读书笔记.计划每天花半个小时,学习3节左右的音频(按照CD TRACK),并完成训练. CD1 Track1 What is Acc ...

  4. nginx学习记录/2016.11.14

    nginx(engine X)是一个高性能的web服务器和反向代理服务器以及电子邮件代理服务器 由俄罗斯的程序设计师Igor Sysoev所开发 nginx+tomcat实现负载均衡 参考地址:htt ...

  5. 2016.11.14测试 长乐一中2014NOIP复赛模拟题 第一题。

    1.正确答案 [题目描述] 小H与小Y刚刚参加完UOIP外卡组的初赛,就迫不及待的跑出考场对答案. "吔,我的答案和你都不一样!",小Y说道,"我们去找神犇们问答案吧&q ...

  6. 2016.8.14安装myplayer心得

    安装mplayer时,我有两个os是not found状态,我在其他地方找到后 which mplayer,找到mplayer的配置界面,找到not found的部分,并且从usr/lib中找到相应的 ...

  7. 2016.9.14 JavaScript入门之七面向对象和函数

    1.JavaScript中的变量,可以是对象,具有相应的属性: 2.我们也能够使用构造函数创建对象.构造函数的函数给出了一个大写的名称,以使它清楚地表明它是一个构造函数. 在构造函数中,这个变量是指由 ...

  8. 2016.8.14 HTML5重要标签以及属性学习

    1.响应网格系统,这使得它很容易把元素放在行,并指定每个元素的相对宽度 . 要注意的是: 在使用网格布局系统之前,要不把布局的元素都添加到同一个<div>中,而且这个<div> ...

  9. 2016.8.14 HTML5重要标签及其属性学习

    1.移动端的CSS: 一般需要引入下面的外部样式表: <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/ ...

随机推荐

  1. asp 随机生成字符

    <%function rndNumLetters(num) randomize dim num0,num1,num2,num3,pass if num = "" or not ...

  2. WiresShark 图解教程1

    Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息.与很多其他网络工具一样,Wireshark也使用pcap network ...

  3. win7 系统保留分区 BCDedit

    系统保留分区简介编辑 “系统保留”分区示意图 Windows Vista/7出于安全考虑,在新装Windows Vista/7系统过程中,如果利用光盘的分区工具给硬盘分区时,系统默认的将一部分(100 ...

  4. 黄聪:基于Asp.net的CMS系统We7架设实验(环境WIN7,SQL2005,.NET3.5)(初学者参考贴)

    http://www.cnblogs.com/huangcong/archive/2010/03/30/1700348.html

  5. 第三方框架ViewPagerIndicator引入到Android Studio的方法总结

    原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6286619.html 第三方框架ViewPagerIndicator实现的效果比较好,但当我们从G ...

  6. Chapter 1 First Sight——2

    "Bella," my mom said to me — the last of a thousand times — before I got on the plane. &qu ...

  7. Jackson基础笔记

    具体内容待完善......手抖,发错了! 一.基本使用 1. bean->jsonStr 2. jsonStr->bean 二.注解使用 三.复杂对象转换 四.其他细节 读取json文本.

  8. 基于Spring的异步系统实现方案

    一般的实现方案 发送异步消息所使用的工具类: import java.util.Date; import javax.jms.Destination; import javax.jms.JMSExce ...

  9. The 2014 ACMICPC Asia Regional Xian

    2题继续遗憾收场,每次都是只差最后一步.这一场却是之前那么多场中感觉距离奖牌最近的时候.好好总结一下经验教训,复盘之后好好准备下一场北京的最后一战吧. 一开始的状态非常不错,10分钟跟榜完成1A,第二 ...

  10. EM算法--第一篇

    在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量(LatentVariable).最大期望 ...