摘要:
###[SCOI2005]最大子矩阵 思路: f[i][j][k]表示前i行中选择了j个子矩阵,并且第i行的状态式k的j个最大子矩阵的和; k有四种方式,10,01,11,11(两个不属于一个矩阵) 要么承接上一层,要么单独为一个矩阵 代码: #include <bits/stdc++.h> #de 阅读全文
摘要:
###[NOI2007]社交网络 思路: 使用floyd算法并记录路径, d[i][j]=d[i][k]*d[k][j] 代码: #include <bits/stdc++.h> #define int long long int _ = 0, Case = 1; using namespace s 阅读全文
摘要:
###[HNOI2004]宠物收养场 思路: 使用两个multiset维护找到离当前的主人/宠物的最近的位置,删掉,亦可以使用平衡树 代码: STL 写法 #include <bits/stdc++.h> #define int long long int _ = 0, Case = 1; usin 阅读全文
摘要:
###[HNOI2005]狡猾的商人 思路: 带权并查集模板题 代码: #include <bits/stdc++.h> #define int long long int _= 0, Case = 1; using namespace std; #define all(v) begin(v),en 阅读全文
摘要:
[ZJOI2007]矩阵游戏 思路: 假设只考虑变换列,不会影响每一行得相对位置,那么要使得每一行都有一个1,就相当于每一个x有一个匹配的y,可以使用匈牙利算法 代码: #include <bits/stdc++.h> #define int long long int _ = 0, Case = 阅读全文
摘要:
###[HNOI2006] 超级英雄 Hero ####思路: 每个题都只有两种答案,选择一种以后再不能选择,匈牙利模板 ####代码: #include <bits/stdc++.h> #define int long long int _= 0, Case = 1; using namespac 阅读全文
摘要:
玉蟾宫 思路: 将f赋值为1,按列,以i,j为底的最大柱子高度,然后就可以转化成最长直方图问题,使用单调栈求解 代码: #include <bits/stdc++.h> #define int long long int _= 0, Case = 1; using namespace std; #d 阅读全文
摘要:
###[BeijingWc2008]雷涛的小猫 思路: 每个点有两种转移方式,要么由h+d转移过来,要么由h+1转移过来 代码: #include <bits/stdc++.h> #define int long long int _= 0, Case = 1; using namespace st 阅读全文
摘要:
###[CQOI2009]中位数图 因为是排列,不会出现相同的数字,把比b小的赋值为1,大于b的赋值为-1,则要是b为中位数必然这一段的和为0,(注意b的位置) 代码: const int N=200010; int a[N]; int s[N]; void solve(int Case) { in 阅读全文
摘要:
思路: 动态规划,f[i]表示以i结尾的最短时间,f[i]=min(f[j]+c[j+1][i]*(i-j)+k) c[i][j]表示从时间i到j的最短路 代码: #include <bits/stdc++.h> #define int long long int _ = 0, Case = 1; 阅读全文