04 2022 档案
摘要:使用如下代码生成随机数种子: srand(time(0)^(unsigned long long)(new char)); 生成DAG:可以先生成一个拓扑序,再随机从前向后连边即可 生成一棵树:对于i,从1~i-1找一个做父亲即可。
阅读全文
摘要:##【二维st表】【二维单调队列】 ###修筑绿化带 分析: 首先可以枚举大矩形的右下角,用前缀和算出大矩形的面积和。 接下来考虑快速计算出面积最小的小矩形是多少,可以发现对于一个固定的大矩形,小矩形的右下角的取值范围也构成一个矩形,定义w[i][j]为以(i,j)为右下角,C*D的矩阵的面积和,那
阅读全文
摘要:##题目 给定N个点,M条边的无向图,N<=1000,M<=N*(N-1)/2。求1N的最短路中把任意一条边删去后,1N新的最短路长度的最大值。 ##Solution 一种暴力是先把最短路求出后,枚举每条边,将其删去,再重新跑最短路,用不加优化dij,复杂度O(N^3) 发现很难删去一条边,并很快的
阅读全文
摘要:fhq不仅比splay跑得快,还比splay好写得多。 ###Code模板 #include<bits/stdc++.h> using namespace std; //#define int long long inline int read() { int x=0,w=1;char ch=get
阅读全文
摘要:用dij求最短路有一个优化常数的技巧:若当前用来更新的点为终点,则直接返回答案
阅读全文
摘要:##【分层图最短路】【学习笔记】 例题1 分析: 设f[i][j]为从1走到i,已指定j条路径边权为0,边权和的最小值,那么有 f[i][j]+w[i,y]——>f[y][j], f[i][j]——>f[y][j+1], f[1][0]=0. 则答案为f[n][k] 实际
阅读全文