随笔分类 - 圖論
摘要:在DAG图的部分分下很显然是个dp,拓扑排序dp即可搞定,在存在环的情况下,不知道为什么就要用spfa来dp 主要考察对spfa理解是否深刻,其实spfa的过程就是个dp的过程,尤其$if(d[y]>d[x]+w)d[y]=d[x]+w$非常像一个dp的式子, 我们每次都拿有可能更新其他点的点去尝试
阅读全文
摘要:这题和最短路计数有很大关系,再加上k只有50,容易让人想到dp, 先设计状态$f[i][j]$表示到$i$点比最短路多走了$j$长度的方案数,接下来思考转移 考虑一条边$u->v$边权为$w$,从$f[u][j]$能转移到$f[v]$的哪个状态? 既然是走到$v$比$dis[v]$多走多少,就比较显
阅读全文
摘要:我调炸了(Fword 面向数据编程*1 另外一道双倍经验题相同代码可过 简单的树形dp,和dp $f[i][0/1][0/1]$为到$i$选/不选当前,选/不选1号的答案 也可以两次树形dp,一次强制断环上一条边,一次强制连接
阅读全文
摘要:调了一万年......先是==写成=,然后快读出锅,手写队列以为出锅改成stl结果发现stl才是真正出锅....改回手写队列才a 抄题解都抄了好久好久...(写法不唯一... 然后BZOJ RE.........WDNMD 思路,找环,子树求直径,单调队列dp,比较好理解,但是写起来有点麻烦 这里用
阅读全文
摘要:如果考虑没有逆行操作的时候,我们想到缩点,然后在DAG图上随便就能搞出来,加入逆行操作后:(在DAG图上) 1.逆行操作相当于把DAG图的一条边变成无向边走两次,所以可以考虑分层图 先复制一层图,编号n+1~n+n,对于每个原图中的点向所有指向它的边建一条反边指向另外一层,表示我可以从这个点逆行到下
阅读全文
摘要:钥匙只有10种可以状压,最短路或者bfs都行,但是写挂了(现在还是
阅读全文
摘要:我们可能遇到这样的图论模型:在一个正常的图上可以进行 k 次决策,对于每次决策,不影响图的结构,只影响目前的状态或代价。同时这个图论模型和经典的最短路有关,这样我们可以考虑运用分层图最短路。
阅读全文
摘要:https://www.cnblogs.com/noip/archive/2013/03/10/2952520.html 以及高精(抄
阅读全文
摘要:来源:题解 比较不错的博客:http://www.cnblogs.com/dirge/p/5503289.html 最后生成一颗无根树,有n^(n-2)种情况,打架的顺序有(n-1)!种 最后生成一颗有根树,每个点做根有n^(n-2)种情况,共n^(n-1)种
阅读全文
摘要:首先和割点有关,求割点,然后这些割点应该把这个图分成了多个点双,可以考虑点双的缩点,假如缩点做的话我们要分析每个点双的性质和贡献 先拿出一个点双来,如果它没有连接着割点,那么至少要建两个,以防止其中一个塌陷, 如果它连接着一个割点,那么需要建一个,因为可以通过割点到其他点双,或者割点塌陷走这个点双中
阅读全文
摘要:2. 小x游世界树 (yggdrasi.pas/c/cpp) 【问题描述】 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当他想前往阿瓦隆时发现那里只有圣诞节时才能到达,然而现在已经春天了,不甘心的他将自己的目的地改成了世界
阅读全文
摘要:可以發現每個點經過次數恰好等於這個點的度數,所以把點權下放邊權,跑最小生成樹,原來邊權乘二在加上兩端點權,答案再加一遍起點最小點權
阅读全文
摘要:首先理解这里的美味值相当于给你更多时间让你经过这个草垛的, 也就是在经过草垛时可以给你的时间减少w[i],这样能否比最短路不慢 然而我们并不容易知道怎么走才是最好的,所以要想办法避免找这个方案 我们新建一个点,向每个草垛连一个边权为 d[u]-w[u] 的有向边,从这个点跑一次最短路 效果就相当于求
阅读全文
摘要:好像是个不需要vis数组的次短路,跑到收敛,然而给我脑袋弄炸了......到现在还没懂.......究竟次短路应该怎么求a...... 抄题解:
阅读全文
摘要:一开始想着最短路时统计一下到每个点的牛数量,但是没写出来 建最短路树是个不错的想法,正常跑一次最短路,枚举每个点的前驱,如果d[y]==d[x]+w就是树上的一条边,优先连编号小的, 建好树以后做一次dfs,枚举一下每个点的贡献取个最大值即可
阅读全文
摘要:hack: 4 4 1 2 10000 2 3 10000 3 4 10000 1 4 10000 答案:13 不能邊最短路邊取模,因為取模后最大值不一定為原來最大值,所以利用log(m*n)=logm+logn 把邊權取log跑最短路,記錄路徑,最後邊乘邊取模
阅读全文
摘要:P2616 --出题人大战工作人员 时间限制:1000MS 内存限制:131072KB 路 无 无 题目描述(fight.cpp) 邪恶的出题人在NOIP 夏令营的图论专场里出了一道丧题,他想要让可爱的小朋友们都被题目虐得惨惨的~ 这道题目是这个样子的: “小A拥有一个超大型的煤__________
阅读全文
摘要:P2510 -- The Number of Points in Shortest Path 时间限制:1000MS 内存限制:131072KB路 无 无 题目描述(points.cpp) 一张图有n个点,由m条带权无向边构成。对于两个点a,b你需要求出所有可能出现在a,b间最短路径上的点(包括a,
阅读全文
摘要:首先要知道不能跑最短路,因為只有整2^k才能一秒到達,和倍增有關 所以我們想知道任意兩點間能否存在一條2^k長度的路徑,數據很小,可以考慮floyd 把倍增和floyd結合起來考慮發現如果i到k,k到j各有一條2^(k-1長的路徑,那麼i,j之間存在一條2^k長度的路徑 於是在更新一下實際時間,對時
阅读全文
摘要:一道好題不出所料又抄的題解 1.首先對於這張圖肯定要考慮走哪些邊不走哪些邊,發現我們想要的肯定那些邊權最大的邊,所以想到最大生成樹 這樣能保證選到盡量大的邊 2.跑完最大生成樹后每兩點之間就有唯一路徑了,想要知道兩點間最小邊權,可以在LCA過程中求出(我竟然不會LCA),對lca做些許改動
阅读全文

浙公网安备 33010602011771号