BZOJ 3691 游行
题目传送门
分析:
没被访问的点要C费用,跑一次路要C费用
把这两个统一一下试试。。。
那就是每次不标记起点或者终点
那就是路径覆盖了2333
二分图,x 部 i 号点与 y 部 j 号点连 i 到 j 的最短路
然后每个点都会被访问到
但是有些的代价会大于C
那些就干脆不访问了吧2333
看看费用流的函数特征
是一个单增函数
某一刻一单位流的代价大于了C,那就可以停止了
由于C会变,先求出整个的费用流函数,每次二分查找就好了
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue> #define maxn 2005
#define maxm 200005
#define INF 0x3f3f3f3f using namespace std; inline int getint()
{
int num=,flag=;char c;
while((c=getchar())<''||c>'')if(c=='-')flag=-;
while(c>=''&&c<='')num=num*+c-,c=getchar();
return num*flag;
} int n,m,Q;
int S,T;
int fir[maxn],nxt[maxm],to[maxm],cnt;
int cap[maxm],cst[maxm];
int dis[maxn];
int vis[maxn],pre[maxn];
int sum[maxn],tot;
int D[maxn][maxn]; inline void newnode(int u,int v,int w,long long c)
{to[++cnt]=v,nxt[cnt]=fir[u],fir[u]=cnt,cap[cnt]=w,cst[cnt]=c;}
inline void insert(int u,int v,int w,long long c)
{newnode(u,v,w,c),newnode(v,u,,-c);} inline bool spfa()
{
memset(dis,INF,sizeof dis);dis[S]=;
memset(pre,-,sizeof pre);
queue<int>Q;Q.push(S),vis[S]=;
while(!Q.empty())
{
int u=Q.front();Q.pop();vis[u]=;
for(int i=fir[u];i;i=nxt[i])
if(cap[i]&&dis[to[i]]>dis[u]+cst[i])
{
dis[to[i]]=dis[u]+cst[i];pre[to[i]]=i^;
if(!vis[to[i]])vis[to[i]]=,Q.push(to[i]);
}
}
return ~pre[T];
} inline int dinic()
{
int num=;
while(spfa())
{
tot++;
sum[tot]=sum[tot-];
int mn=INF;
for(int i=pre[T];i!=-;i=pre[to[i]])mn=min(mn,cap[i^]);
int tmp=;
for(int i=pre[T];i!=-;i=pre[to[i]])cap[i]+=mn,cap[i^]-=mn,tmp+=cst[i^];
sum[tot]+=tmp*mn,num+=mn;
}
return num;
} int main()
{
n=getint(),m=getint(),Q=getint();
S=n*+,T=S+,cnt=;
memset(D,INF,sizeof D);
for(int i=;i<=n;i++)D[i][i]=;
for(int i=;i<=m;i++)
{
int u=getint(),v=getint();
D[u][v]=min(getint(),D[u][v]);
}
for(int k=;k<=n;k++)for(int i=;i<=n;i++)for(int j=;j<=n;j++)
D[i][j]=min(D[i][j],D[i][k]+D[k][j]);
for(int i=;i<=n;i++)insert(S,i,,),insert(i+n,T,,);
for(int i=;i<=n;i++)for(int j=;j<=n;j++)if(i^j)insert(i,j+n,,D[i][j]);
dinic();
while(Q--)
{
int C=getint(),l=,r=tot,ans=;
while(l<=r)
{
int mid=(l+r)>>;
if(sum[mid]-sum[mid-]<C)l=mid+,ans=mid;
else r=mid-;
}
printf("%d\n",sum[ans]+(n-ans)*C);
}
}

BZOJ 3691 游行的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 【BZOJ3691】游行(网络流)
[BZOJ3691]游行(网络流) 题面 BZOJ 然而权限题. Description 每年春季,在某岛屿上都会举行游行活动. 在这个岛屿上有N个城市,M条连接着城市的有向道路. 你要安排英雄们的巡 ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
随机推荐
- MFC防止进程重复建立
原文:https://blog.csdn.net/zhang11wu4/article/details/7100839 在APP类的InitInstance()的最前面加入以下代码,建立互斥区,可防止 ...
- Asp.net全局资源文件( App_GlobalResources)和本地资源文件(App_LocalResources)
今天项目中需要加入对不同语言的支持. 找了半天的资料,关于GlobalResources和LocalResource都说的模棱两可的. 只能自己边找资料边试. 全局资源文件 样例(Demo中有 ...
- 学习Java第二周
这是学习java的第二周,又这样不知不觉的结束了 上周想要学习的这一周也都做到了,可是觉得进度有些慢了,学习了: 1. 接口和抽象类: 2. 集合与数组: 3. 方法的定义: 4. 递归算法: 5.对 ...
- Vue通讯
vue组件通讯 #props传递数据 父->子 //父组件传递数据 <template> <Children :data="msg"></Chi ...
- 解析crash
命令行 1.查找 symbolicatecrash find /Applications/Xcode.app -name symbolicatecrash -type f 2.此时会出现一个路径 sy ...
- mysql中information_schema.triggers字段说明
1. 获取所有触发器信息(TRIGGERS) SELECT * FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA='数据库名'; TR ...
- 0016 CSS 背景:background
目标 理解 背景的作用 css背景图片和插入图片的区别 应用 通过css背景属性,给页面元素添加背景样式 能设置不同的背景图片位置 [插入图片,不用设置img元素的父元素.自身元素大小,即可见,但是背 ...
- 20191024-2 Alpha阶段贡献分配
此作要求参见: https://edu.cnblogs.com/campus/nenu/2019fall/homework/9858 要求1 每位组员的贡献分值 罗杨美慧:9 徐丽君:11 魏鑫:12 ...
- 后缀自动机&回文自动机学习笔记
在学了一天其实是边学边摆之后我终于大概$get$后缀自动机了,,,就很感动,于是时隔多年我终于决定再写篇学习笔记辽$QwQ$ $umm$和$FFT$学习笔记一样,这是一篇单纯的$gql$的知识总结博, ...
- Spring中常见的设计模式——策略模式
策略模式(Strategy Pattern) 一.策略模式的应用场景 策略模式的应用场景如下: 系统中有很多类,而他们的区别仅仅在于行为不同. 一个系统需要动态的在集中算法中选择一种 二.用策略模式实 ...