摘要: 二分+二分图匹配 晚上脑子不太好使。。。 行列模型,填充数量性质,种种迹象告诉我们这是二分图,但是我觉得好像不太科学就弃了网络流。。。 二分第k大值,转化为求第n-k+1小值,二分求匹配判定即可。 #include<bits/stdc++.h> using namespace std; const 阅读全文
posted @ 2017-08-22 22:51 19992147 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 哈希 cf原题。。。没见过的话真想不出来 将邻接表排序哈希,判断是否相同,但是会漏掉两点相邻的情况,于是再把自己加入自己的邻接表,然后再哈希判断。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int 阅读全文
posted @ 2017-08-22 22:45 19992147 阅读(170) 评论(0) 推荐(0) 编辑
摘要: dp+树状数组 一维排序,一维离散化,然后跑lis,其实就是一个二维偏序 #include<bits/stdc++.h> using namespace std; const int N = 200010; int dp[N], tree[N]; struct data { int x, y, p; 阅读全文
posted @ 2017-08-22 22:43 19992147 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 高斯消元+搜索 很明显每个开关只能按一次,那么我们可以想到高斯消元,其实就是解异或方程组,但是最后会有一些自由元,也就是有x+y=z,x+y=z这种一样的方程就会产生自由元,那么我们爆搜自由元取值,每次把自由元回带入方程,因为形如x+y=z这样的方程就需要回带,然后就解出一组解,取最小值即可。这当然 阅读全文
posted @ 2017-08-22 22:37 19992147 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 二维单调队列 rmq很明显会超时,如果这个序列是一维的,很明显就是个单调队列,现在就是把一维的单调队列转换为二维单调队列。 先求出每一列的窗口极值,然后对于每一行做单调队列,值就是之前求出每个位置结尾的极值,这样就求出了每个正方形的极值。 写起来要注意一些。 #include<bits/stdc++ 阅读全文
posted @ 2017-08-22 22:30 19992147 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 容斥原理+背包 首先每次做背包是不可行的,那么我们要优化一下,既然是有一些限制条件限制我们获得结果,我们就用容斥去弱化条件,也就是无视一些条件。 既然硬币是有限制的,那么我们就无视限制,用补集求答案,总方案-超限,但是超限也不好算,就用容斥,先跑完全背包求出总方案,然后减去一个超限,加上两个超限,减 阅读全文
posted @ 2017-08-22 22:20 19992147 阅读(184) 评论(0) 推荐(0) 编辑