关闭

[最短路 主席树 Hash] 51Nod 算法马拉松26 E Travel

跟这个题一毛一样,那个题还高明一点,还会进位#include #include #include #include #include using namespace std; typedef unsigned int uint; typedef unsigned long long ull;inline char nc(...
阅读(127) 评论(0)

[最短路 Bfs 二维线段树] JOI Open Contest 2017 Golf

题目大意:给出平面上n个不相交的矩形障碍,以及起点和终点,要求从起点走到终点的折线段段数最少 VIEW PROBLEM - GOLF (JOI17_GOLF)首先最优解肯定可以只在矩形边所在的直线以及过起点终点平行坐标轴的直线上移动 先预处理出矩形边界能够左右上下延伸的最远距离,转化成一些线段,可以扫描线加线段树 然后就直接bfs,关键操作是找出所有跟当前线段相交的且没被走过的线段,可以把线段...
阅读(188) 评论(0)

[最短路] HDU 5910 Advanced Traffic System

理解了有一会儿,但是题解确实说清楚了关键是只需要更新一遍#include #include #include #include #include #define pb push_back using namespace std; typedef pair abcd;inline char nc()...
阅读(92) 评论(0)

[最短路] 2017 计蒜之道 复赛 D. 百度地图导航

直接最短路就好了 第一次写竟然只拆了一个点 样例输出一坨0 QAQ 没有拿到FB 不开心#include #include #include #include #include #include #include #define cl(x) memset(x,0,sizeof(x...
阅读(128) 评论(0)

[最短路 虚树+线段树优化建图] BZOJ 4912 [Sdoi2017]天才黑客

sro clrs97老师:”T1特别好写” orz 听说SPFA被卡了 /点蜡这个东西跑最短路,状态肯定不能指记录点,还要记录是哪条边走过来的,那干脆就直接记录边 把边变成点,把点变成连在边之间的边我是把一条边拆成两个点,中间设为边的费用 lcp的费用在点变成的边上,这个东西裸的连,在原图一个点上是O(deg2)O(deg ^2)的肯定炸 那么就建一颗虚树,然后枚举lca,把lca是这...
阅读(267) 评论(0)

[最短路 杂题] Codeforces 806D VK Cup 2017 Round 3 D. Perishable Roads

我们把所有边权都减去最小值 然后发现 肯定是一条链然后下面挂着一条0边 然后挂着一整颗子树 子树中贡献都是0 那么我们要最小化那条链 我们发现这条链上如果有连续的权值为 0⋯a,b,c,d⋯且b>c0\cdots a,b,c,d\cdots \text 且 b>c 那么我们把a,ba,b换成一条边答案不会更劣 唯一不行的就是bb就是链头没有边 之后的边必然是递增的 这样就可以做一个最短路了#i...
阅读(161) 评论(0)

[最短路 杂题] BZOJ 4356 Ceoi2014 Wall

具体看题解 我说不清楚 首先可以证明 这个环必然包裹住了所有左上角到其他城市的最短路 证明可以调整为包进去 而不会边劣 然后求出所有最短路 然后把它们包进去的话 把一个交点拆成四个点 然后跑一下左上角绕一圈到左上角的最短路#include #include #include #include #include<que...
阅读(342) 评论(0)

[快速幂 NTT + 最短路] ICPC 2016 China Final I. Cherry Pick

你有mm种面值的硬币,分别为c1,…,cmc_1,…,c_m,每种有无限张。 你去摘nn个樱桃,每个樱桃都有pp的概率摘下来。 你要要用你的硬币把你摘了的樱桃给买下来,每个樱桃需要11元钱,但是不能找钱。 问最好的情况下你期望要多花多少钱。 答案对10^9+7取模。 n<=1e9,m<=100,ci<=1e4n<=1e9, m<=100, ci<=1e4, 且若i≠ji≠j,有ci∗cj<...
阅读(265) 评论(0)

[分治 最短路] BZOJ 4456 [Zjoi2016]旅行者

所有询问离线 把平面分成两块 如果询问两点在同一边 可以不穿过中线 也可以穿过 如果询问两点在不同边 必须穿过 那么我们就可以用中线上所有点更新下 然后递归 卡常数?#include #include #include #include #include using namespace std; ty...
阅读(158) 评论(0)

[最短路 主席树 Hash] Codeforces 464E #265 (Div. 1) E. The Classic Problem

很棒的数据结构练习题 因为边权太大了 我们不能直接储存 我们用主席树! 比较直接从高位到低位找第一个不同的位 可以Hash下 每次加法 我们找到这一位之后第一个0 那么0变为1 0之前一连串1都变成0 这里有个小trick可以不用打标记 我们先建一棵全0的线段树 清0直接找到对应节点接上去就好了#include #include #include<algo...
阅读(164) 评论(0)

[K短路 可持久化堆] HDU 5960 Subsequence

建图不难 然后直接上K短路 A*被完虐 #include #include #include #include #include #include #define cl(x) memset(x,0,sizeof(x)); using namespace std; typedef long long ll; inline char nc(){ static char buf[1000...
阅读(213) 评论(0)

[K短路 可持久化堆 最短路径树] JDFZ 2978 第k短路(强)

链接:https://oj.jdfz.com.cn/oldoj/problem.php?id=2978 鼎爷的【课件】堆的可持久化和k短路 #include #include #include #include #include #include #define cl(x) memset(x,0,sizeof(x)); using namespace std; ty...
阅读(164) 评论(0)

[分层图 DP] HihoCoder #1147 时空阵

题解:http://blog.csdn.net/nlj1999/article/details/50413427?locationNum=4 由于K 于是乎边只能和上一层以及本层的节点相连。 注意最后一层必有n 然后剩下的弄成一团 无所谓分不分层 放在n那一层的后面  #include #include #include using namespace std;...
阅读(205) 评论(0)

[floyed 增量 离线] BZOJ 1774 [Usaco2009 Dec]Toll 过路费

考虑floyed的过程 每次增加一个中间点k 那么我们按权值从小到大加k 然后每次增量后更新答案 #include #include #include #include using namespace std; typedef pair abcd; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p...
阅读(170) 评论(0)

[分治 floyed] 2016 计蒜之道 复赛 百度地图的实时路况

使用分治,考虑Floyd算法本来就是一个增量的过程。 记solve(l,r)表示加入除了l到r之间的点的APSP 然后分治 时间复杂度O(n^3logn) #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef long long ll;...
阅读(200) 评论(0)

[删边最短路 并查集||线段树] BZOJ 2725 [Violet 6]故乡的梦 & 4400 tjoi2012 桥

首先求出一条S到T的最短路P,如果不是最短路上的边删了肯定不影响答案。 接着证明去掉一条边(u,v)之后最短路一定是这样存在一条边(x,y),然后最短路径是S->x->y->T,并且S->x,y->T都是原图中的最短路。 考虑S的最短路径图和T的最短路径图。 于是只要考虑一条边(x,y),然后求出S到x的最短路和这条最短路最早什么时候离开P,记作x’,同理求出y’。 于是(x,y)这条边可...
阅读(374) 评论(0)

[删边最短路 并查集] BZOJ 1576 [Usaco2009 Jan]安全路经Travel

hzwer是这么说的 首先用dijkstra得出最短路径树 然后 我的做法是树链剖分+线段树 对于一条不在最短路树的有向边(无向可看成两条有向)u-v,长度L,设t=lca(u,v) 那么对于t-v的路径上所有点x,都可通过1-t-u-v-x 路径长度为d[u]+L+d[v]-d[x] 最小化这个长度,也就是最小化d[u]+d[v]+L 所以我们...
阅读(117) 评论(0)

[bfs 分层图 字典序 最短路] BZOJ 2644 Pku3967 Ideal Path

将点按照距离分层,对每一层,计算有效点到下一层的最小颜色值 #include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(...
阅读(137) 评论(0)

[最短路] BZOJ 4239 巴士走读

暴力最短路 #include #include #include #include using namespace std; typedef long long ll; typedef pair abcd; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fr...
阅读(496) 评论(0)

[线段树优化建图最短路 bfs] BZOJ 3073 [Pa2011]Journeys

CA爷的题解:http://blog.csdn.net/CreationAugust/article/details/50739132 #include #include #include #include using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1=...
阅读(611) 评论(0)
24条 共2页1 2 下一页 尾页
    个人资料
    • 访问:261085次
    • 积分:11910
    • 等级:
    • 排名:第1320名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:49条
    最新评论