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. 在Powershell ISE中添加sharepoint的智能提示,Enable SharePoint PowerShell Commandlets in the PowerShell ISE

    Powershell ISE在默认状态下有一个不好的地方就是不会显示关于SharePoint的一些智能提示,例如你写一个"get-"后面提示的选项里没有sp开头的一些对象.于是找了 ...

  2. Vault插件示例--Vault Explorer与Thin Client的集成。

    Autodesk Vault 2014的Subscription 包中有一个组件叫做Thin Client.这个瘦客户端有着全新的界面,又给了我们一个全新的选择.ThinClient实际是在Vault ...

  3. [翻译] GONMarkupParser

    GONMarkupParser https://github.com/nicolasgoutaland/GONMarkupParser NSString *inputText = @"Sim ...

  4. Swift开发第二篇——extension及fatalError

    本篇分两部分: 一.extension在 Swift 中的使用 二.Swift 中的 fatalError 一.extension在 Swift 中的使用 在 swift 中我们可以通过 extens ...

  5. sqlalchemy多表联合查询(join)

    使用outerjoin instances = db.session.query(Instance.name, Instance.sep_status, User.email).outerjoin( ...

  6. 资源list:Github上关于大数据的开源项目、论文等合集

    Awesome Big Data A curated list of awesome big data frameworks, resources and other awesomeness. Ins ...

  7. Go语言异步服务器框架原理和实现

    Go语言类库中,有两个官方的服务器框架,一个HTTP,一个是RPC.使用这个两个框架,已经能解决大部分的问题,但是,也有一些需求,这些框架是不够的,这篇文章,我们先分析一下HTTP 和 RPC服务器的 ...

  8. UNABLE TO PURGE A RECORD(二)

    上一篇文章说明了bug出现的原因和原理分析,要修复bug似乎已经水到渠成了,但远没有这么简单,只因为“并发”.要修复问题,首先要做的第一件事情是稳定的复现问题.由于数据库系统是一个并发系统,并且这个b ...

  9. 从客户端中检测到有潜在危险的Request.Form值的详细解决方案

    ASP.Net1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力.当用户试图用之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个HttpRequestValidatio ...

  10. day 2 常用快捷键

    tab命令或路径补全**,linux里最有用的快捷键,如果tab不到路径或命令,就代表没有这个路径或者命令,还有可能是权限不对. ctrl+c :终止当前任务命令或程序. ctrl+d 退出当前用户环 ...