上一页 1 ··· 8 9 10 11 12
摘要: 题解:洛谷P1119 灾后重建 题目传送门 前言:没有掌握floyed求最短路的精髓是每次增加选一个中转点,导致写了2h才勉强卡过 法1:最暴力的想法就是开个三维数组把前i个点的dis状态全部存下来,跑N次floyed,当然由于每次点数时递增的,所以实际复杂度远远小于O(N^4),算了下大概200个 阅读全文
posted @ 2023-10-08 11:45 superl61 阅读(34) 评论(0) 推荐(0)
摘要: Johnson全源最短路:负权化正权,最后减去势能差 (1)建虚点0,add(0,i,0),跑st=0的单源最短路hi (2)e[i].w+=h[u]-h[v] ​ Q:为何这样不会得到错误答案? ​ A:[ 最短路 - OI Wiki ]() (3)O(N^2*logN)跑n次dijk Code: 阅读全文
posted @ 2023-10-07 20:34 superl61 阅读(22) 评论(0) 推荐(0)
摘要: 反思 树上LIS 题目描述 给你一棵 n个节点的树,树的每个节点上都有一个值 a[i] 。 现在要您求出从 1 号点到 i 号点的最短路径上最长上升子序列的长度。 就是单调栈优化+dfs回溯 对比两段代码的dfs部分: //AC Code inline void dfs(int u,int f){ 阅读全文
posted @ 2023-10-06 21:12 superl61 阅读(64) 评论(0) 推荐(0)
摘要: 题目背景:你有一个容量为 M的背包,有N个物品,每个物品的重量和价值分别为w[i]和c[i],现在选一些物品放入这个背包使装入的价值最大 1. 01背包(每件物品只有1件):倒序枚举重量,O(N^2) E(i,n){ cin>>w>>c; for(int j=m;j>=w;--j) f[j]=max 阅读全文
posted @ 2023-10-06 19:17 superl61 阅读(20) 评论(0) 推荐(0)
摘要: 单调队列 LCA√ 二叉堆√ ST表 √ 并查集、带权并查集 树的直径、树的重心 树状数组、线段树(见线段树专题) 树上倍增 树上分治 哈希(整数哈希+字符哈希+树哈希) 树链剖分:重链剖分+长链剖分 启发式合并 平衡树(无旋Treap) 1.带权并查集 ·怎样理解“带权”:即在维护点之间的集合关系 阅读全文
posted @ 2023-10-05 17:07 superl61 阅读(45) 评论(2) 推荐(0)
摘要: 线段树的基本操作: 1.单点修改+区间查 #include<bits/stdc++.h> #define lson L,(L+R)/2,p*2 #define rson (L+R)/2+1,R,p*2+1 #define E(i,n) for(int i=1;i<=n;++i) #define F( 阅读全文
posted @ 2023-10-03 11:57 superl61 阅读(28) 评论(0) 推荐(0)
上一页 1 ··· 8 9 10 11 12