[Cqoi2014]危桥 (两遍网络流)】的更多相关文章

Luogu3163 [CQOI2014]危桥 题意 有$n$个点和$m$条边,有些边可以无限次数的走,有些边这辈子只能走两次,给定两个起点和终点$a_1 --> a_2$(起点 --> 终点)和$b_1 --> b_2$(起点 --> 终点),询问是否可以让$a_1 --> a_2$往返$a_n$次,让$b_1 --> b_2$往返$b_n$次 题解 思路 思路还是比较好想的,就是原图连双向边,然后炒鸡源汇连$a_n*2$和$b_n*2$判断满流是否为$(a_n+b_n…
3504: [Cqoi2014]危桥 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1407  Solved: 703[Submit][Status][Discuss] Description Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1.某些岛屿之间有桥相连,桥上的道路是双向的,但一次只能供一人通行.其中一些桥由于年久失修成为危桥,最多只能通行两次.Alice希望在岛屿al和a2之间往返an次(从al到a2再从a2到…
http://www.lydsy.com/JudgeOnline/problem.php?id=3504 往返n遍,即单向2*n遍 危桥流量为2,普通桥流量为inf 原图跑一遍最大流 交换b1,b2再跑一遍最大流 如果两次的结果都等于(an+bn)*2 则可以 证明参见http://www.cnblogs.com/chenyushuo/p/5139556.html #include<queue> #include<cstdio> #include<cstring> #i…
3504: [Cqoi2014]危桥 链接 分析: 首先往返的可以转化为全是“往”,那么只要将容量除以2即可. 然后S向a1连边容量为an(除以2之前为2*an),S向a2连边容量为an,b1,b2向T连边容量为bn.原图上的边,建双向边保存. 这样会存在从a1流向b2的流量,当然也有b1流向a2的流量,考虑如何判断这种情况. 将b1,b2交换,然后重新跑一遍,判断是否满流即可. 第一遍最大流的时候,假设a1->b2流了x的流量,那么有 a1->a2:an-x, a1->b2:x, b1…
Magic Potion http://codeforces.com/gym/101981/attachments/download/7891/20182019-acmicpc-asia-nanjing-regional-contest-en.pdf 从源点到英雄分别拉容量为1和2的边,跑两遍网络流,判断两次的大小和k的大小 #include<iostream> #include<cstring> #include<string> #include<cmath&g…
BZOJ 洛谷 这种题大多是多源多汇跑网络流.往返\(a_n/b_n\)次可以看做去\(a_n/b_n\)次,直接把危桥能走的次数看做\(1\). 先不考虑别的,直接按原图建模:危桥建双向边容量为\(1\),普通桥容量为\(INF\):然后源点\(S\)向\(a_1,b_1\)分别连容量\(a_n,b_n\)的边,\(a_2,b_2\)分别向汇点\(T\)连容量\(a_n/b_n\)的边. 这样跑出来的最大流会有两个问题: 一是,\(b_2\to T\)的\(b_n\)的一部分流量可能是来自\(…
题目描述 Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1.某些岛屿之间有桥相连,桥上的道路是双向的,但一次只能供一人通行.其中一些桥由于年久失修成为危桥,最多只能通行两次.Alice希望在岛屿al和a2之间往返an次(从al到a2再从a2到al算一次往返).同时,Bob希望在岛屿bl和b2之间往返bn次.这个过程中,所有危桥最多通行两次,其余的桥可以无限次通行.请问Alice和Bob能完成他们的愿望吗? 输入输出格式 输入格式: 本题有多组测试数据.每组数据第一行包含7…
题目描述 Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1.某些岛屿之间有桥相连,桥上的道路是双 向的,但一次只能供一人通行.其中一些桥由于年久失修成为危桥,最多只能通行两次.Alice希望在岛屿al和a2之间往返an次(从al到a2再从a2到al算一次往返).同时,Bob希望在岛屿bl和b2之间往返bn次.这个过程中,所有危桥最多通行两次,其余的桥可以无限次通行.请问Alice和Bob能完成他们的愿望吗? 题解 有一个初步的想法,因为图是无向的,所以我们的往返可以看做走…
如果只有一个人的话很容易想到最大流,正常桥连限流inf双向边,危桥连限流2双向边即可.现在有两个人,容易想到给两起点建超源两汇点建超汇,但这样没法保证两个人各自到达自己要去的目的地.于是再超源连一个人的起点和另一个人的终点跑一遍,两次都满流说明有解.证明脑(bu)补(hui). #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring&g…
Description Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1.某些岛屿之间有桥相连,桥上的道路是双 向的,但一次只能供一人通行.其中一些桥由于年久失修成为危桥,最多只能通行两次.Alice希望在岛屿al和a2之间往返an次(从al到a2再从a2到al算一次往返).同时,Bob希望在岛屿bl和b2之间往返bn次.这个过程中,所有危桥最多通行两次,其余的桥可以无限次通行.请问Alice和Bob能完成他们的愿望吗? Input 本题有多组测试数据. 每组数据第一行包…
题意:给出一个图,有的边可以无限走,有的只能走两次(从一头到另一头为一次),给定两个起点以及对应的终点以及对应要走几个来回,求判断是否能完成. 先来一个NAIVE的建图:直接限制边建为容量1,无限制为INF,按照原图连,然后跑最大流就可以了. 可惜这样还不够,因为有可能有一部分流量不是对应的起点流过来的,即两条路有流量交换,这样就不一定可以满足题意了. 解决方法是:再跑一遍网络流,但是建图要改变一下,即将a路线的起点终点调换一下(当然b也可以),再接着跑,如果仍然满足则是真的有解. 证明看了网上…
Description Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1.某些岛屿之间有桥相连,桥上的道路是双 向的,但一次只能供一人通行.其中一些桥由于年久失修成为危桥,最多只能通行两次.Alice希望在岛屿al和a2之间往返an次(从al到a2再从a2 到al算一次往返).同时,Bob希望在岛屿bl和b2之间往返bn次.这个过程中,所有危桥最多通行两次,其余的桥可以无限次通行.请问Alice和 Bob能完成他们的愿望吗? Input 本题有多组测试数据. 每组数据第一…
一开始想了一发费用流做法然后直接出负环了 首先,比较显然的思路就是对于原图中没有限制的边,对应的流量就是\(inf\),如果是危桥,那么流量就应该是\(2\). 由于存在两个起始点,我们考虑直接\(s->a_1,s->b_1\) 然后对于终点,\(a_2->t,b_2->t\) 流量分别是次数的两倍! (因为往返相当于跑双倍的单程) 然后跑最大流,看一下流量是不是\((2\times (a_n+b_n))\) 但是这样会存在一个瑕疵.就是跑出来的路径是\(a_1->b_2\)…
题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; inline int read() { ,f=;char ch=getchar(); ;ch=getchar();} +ch-';ch=getchar();} return x*f; } /********************************************************************/ #define inf…
一种网络流建图的思路吧,改天最好整理一波网络流建图思路 #include <bits/stdc++.h> using namespace std; int n,h,t,a1,a2,an,b1,b2,bn,flow,now;char ch; ],l[],d[][];][]; char getch() { for(ch=getchar();ch!='O' && ch!='N' && ch!='X';ch=getchar()); return ch; } bool b…
题目大意:给张无向图,有两个人a,b分别从各自的起点走向各自的终点,走A,B个来回,图里有些边只能走两次,求问是否能满足a,b的需求 按照题目给的表建图 S连a1,b1 a2,b2连T 跑最大流看是否满流 为了防止a1跑到b2的情况 第二遍 S连a1,b2 a2,b1连T 若还是满流说明没问题 #include<stdio.h> #include<string.h> #include<algorithm> #include<queue> #define IN…
#include<cstdio> #include<iostream> #include<cstring> #define M 100009 #define inf 2139062143 using namespace std; ,T,ans,head[M],d[M],q[*M],next[*M],u[*M],v[*M]; ][]; bool bfs() { memset(d,,)); ,t=; q[]=; d[]=; for(;h<t;) { h++; int…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3504 分析:很容易想到最大流,但如果S-a1,S-b1,a2-T,b2-T这样跑S-T最大流判断是否是满流的话,那么会出现an中间有一部分流从a1-b2,等量的流从b1-a2,这就不符合题意了,于是本渣弱弱翻了题解…… 神犇的题解:先按上述跑一边最大流,再把b2当起点,b1当终点跑最大流,如果两次都满流,那么满足. 下面弱弱证明一下第二次最大流的正确性: 设: a1->a2=an-x a1-…
妙啊,很容易想到连(s,a1,an)(s,b1,bn)(a2,t,an)(b2,t,bn),这样,但是可能会发生a1流到b2或者b1流到a2这种不合法情况 考虑跑两次,第二次交换b1b2,如果两次都合法就是合法 证明是假设a1流到b2了x的流量,然后交换b1b2之后依然满足条件,那么一定可以有a1流到b1了x的流量的最大流,因为是无向图,所以a1流到b2了x的流量可以看做b2流到a1了x的流量,然后连起来就是b1流到b2了x的流量,也就是把不合法的x流量归到合法 #include<iostrea…
传送门 分析 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include<ctime> #include<…
网络流/最大流 比较裸的最大流= = 无向图上走来回其实就等价与走两遍>_> 如果路径有相交其实不影响答案的 比较恶心的是两个人路过同一座桥,但走的方向不同互相抵消流量了…… 其实只要在第一遍跑网络流以后如果为Yes,就将其中一人的起点终点交换,再跑一遍就可以了 UPD:其实N=55就可以了,不需要像我代码里那样开到3000……因为只有n个点= =不是$n^2$的 /************************************************************** P…
[CQOI2014]危桥 Description Alice和Bob居住在一个由N个岛屿组成的国家,岛屿被编号为\(0\)到\(N-1\).某些岛屿之间有桥相连,桥上的道路都是双向的,但是一次只能供一人通行.其中一些桥由于年久失修成为危桥,最多只能通行两次. Alice希望在岛屿\(a1\)和\(a2\)之间往返\(an\)次(从\(a1\)到\(a2\)再从\(a2\)到\(a1\)算一次往返).同时,Bob希望在岛屿\(b1\)和\(b2\)之间往返\(bn\)次.这个过程中,所有危桥最多通…
题面 传送门 思路 这道题中惟一的特别之处,就在于"危桥"这一个只能走两次的东西 我的第一想法是做一个dp,但是这道题只需要能不能走,也没有必要 网络流?貌似是个很好的选择 我们把所有边作为无向边加入图中,流量上限inf 危桥则作为上限2的无向边 从源点连边到a1b1,汇点连边到a2b2,流量都是2*an或2*bn,相当于一次把两遍走了 最后,只要看看最大流不是(2*an+2*bn) 然而有个问题,万一我们最终求得的最大流中,是a1流到b2.b1流到a2呢? 此时有一个好办法:我们把源…
LOJ#2239. 「CQOI2014」危桥 就是先把每条边正着连一条容量为2的边,反着连一条容量为2的边 显然如果只有一个人走的话,答案就是一个源点往起点连一条容量为次数×2的边,终点往汇点连一个次数×2的边,跑最大流看是否满流即可 两个人的话由于两个人的路径可能相交,有可能从\(a_1\)走到了\(b_2\) 统计一遍 \(a_1,b_{1}\)为源点,\(a_{2},b_{2}\)为汇点的情况 再统计一遍\(a_{1},b_{2}\)为源点,\(a_{2},b_{1}\)为汇点的情况 这两…
[BZOJ3504]危桥(网络流) 题面 BZOJ 洛谷 Description Alice和Bob居住在一个由N座岛屿组成的国家,岛屿被编号为0到N-1.某些岛屿之间有桥相连,桥上的道路是双 向的,但一次只能供一人通行.其中一些桥由于年久失修成为危桥,最多只能通行两次.Alice希望在岛屿al和a2之间往返an次(从al到a2再从a2到al算一次往返).同时,Bob希望在岛屿bl和b2之间往返bn次.这个过程中,所有危桥最多通行两次,其余的桥可以无限次通行.请问Alice和Bob能完成他们的愿…
题意:N个点的一棵带权树.切掉某条边的价值为切后两树直径中的最大值.求各个边切掉后的价值和(共N-1项). 解法一: 强行两遍dp,思路繁琐,维护东西较多: dis表示以i为根的子树的直径,dis2表示切掉以i为根的子树后的直径. 第一遍dp,记录 down[][0]:从i结点向下的最大距离  down[][1]:与down[][0]无交集的向下次大距离  dis:以i为根的子树的直径 第二遍dp,记录 up:从i结点向上的最远距离, 可以是w+父节点的up,也可以是w+父节点的down(判断一…
cxf依赖于spring的ContextLoaderListener,而spring mvc 则依赖于DispatcherServlet. 初始化DispatcherServlet的时候会依赖初始化一个spring 容器,此容器为spring全局容器WebApplicationContext的子容器,如果调用相同的配置文件初始化将导致所有类初始化两次,造成不确定的错误. spring的字容器可以访问父容器内的对象,既然如此,可以让全局容器加载除Controller层以外的类,而让spring m…
在我的spring项目中,Aop的Advice执行了两边,就好像拦截了两遍一样. 原因是:切面应该切到接口的实现类上,而不是接口上…
在做taro跳转的时候,发现在跳转后的页面会走两遍componentDidMount周期,查看了github上的issues,发现是跳转路由带参为中文引起的,只要把中文参数进行urlencode解决 Taro.navigateTo({url: `/pages/xxx/xxx?exam_name=${encodeURI(xxx)}`})…
之前没有遇到过这个问题,配了三天的项目了,惊人啊!!!各种怪问题全被我赶上了.真有种骂人的冲动. tomcat启动项目时,项目资源被加载两遍. 原因:配置虚拟目录导致,项目被重新加载. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespa…