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

题解:显然一道最小割的题目,最好收入的一般套路就是sum减去最小割,然而最重要的是想清楚怎么建图,我们可以思考s为推6图,t为大阪城,将每个节点和s,t连对应权值的边,如果i和j之间有对应关系时就连一条双向边,这个图就可以满足题目的所以关系。选t就割和s的连边,选s就割和t的连边,如果同时刷的话中间的权显然就都得到了,如果分开刷的话,就需要把中间的也割掉,这样就形成割了。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<queue>
#include<cstring>
const int MAXN=;
using namespace std;
struct edge{
int first;
int next;
int cap;
int to;
}a[MAXN];
int dis[MAXN],n,m,sum=,num=;
int s,t;
queue<int> q; void addedge(int from,int to,int cap){
a[++num].to=to;
a[num].cap=cap;
a[num].next=a[from].first;
a[from].first=num;
} void link(int x,int y,int cap){
addedge(x,y,cap),addedge(y,x,);
} bool bfs(){
while(!q.empty()) q.pop();
memset(dis,,sizeof(dis));
dis[s]=;q.push(s);
while(!q.empty()){
int now=q.front();
q.pop();
for(int i=a[now].first;i;i=a[i].next){
int to=a[i].to;
if(dis[to]==&&a[i].cap>){
dis[to]=dis[now]+;
q.push(to);
if(to==t) return ;
}
}
}
return ;
} int dfs(int now,int flow){
if(now==t) return flow;
int tag=;
for(int i=a[now].first;i;i=a[i].next){
int to=a[i].to;
if(dis[to]==dis[now]+&&a[i].cap>){
int minn=dfs(to,min(a[i].cap,flow-tag));
a[i].cap-=minn;
a[i^].cap+=minn;
tag+=minn;
if(tag==flow) return tag;
}
}
return tag;
} int dinic(){
int max_flow=;
while(bfs()) max_flow+=dfs(s,<<);
return max_flow;
} int main(){
scanf("%d%d",&n,&m);s=,t=n+;
for(int i=;i<=n;i++){
int x,y;
scanf("%d%d",&x,&y);
sum+=(x+y);
link(,i,x),link(i,t,y);
}
for(int i=;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
link(x,y,z);link(y,x,z);
sum+=z;
}
printf("%d",sum-dinic());
return ;
}
代码:

【CJOJ】为了博多的更多相关文章

  1. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  2. 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)

    Web.config的读取 对于Web.config的读取大家都很属性了.平时我们用得比较多的就是appSettings节点下配置.如: 我们对应的代码是: = ConfigurationManage ...

  3. 一步步开发自己的博客 .NET版(10、前端对话框和消息框的实现)

    关于前端对话框.消息框的优秀插件多不胜数.造轮子是为了更好的使用轮子,并不是说自己造的轮子肯定好.所以,这个博客系统基本上都是自己实现的,包括日志记录.响应式布局.评论功能等等一些本可以使用插件的.好 ...

  4. 【原】Github+Hexo+NextT搭建个人博客

    摘要 GitHub 是一个开源项目的托管网站,相信很多人都听过.在上面有很多高质量的项目代码,我们也可以把自己的项目代码托管到GitHub,与朋友们共享交流.GitHub Pages 是Github为 ...

  5. 我为什么要写LeetCode的博客?

    # 增强学习成果 有一个研究成果,在学习中传授他人知识和讨论是最高效的做法,而看书则是最低效的做法(具体研究成果没找到地址).我写LeetCode博客主要目的是增强学习成果.当然,我也想出名,然而不知 ...

  6. 博客使用BOS上传图片

    1.博客平台的选定 从大学开始做个人主页算起,最开始是使用html,CSSS写简单的页面,后面大学毕业之后接触到了WordPress,就开始用WordPress搭建网站.现在还维护着一个农村网站.ht ...

  7. 在jekyll模板博客中添加网易云模块

    最近使用GitHub Pages + Jekyll 搭建了个人博客,作为一名重度音乐患者,博客里面可以不配图,但是不能不配音乐啊. 遂在博客里面引入了网易云模块,这里要感谢网易云的分享机制,对开发者非 ...

  8. iOS controller解耦探究实现——第一次写博客

    大学时曾经做过android的开发,目前的工作是iOS的开发.之前自己记录东西都是通过自己比较喜欢的笔记类的应用记录下了.直到前段时一个哥们拉着我注册了一个博客.现在终于想明白了,博客这个东西受众会稍 ...

  9. 中文 iOS/Mac 开发博客列表

    中文 iOS/Mac 开发博客列表 博客地址 RSS地址 OneV's Den http://onevcat.com/atom.xml 一只魔法师的工坊 http://blog.ibireme.com ...

随机推荐

  1. 【Offer】[28] 【对称的二叉树】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 请实现一个函数,用来判断一-棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的.  牛客网刷题地址 思路分析 利用前序 ...

  2. 【MySQL】为什么SQL会这么慢

    建表 CREATE TABLE `ts_ab` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `b` varchar(20) CHARACTER ...

  3. spring security jquery ajax重定向问题解决

    服务器端security增加一个配置如下: @Override protected void configure(HttpSecurity http) throws Exception { Strin ...

  4. Mybatis系列(二)配置

    Mybatis系列(二)配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configu ...

  5. 浅谈独立特征(independent features)、潜在特征(underlying features)提取、以及它们在网络安全中的应用

    1. 关于特征提取 0x1:什么是特征提取 特征提取研究的主要问题是,如何在数据集未明确表示结果的前提下,从中提取出重要的潜在特征来.和无监督聚类一样,特征提取算法的目的不是为了预测,而是要尝试对数据 ...

  6. LVM扩容根分区

    LVM的工作方式 LVM管理工具集 [root@wendang ~]# lsblk NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT sda    ...

  7. 剖析nsq消息队列(二) 去中心化代码源码解析

    在上一篇帖子剖析nsq消息队列(一) 简介及去中心化实现原理中,我介绍了nsq的两种使用方式,一种是直接连接,还有一种是通过nslookup来实现去中心化的方式使用,并大概说了一下实现原理,没有什么难 ...

  8. Spring Boot 入门之基础构建篇(一)

    博客地址:http://www.moonxy.com 一.前言 随着 Spring 的功能越来越强,在使用 Spring 的时候,门槛也变得高了起来,诸如搭建一个基于 Spring 的 Web 程序却 ...

  9. Day 15 文件打包与压缩

    1.什么是文件压缩? 将多个文件或目录合并成为一个特殊的文件.比如: 搬家...脑补画面 img. 2.为什么要对文件进行压缩? 当我们在传输大量的文件时,通常都会选择将该文件进行压缩,然后在进行传输 ...

  10. 2019年研究生数学建模D题《汽车行驶工况构建》解析

    正在整理...