[Apio2011]寻路 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 624  Solved: 193[Submit][Status][Discuss] Description TooDee是一块二维格子状的土地(就像著名的笛卡尔坐标系那样) ,在这里生活着很多可爱的Dee.Dee是像蜜蜂一样的小动物,它们只在二维活动,而且它们非常的文明开化.TooDee 的蜂窝和正常世界的蜂窝也是很不一样的,它们是矩形的且它们的边平行于TooDee的地理坐标…
我是智障*3,读优写错了调了半天没发现= = 虽然是个最短路却有网络流一般的神建图啊. 首先发现在拐角处转弯是最优的,于是先离散化,然后矩形的四个顶点向距离它最近的上下左右点连边,跑spfa即可. 就是难写啊,还要判断无解:st在矩形里:dis[t]=inf #include<iostream> #include<cstdio> #include<queue> #include<cstring> #include<algorithm> #incl…
记住:map一定要这么用: if(mp[x[i]+dx[j]].find(y[i]+dy[j])!=mp[x[i]+dx[j]].end()) add(i,mp[x[i]+dx[j]][y[i]+dy[j]]); 而不是 R tmp=mp[x[i]+dx[j]][y[i]+dy[j]]; if(tmp) add(i,tmp); 别问我为什么QAQ 建图:选定一个横天门,向在这一行上的横天门连无向边,剩下的门连有向边:纵寰门一样的方法 用map判 自由_门 旁边八个点是否存在,存在就连边: 最后t…
湫湫系列故事——过年回家 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1362    Accepted Submission(s): 320 Problem Description 出门在外,最想念的还是家,对在深圳腾讯工作的HR湫湫来说,春节回家是一年中最期盼的事,不仅可以见到阔别已久的亲人,还能以相亲的名义调侃众多帅哥(她的内心告诉她…
[Apio2015]雅加达的摩天楼 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 644  Solved: 238[Submit][Status][Discuss] Description 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼.   有 M 只叫做 “doge” 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M−1.编号为 i 的…
题目链接 每个城市要么建首都要么不建,考虑2-SAT 这样一个国家内城市两两连边是很显然的,但是边数为O(n^2) 每个国家中仅有一个建首都,考虑新建前缀S[i]=1/0这2n个点表示当前国家的[1,i]中建了/没建首都 现在考虑这些限制:(A[i]=1/0表示i城市建/不建) 0.若A[i]=1,则S[i]=1:若S[i]=0,则A[i]=0(对于i自己) 1.若A[i]=1,则S[i-1]=0:若S[i-1]=1,则A[i]=0 (一个国家一个首都的限制)(前者由A[i]->A[i-1]'是…
题目链接:poj1122 FDNY to the Rescue! 题意:给出矩阵,矩阵中每个元素tij表示从第i个交叉路口到第j个交叉路口所需时间,若tij为-1则表示两交叉路口之间没有直接路径,再给出火警位置所在的交叉路口 和 一个或多个消防站所处的交叉路口位置.输出要求按消防站到火警位置所需时间从小到大排列,输出信息包括消防站位置(初始位置),火警位置(目标位置),所需时间,最短路径上每个交叉路口. 题解:反向建图,从火警位置求一次最短路,求最短路时记录路径,按时间从小到大输出. #incl…
BZOJ UOJ 首先不考虑奇怪方格的限制,就是类似最大权闭合子图一样建图. 对于奇怪方格的影响,显然可以建一条边\((i\to x,p_i)\),然后由\(x\)向\(1\sim i-1\)中权值在\([l_i,r_i]\)中的点所有点连\(INF\)边. 但是\(O(n^2)\)条边显然要GG.容易想到用线段树优化. 每次都是向前缀所有的点连边,所以可以离散化后用可持久化线段树连边. 另外其实也不需要拆点,直接连即可. //15336kb 500ms #include <cstdio> #…
这道题其实不难...就是建图恶心了点....emm... 题意: 多源多汇 + 拆边 青蛙跳柱子, 每根柱子都有一定的承载能力, 青蛙跳上去之后柱子的承载能力就会减一,跳到边界就能活 跳不到就over了,青蛙有一个最大的跳跃距离dis, 把每根柱子拆成两个点, 中间连一条边,为柱子的承载能力, 每个青蛙的初始位置都为一个源  边界为汇  , 建立超级源s和超级汇t , s连接所有青蛙的起点,权值为1, 边界和 距离青蛙起点小于dis的点连接t, 权值为INF,  并且建立u->u'  u'->…
https://www.lydsy.com/JudgeOnline/problem.php?id=4289 https://www.cnblogs.com/clrs97/p/5046933.html  claris的题解很清晰 如果单纯把无向边拆成有向边然后变成点再连有向边需要建m^2条边. 那么这里可以差分建图压缩新图边的数量,把原图每个点的出边和入边排序,权值相同的出边到入边(开始是无向图所以每个出边一定有权值相同的入边,入边也是)连一条权值为相同权值的边. (从小到大排序后)每条出边往它的…