省选模拟赛 project
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的更多相关文章
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
- @省选模拟赛03/16 - T3@ 超级树
目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取 ...
- 3.28 省选模拟赛 染色 LCT+线段树
发现和SDOI2017树点涂色差不多 但是当时这道题模拟赛的时候不会写 赛后也没及时订正 所以这场模拟赛的这道题虽然秒想到了LCT和线段树但是最终还是只是打了暴力. 痛定思痛 还是要把这道题给补了. ...
- 省选模拟赛第四轮 B——O(n^4)->O(n^3)->O(n^2)
一 稍微转化一下,就是找所有和原树差距不超过k的不同构树的个数 一个挺trick的想法是: 由于矩阵树定理的行列式的值是把邻接矩阵数值看做边权的图的所有生成树的边权乘积之和 那么如果把不存在于原树中的 ...
- NOI2019省选模拟赛 第五场
爆炸了QAQ 传送门 \(A\) \(Mas\)的童年 这题我怎么感觉好像做过--我记得那个时候还因为没有取\(min\)结果\(100\to 0\)-- 因为是个异或我们肯定得按位考虑贡献了 把\( ...
- NOI2019省选模拟赛 第六场
传送门 又炸了-- \(A\) 唐时月夜 不知道改了什么东西之后就\(A\)掉了\(.jpg\) 首先,题目保证"如果一片子水域曾经被操作过,那么在之后的施法中,这片子水域也一定会被操作&q ...
- 省选模拟赛 arg
1 arg (arg.cpp/in/out, 1s, 512MB)1.1 Description给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS. ...
- 5.10 省选模拟赛 拍卖 博弈 dp
LINK:拍卖 比赛的时候 前面时间浪费的有点多 写这道题的时候 没剩多少时间了. 随便设了一个状态 就开始做了. 果然需要认真的思考.其实 从我的状态的状态转移中可以看出所有的结论. 这里 就不再赘 ...
- 5.5 省选模拟赛 B Permutation 构造 贪心
LINK:Permutation 对于这种构造神题 我自然是要补的.为啥就我没想出来哇. 30分还是很好写的 注意8!实际上很小 不需要爆搜 写bfs记录状态即可.至于判断状态是否出现与否 可以开ma ...
随机推荐
- 对抽屉效果几大github第三方库的调研
在公司项目新版本方案选择中,对主导航中要使用的抽屉效果进行了调研.主要原因是旧的项目中所用的库ECS评价不是很好.现对当下比较火的几大热门抽屉效果的第三方库进行了调研.代码全部选自github 如果你 ...
- Android 手机卫士--打包生成apk维护到服务器
项目打包生成apk过程: 1.生成签名文件,并且指定所在位置 2.使用生成的签名文件,给工程打包生成一个apk 本文地址:http://www.cnblogs.com/wuyudong/p/59033 ...
- iOS底层基础知识-文件目录结构
一:iOS沙盒知识 出于安全考虑,iOS系统把每个应用以及数据都放到一个沙盒(sandbox)里面,应用只能访问自己沙盒目录里面的文件.网络资源等(也有例外,比如系统通讯录.照相机.照片等能在用户授权 ...
- 搭建Maven私服-续
前几天搭建了Maven私服,但是想在外网访问只能通过ip地址,因为公司用的不是固定ip所以,ip地址每次不一样,都要先打开极路由查看一下当前ip才能用,更恶心的是,代码check out只能一次,下次 ...
- UIPickerView简单应用
下面是一些效果图 下面是代码.有些枯燥 , 其实并不难 . #import <UIKit/UIKit.h> @interface ViewController : UIViewContro ...
- CSS Sprites (CSS图像拼合技术)教程工具
什么是CSS Sprites? “Sprite”(精灵)这个词在计算机图形学中有它独特的定义,由于游戏.视频等画质越来越高,必须有一种技术可以智能的处理材质和贴图,并且要 同时保持画面流畅.“Spri ...
- EMC Documentum DQL整理(四)
1.List files and folder in specified folder pathSELECT DISTINCT s.object_name, fr.r_folder_path FROM ...
- 挖一挖C#中那些我们不常用的东西之系列(3)——StackTrace,Trim
时间太快了,三月又要过去了,告别一下...继续期待生死未卜的四月,今天我们继续挖一挖. 一: Environment.StackTrace 可能我们看到最多的就是catch中的e参数,里面会有一个St ...
- Jmeter之Bean shell使用(二)
上一篇Jmeter之Bean shell使用(一)简单介绍了下Jmeter中的Bean shell,本文是对上文的一个补充,主要总结下常用的几种场景和方法,相信这些基本可以涵盖大部分的需求.本节内容如 ...
- RAID详解[RAID0/RAID1/RAID10/RAID5]
一.RAID定义RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘 ...