02 2019 档案
摘要:Floyd求最小环裸题 图中不能含有负权边,否则无最小环 思路:Floyd的流程相当于不断枚举中转点k进行松弛操作,那么,把点的编号按从小到大排序,枚举到第k个中转点时,从i到j以 前k 1个点 作为中转点的最短路已确定,且一定不含环(因为不含有负权边),相当于一条链,用f(i,j)表示,原图中连接
阅读全文
摘要:题目大意:给定起点和终点,求经过k条边的最短路 思路:倍增Floyd 矩阵快速幂优化 ~~其实,虽然被称作倍增Floyd,但和Floyd关系好像并不大?~~ 按dp思想理解,设f(k,i,j)表示经过 k 条边从 i 到 j 的最小花费,则 $f(k,i,j)=min(f(k 1,i,p)+f(1,
阅读全文
摘要:~~~ //暴力 二维前缀和+枚举 O(N^3) include include include using namespace std; const int maxn=105; int n,m,ans,a[maxn][maxn],sum[maxn][maxn]; int main(){ scanf
阅读全文
摘要:二维区间DP/记忆化搜索 原题是求均方差 需要用数学知识化简 转化为求最小平方和 状态:f[k][x1][y1][x2][y2] 表示把左上端点为(x1,y1)、右下端点为(x2,y2)的棋盘分割成k个部分所得的最小平方和 边界:当k=1时 为(x1,y1)到(x2,y2)的和的平方 目标:f[n]
阅读全文
摘要:小木棍 dfs 剪枝 把所有木棍从大到小排序 优化搜索顺序(较大的木棍更不容易凑出需要的长度,使之后的剪枝更早发生) 枚举可能的原始木棍长度,(注意这里不满足单调性,不能二分答案),这里可以把最长的一根现有木棍作为枚举的下界,上界为所有木棍更总长度。 答案只可能为总长度的因数,在枚举过程中其他的数可
阅读全文
摘要:思路 : 设a[i]为N=i时的方法数.i为奇数的时候肯定为0. 如果i为偶数,a[i]可以看成a[i 2]加上两个单位组成的,此时多出来的2单位有3种方法. 也可以看成a[i 4]加上四个单位组成的,此时这四个单位一定是连在一起的,中间不能分割,所以只有两种放法. 同理,可看成a[i 6]加上六个
阅读全文
摘要:~~~ include include include using namespace std; int T,n,m; int solve(int m,int n){//m个苹果 n个盘子 if(m
阅读全文
摘要:+ 题意:给出N个数,对于存有每两个数的差值的序列求中位数(一共个),如果这个序列有偶数个元素,就取中间偏小的作为中位数。 + 思路: 注意到题目中对于每两个数求差值,所有数的排列顺序不影响结果,所以可以先对数组排序。 因为答案具有单调性,所以可以二分答案ans,check函数中求出差
阅读全文
摘要:高斯消元模板 要求输出解的情况(无穷解/无解) 1. 之前写的丑陋代码 ~~~ include include include include using namespace std; const double eps=1e 7; const int maxn=1000; int n;//n个变量
阅读全文
摘要:$ c_x y_{i_1} + (i_1 x) y_{i_1} s include include using namespace std; typedef long long LL; int n,s; LL ans,now=0x3f3f3f3f3f3f3f3f; int main(){ scanf
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 typedef unsigned long long ull; 7 const int N=100005,p=131;//p进制 hash 8 int T,n,ans,len1,len2; 9 ull f[N],key1[N],k...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 typedef long long LL; 7 typedef set::iterator setit; 8 const LL INF=0x3f3f3f3f3f3f3f3f; 9 int n; 10 LL ans; 11 set s; 12 ...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int flag=1; 7 typedef pair p; 8 typedef set::iterator setit; 9 set s; 10 int main(){ 11 while(flag){ 12 scanf...
阅读全文
摘要:1 //思路:贪心+堆 2 //不太好写啊 (抄的题解...) 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 const int maxk=50005; 10 using namespace std; 11 int ans,k,n,c,cnt1,cnt2,...
阅读全文
摘要:1 //思路:贪心+堆 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 const int maxn=1000005; 9 int n,k,ans,ans_l,ans_r;//ans--答案区间长度 ans_l--答案区间左端点 ans_r--答案区间右端点 10...
阅读全文