solution:
最小割问题。
建如下边:
(S,i,Ai)代表选用A语言编写第i个项目;
(i,T,Bi)代表选用A语言编写第i个项目;
其后注意要反向连边
(i,j,D)代表选用B语言编写第i个项目,选用A语言编写第j个项目;
(j,i,C)代表选用A语言编写第i个项目,选用B语言编写第j个项目;

litc学长出的题,引文最小割题目做的少,想的少,考试时一直没写出来,按题解自己写了个ISAP,已通过所有测试点。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;
typedef long long ll;
int n,m,S,T,A,B,ecnt,first[600000];
struct Edge{int u,v,nxt,cap,flow;}e[1050000];
bool vis[600000];
int q[600000],d[600000],p[600000],num[600000],cur[600000];
void Link(int u,int v,ll w)
{
e[++ecnt].u=u,e[ecnt].v=v,e[ecnt].cap=w,e[ecnt].flow=0;
e[ecnt].nxt=first[u],first[u]=ecnt;
e[++ecnt].u=v,e[ecnt].v=u,e[ecnt].cap=0,e[ecnt].flow=0;
e[ecnt].nxt=first[v],first[v]=ecnt;
}
void bfs()
{
int head=0,tail=1;
memset(vis,false,sizeof(vis));
q[0]=T,d[T]=0,vis[T]=true;
while(head^tail){
int now=q[head++];
for(int i=first[now];i;i=e[i].nxt)
if(!vis[e[i].u]&&e[i].cap>e[i].flow){
vis[e[i].u]=true;
d[e[i].u]=d[now]+1;
q[tail++]=e[i].u;
}
}
}
int Agument()
{
int x=T,a=0x7fffffff;
while(x^S){
a=min(a,e[p[x]].cap-e[p[x]].flow);
x=e[p[x]].u;
}
x=T;
while(x^S){
e[p[x]].flow+=(ll)a;
e[p[x]^1].flow-=(ll)a;
x=e[p[x]].u;
}
return a;
}
ll ISAP()
{
int x=S;
ll flow=0;
bfs();
memset(num,0,sizeof(num));
for(int i=S;i<=T;i++)
num[d[i]]++,cur[i]=first[i];
while(d[S]<n+1){
if(!(x^T)){
flow+=(ll)Agument();
x=S;
}
bool advanced=false;
for(int i=cur[x];i;i=e[i].nxt)
if(e[i].cap>e[i].flow&&d[x]==d[e[i].v]+1){
advanced=true;
cur[x]=p[e[i].v]=i;
x=e[i].v;
break;
}
if(!advanced){
int mn=n;
for(int i=first[x];i;i=e[i].nxt)
if(e[i].cap>e[i].flow)
mn=min(mn,d[e[i].v]);
if(--num[d[x]]==0)break;
num[d[x]=mn+1]++;
cur[x]=first[x];
if(x^S)x=e[p[x]].u;
}
}
return flow;
}
int main()
{
freopen("project.in","r",stdin);
freopen("project.out","w",stdout);
scanf("%d%d",&n,&m);
S=0,T=n+1,ecnt=1;
for(int i=1;i<=n;i++){
int x,y;
scanf("%d%d",&x,&y);
Link(S,i,x);
Link(i,T,y);
}
for(int i=1;i<=m;i++){
int x,y,c,d;
scanf("%d%d%d%d",&x,&y,&c,&d);
Link(x,y,d);
Link(y,x,c);
}
printf("%I64d\n",ISAP());//output 'min cut';
fclose(stdin);fclose(stdout);
return 0;
}

省选模拟赛 project的更多相关文章

  1. 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解

    今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...

  2. @省选模拟赛03/16 - T3@ 超级树

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取 ...

  3. 3.28 省选模拟赛 染色 LCT+线段树

    发现和SDOI2017树点涂色差不多 但是当时这道题模拟赛的时候不会写 赛后也没及时订正 所以这场模拟赛的这道题虽然秒想到了LCT和线段树但是最终还是只是打了暴力. 痛定思痛 还是要把这道题给补了. ...

  4. 省选模拟赛第四轮 B——O(n^4)->O(n^3)->O(n^2)

    一 稍微转化一下,就是找所有和原树差距不超过k的不同构树的个数 一个挺trick的想法是: 由于矩阵树定理的行列式的值是把邻接矩阵数值看做边权的图的所有生成树的边权乘积之和 那么如果把不存在于原树中的 ...

  5. NOI2019省选模拟赛 第五场

    爆炸了QAQ 传送门 \(A\) \(Mas\)的童年 这题我怎么感觉好像做过--我记得那个时候还因为没有取\(min\)结果\(100\to 0\)-- 因为是个异或我们肯定得按位考虑贡献了 把\( ...

  6. NOI2019省选模拟赛 第六场

    传送门 又炸了-- \(A\) 唐时月夜 不知道改了什么东西之后就\(A\)掉了\(.jpg\) 首先,题目保证"如果一片子水域曾经被操作过,那么在之后的施法中,这片子水域也一定会被操作&q ...

  7. 省选模拟赛 arg

    1 arg (arg.cpp/in/out, 1s, 512MB)1.1 Description给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS. ...

  8. 5.10 省选模拟赛 拍卖 博弈 dp

    LINK:拍卖 比赛的时候 前面时间浪费的有点多 写这道题的时候 没剩多少时间了. 随便设了一个状态 就开始做了. 果然需要认真的思考.其实 从我的状态的状态转移中可以看出所有的结论. 这里 就不再赘 ...

  9. 5.5 省选模拟赛 B Permutation 构造 贪心

    LINK:Permutation 对于这种构造神题 我自然是要补的.为啥就我没想出来哇. 30分还是很好写的 注意8!实际上很小 不需要爆搜 写bfs记录状态即可.至于判断状态是否出现与否 可以开ma ...

随机推荐

  1. Phonegap之ios对iPhone6和Plus的闪屏适配 -- xmTan

    故事的发生起于,由于老板强烈要求app在iPhone6和5有一样的工具栏,然后前端妹子用@media为iPhone6和Plus做了样式适配.然后问题来了,竟然奇葩的发现@media样式只对iPhone ...

  2. 监听SD卡状态

     最近在做项目时遇到需要处理SD卡拔出时的监听,在网上找了很多资料.总结了一下, 用接收广播处理最有效率     sd卡拔插时会发送广播,具体如下(摘自一位大虾的博客  来自:http://blog. ...

  3. Android JNI简介

    JNI简介 JNI (Java Native Interface),Java的本地接口 JNI是Java众多开发技术中的一门,意在利用本地代码,为Java程序提供 更高效,更灵活的拓展.应用场景包括: ...

  4. iOS 内存问题

    malloc: *** error for object 0x15f8a3558: incorrect checksum for freed object - object was probably ...

  5. Android中的XML解析

    在安卓中主要有三种XML文档解析方式:DOM(Document Object Model), SAX(Simple API for XML), PULL 他们的主要特点如下表:   特点 主要类 DO ...

  6. IOS NSTimer和CADisplayLink的用法

    IOS--NSTimer和CADisplayLink的用法 NSTimer初始化器接受调用方法逻辑之间的间隔作为它的其中一个参数,预设一秒执行30次.CADisplayLink默认每秒运行60次,通过 ...

  7. Xcode快捷键大全

    转载地址http://www.360doc.com/content/12/0521/09/6541311_212458595.shtml.

  8. C# 得到sqlserver 数据库存储过程,触发器,视图,函数 的定义

    经常从 生产环境 到测试环境, 需要重新弄一整套的数据库环境, 除了表结构以及表结构数据,可以用动软代码生成器 生成之外, 像 存储过程,触发器,等,好像没有批量操作的,意义哥哥农比较麻烦, 所以最近 ...

  9. Mongodb Manual阅读笔记:CH9 Sharding

    9.分片(Sharding) Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb ...

  10. 烂泥:通过binlog恢复mysql数据库

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用bin ...