本弱逼长期做题都是膜题解膜题解,感觉提供一些关键点在进行思考的话能够更快的加强算法能力,所以我就稍微的写一写。
【BZOJ1001】 最小割转平面图。
【BZOJ1002】 状态压缩dp。
【BZOJ1003】 最短路+dp。
【BZOJ1004】 每一种洗牌对应一种置换,用一下burnside。
【BZOJ1005】 prufer。
【BZOJ1006】 弦图最大势。
【BZOJ1007】 维护凸壳。
【BZOJ1008】 补集转化。
【BZOJ1009】 kmp+矩阵优化。
【BZOJ1010】 斜率优化。
【BZOJ1012】 线段树。
【BZOJ1013】 高斯消元。
【BZOJ1014】 splay维护hash值。
【BZOJ1015】 离线转成插入操作并查集维护。
【BZOJ1016】 从小到大插边维护每个连通分量的最小生成树个数。
【BZOJ1019】 令f(i,j)表示从i柱子移动到另一个柱子盘子为j的操作次数,g(i,j)表示从i移动到另一个柱子盘子为j的移动位置。
【BZOJ1022】 SJ定理。
【BZOJ1024】 dfs。
【BZOJ1025】 考虑这个由多少个环且每个环大小和为n,对于每种状态的贡献就是lcm(各个环大小),那么就是求lcm值的种类。
【BZOJ1027】 其中有一维是没用的,这样就是一个经典问题:给定平面n个点,求最小凸包包围查询点。这个用最小环就能解决。
【BZOJ1028】 贪心。
【BZOJ1029】 贪心。
【BZOJ1030】 ACM上面dp。
【BZOJ1031】 SAM。
【BZOJ1034】 花式贪心。
【BZOJ1036】 树链维护值。
【BZOJ1037】 设f(i,j,k)前i个人有j个男的从i开始向前的连续段里最多有k个男与女的差,再设个g(i,j,k)同样地不同的是最多有k个女与男的差。
【BZOJ1040】 基环树。
【BZOJ1041】 很容易知道\(2r=d(a^{2}+b^{2})\),其中\(d=gcd(r+x, r-x)\), \(r+x=da^{2}\), \(r-x=db^{2}\),我们枚举d,然后再枚举a就可以了,注意到如果对于合法的a, b如果交换他们的值对应的x, y是不变的,那么就将a枚举的值缩一半就可以了,最后乘4加4就可以了。
【BZOJ1042】 容斥原理。
【BZOJ1044】 第一问二分。第二问dp。
【BZOJ1045】 经典问题,转化成每个点向正方向扔多少点,转化下就是求一个中位数。
【BZOJ1046】 dp。
【BZOJ1047】 单调队列或用ST表。
【BZOJ1048】 dp。
【BZOJ1049】 dp依照前一个dp值可以写一个O(n^3)的dp但是跑的飞快。
【BZOJ1050】 枚举最小边跑一下。
【BZOJ1051】 tarjan。
【BZOJ1052】 二分+贪心覆盖下。
【BZOJ1053】 爆搜。
【BZOJ1054】 状态压缩爆搜下。
【BZOJ1055】 dp。
【BZOJ1056】 平衡树。
【BZOJ1057】 维护上左右的值单调队列维护下。
【BZOJ1058】 set维护。
【BZOJ1059】 就是求是否存在n个互不同行或同列的点。
【BZOJ1060】 dp。
【BZOJ1061】 线性规划转化网络流。
【BZOJ1066】 网络流。
【BZOJ1067】 分类讨论下就好了。
【BZOJ1068】 dp。
【BZOJ1069】 旋转卡壳。
【BZOJ1070】 每个员工拆成n个点,网络流。
【BZOJ1071】 我们考虑(min_s, min_h)对应的一个集合S,那么(min_s, min_h+1)对应的集合不过是S上加一些值再减掉min_h的点,那么考虑直接枚举min_s, min_h然后单调维护就可以了。
【BZOJ1072】 维护下模的值。
【BZOJ1076】 期望dp。
【BZOJ1079】 f(i1,i2,..,i5,last)表示能涂j次的是i_j,last颜色为last。
【BZOJ1083】 最小生成树。
【BZOJ1084】 m很小可以dp小。
【BZOJ1085】 枚举上限步数然后搜索。
【BZOJ1086】 树分块。
【BZOJ1087】 状态压缩。
【BZOJ1088】 暴力。
【BZOJ1098】 递推。
【BZOJ1090】 dp。
【BZOJ1095】 维护一堆树重心。