为了博多

P2414 - 为了博多

Description

做了个噩梦,梦见我的 n 把刀到60级会二次变身,变成一个 对推6图有xi点贡献,刷大阪城有yi点贡献 的刀,于是要把刀分成两队一队刷大阪城另一队推6图 。

但是有m对兄弟刀在同一队会有特殊的buff加成,加成值为wi,问怎样分队收益最大,最大值是多少。

Input

第一行两个整数n(刀的数目)(0<=n<=20000),m(兄弟刀的对数)(0<=m<=200000)

接下来n行,每行两个整数xi,yi,分别表示第i把刀对推6图的贡献xi和对刷大阪城的贡献yi。

接下来m行,每行三个整数u,v,wi,分别表示第u把刀和第v把刀是兄弟刀,在一队能产生wi的buff值。

Output

一行一个数字,表示最大收益

Sample Input

3 1

1 10

2 10

10 3

2 3 1000

Sample Output

1023

Hint

Source

网络流,最大流

每一把刀有3种选择,推6图或者刷大阪城或者与兄弟刀一起,建立源点s,汇点t,从s向所有刀建立一条容量为Xi的边,所有点向t建立一条容量为Yi的边,兄弟刀建立一条容量为w的边。此时的边就有以上三种情况,如果有流从s流到t,这是不允许的(一把刀只能有两种选择);若删掉s与所以要做的就是让s与t不连通,且要剩下的权值最大,就是尽量割掉边权小的边,是的s与t不连通,这就是最小割,所以答案就为所有边的权值(容量)-最小割;

 1 #define ll long long
 2 #define inf 999999999
 3 #include<algorithm>
 4 #include<iostream>
 5 #include<iomanip>
 6 #include<cstring>
 7 #include<cstdlib>
 8 #include<cstdio>
 9 #include<queue>
10 #include<ctime>
11 #include<cmath>
12 #include<stack>
13 #include<map>
14 #include<set>
15 using namespace std;
16 const int maxn=20010+2,maxm=200010+maxn*2;
17 struct E{
18     int fr,to,net,cap,flow;
19 }e[maxm*2];
20 int head[maxn],num_e=-1,n,m,s,t;
21 int a[maxn],pre[maxn],d[maxn];
22 void add(int x,int y,int c) {
23     e[++num_e].to=y,e[num_e].fr=x,e[num_e].cap=c;e[num_e].net=head[x];head[x]=num_e;
24 }
25 int lev[maxn];
26 bool bfs() {
27     memset(lev,0,sizeof(lev));
28     lev[s]=1;
29     queue<int> q;
30     q.push(s);
31     while(!q.empty()) {
32     int u=q.front();q.pop();
33     for(int i=head[u];i!=-1;i=e[i].net)if(!lev[e[i].to]&&e[i].cap>e[i].flow) {
34         lev[e[i].to]=lev[u]+1;
35         q.push(e[i].to);
36         if(e[i].to==t) return true;
37     }
38     }
39     return false;
40 }
41 ll dfs(int u,ll f) {
42     if(u==t) return f;
43     ll tag=0;
44     for(int i=head[u];i!=-1;i=e[i].net)
45     if(lev[e[i].to]==lev[u]+1&&e[i].cap>e[i].flow) {
46         ll c=dfs(e[i].to,min(f-tag,(ll)(e[i].cap-e[i].flow)));
47         e[i].flow += c;
48         e[i^1].flow -= c;
49         tag+=c;
50         if(tag==f) break;
51     }
52     return tag;
53 }
54 ll Dinic() {
55     ll flow=0;
56     while(bfs()) {
57     flow += dfs(s,inf);
58     }
59     return flow;
60 }
61 int main() {
62     freopen("hakata.in","r",stdin);
63       freopen("hakata.out","w",stdout);
64     memset(head,-1,sizeof(head));
65     cin>>n>>m;int i;s=0,t=n+1;
66     ll sum=0;
67     for(i=1;i<=n;i++) {
68     int cx,cy;scanf("%d%d",&cx,&cy);//  TMD
69     sum += (ll) cx + (ll) cy;
70     add(s,i,cx),add(i,s,0);//  X
71     add(i,t,cy),add(t,i,0);
72     }//
73     for(i=1;i<=m;i++) {
74     int u,v;scanf("%d%d",&u,&v);int w;scanf("%d",&w);
75     add(u,v,w),add(v,u,w);
76     sum += (ll) w;
77     }
78     printf("%lld",sum-Dinic());
79     return 0;
80 }

时间: 2024-10-26 16:52:24

为了博多的相关文章

从入门到放弃,.net构建博客系统(一):系统构建篇

demo:http://tonyblogs.top/ Git源码:https://github.com/Halifa/TonyBlogs 项目采用的技术有:asp.net mvc4 + autofac + ormlite + mysql + metronic + jquery.datatable + vue 一.项目分层 1. TonyBlogs.Framework,主要实现了框架的依赖注入,定义了依赖的生命周期 2. TonyBlogs.Entity,主要是数据表的实体对象,以Entity为后

wordpress博客站点配置及数据库迁移

1.wordpress博客站点部署配置 1.1 检查环境 1.1.1 nginx.conf配置文件 ###检查nginx配置文件 [[email protected] conf]# cat nginx.conf worker_processes 1; events { worker_connections  1024; } http { log_format  main  '$remote_addr - $remote_user [$time_local]"$request" ' '$

Android ListView工作原理完全解析(转自 郭霖老师博客)

原文地址:http://blog.csdn.net/guolin_blog/article/details/44996879 在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况.ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了. 另外ListView还有一个非常神奇的功能,我相信大家应该都体验过,即使在ListView中加载非常非常多的数据,比如达到

团队作业6——展示博客(Alpha版本)

团队成员的简介和个人博客地址,团队的源码仓库地址. 代泽旭:平时做事认真负责,组织能力强,擅长C#.C++等多门语言,,此次学习了PHP语言.微信接口等新技能,负责总体任务分配,开发微信接口. 林至贤:相信坚持了就一定能成功,代码领略能力高,擅长JAVA,C++等,为人谦虚谨慎,做事低调,有着崇高的艺术追求,对编程有着一定的自我理解. 王李焕:编程能力较好,为人诚实友善,不爱张扬,擅长JAVA.C++等语言编程,对网页制作也有一定了解,对编程有着浓厚的兴趣. 童毅南:自己爱动手,动手能力强,编程

HTML页面中A博娱乐复选框的操作方法

A博娱乐复选框在网页中很是常见,无论是电商网站,还是平台,只有有需要选择的地方就会见到复选的身影.接下来,是我之前写过的两个小demo,都是关于复选框的,希望会给大家带来帮助. 第一个是关于复选框全选反选的操作,当然我在里面还加了一个小功能,就是当选择底下尚品或者其他的东西的复选框全部为选中状态时则全选按钮也变为选中状态:反之亦然. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3

第1篇博客

注册5年了 在这个初期对我提供帮助最大的网站 我却直到今天才写博客 是有点晚了 今天原本想在csdn上创建博客的 因为csdn的百度指数是51cto的5倍不止 它的火热是无容置疑的 但是那里是程序员的天下 国内网络工程师或运维工程师的大本营还是51cto. 本人勉强算80后,奔三十了,网络工程师出身,自学,cisco入门 huawei/h3c/linux就业,经历过小公司大公司,目前在一个国内一个日落西山的通信设备厂商工作,企业市场占有率第一或第二,薪资在IT行业里应该是垫底的队列. 以后我会不

【集美大学1411_助教博客】2017软件工程开跑啦。。。

一.自我介绍 各位同学大家好,我是各位同学本学期软件工程这门课的助教,我叫郑蕊,现工作于吉林省长春市.很荣幸能再一次为<构建之法>担当助教,在之前担当助教的过程中,我已经获益良多,在此还是要感谢周老师和邹老师,感谢两位老师给我树立的优秀榜样,也感谢两位老师对我的教导和引导.很高兴这次能担当集美大学软工课的助教,在15年冬,我曾去过集美大学,那真的是一所风景非常优美的院校,从暴雪的东北到达绿意盎然的夏门,在集美大学的校园中漫步真是一件让人享受的事.希望本学期能和集美大学的同学们共同探讨软件工程,

delphi 移动开发博客地址收集

这个是各位博主学习整理的笔记,很值得大家学习. XE2011的博客: http://www.cnblogs.com/xe2011/ 万一的博客:http://www.cnblogs.com/del/ 武稀松的博客:http://www.raysoftware.cn/ delphiteacher的博客:http://blog.csdn.net/DelphiTeacher 我一路走来的博客:http://blog.csdn.net/tingsking18/article/details/477210

windows上使用mkdocs搭建静态博客

windows上使用mkdocs搭建静态博客 之前尝试过用HEXO搭建静态博客,最近发现有个叫mkdocs的开源项目也是搭建静态博客的好选择,而且它支持markdown格式,下面简要介绍一下mkdocs的环境搭建过程 项目地址:https://github.com/mkdocs/mkdocs 介绍:英文版----http://www.mkdocs.org/ 中文版----http://markdown-docs-zh.readthedocs.io/zh_CN/latest/ 使用环境:win8.

MetaWeblog博客客户端工具之Windows Live Writer

吐槽&注意的坑: 刚听说了有这么一个东西,据说Windows Live Writer开源之后就改名为Open Live Writer,我以为Open Live Writer就要比Windows Live Writer要好于是就去下了Open Live Writer,然而我还是native了- 我说我装个插件吧,去官网一看,据说九个月没更新了,娘的coming了九个月-! 中英文这种问题就不吐槽了,按照网上的办法Open Live Writer安装插件根本装不上,因为默认安装的时候没有让选择安装目