12 2015 档案
摘要:填坑系列(p.248)比较神从两端枚举最坏复杂度就成O(nlogn)了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 void setIO(const ...
阅读全文
摘要:看网上的斜率优化都比较玄。。。gerw给出了一种比较好的理解方式简单的有两种形式一、形如dp(i) = min / max {f(j) + g(i) * h(j) + c(i)} (j < i) //h() 一般是有单调性的显然c(i)是可以拿出来的,就变成了dp(i) = min / max {f...
阅读全文
摘要:填坑系列(p.246)由函数连续性得满足二分性 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 void setIO(const string& s) {10 freo...
阅读全文
摘要:留坑为什么别人家的斜率优化跟我一点都不一样!为什么斜率都要变成正的。。。为什么要那么推式子为什么不能直接做啊。。。。。为什么不把0去掉去秒WA啊为什么叉积去了0也过不了啊woc啊 1 #include 2 #include 3 #include 4 #include 5 #include ...
阅读全文
摘要:窝只是来留坑的qwq 为毛别人家的乘积式可以过? updated2016.3.23 把向量判断的又写了一遍 就过了
阅读全文
摘要:填坑系列考虑所有经过两个点的直线,一定有最优解。再考虑确定一个点,按极角顺序枚举所有直线,从而O(1)转移信息。还有代码实现技巧 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 const int N = 1000 + 10; ...
阅读全文
摘要:填坑系列(p.172)注意“可以旋转和翻转”然后将每个字母看成点不然边数就是n^2级的 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 void setIO(const str...
阅读全文
摘要:填坑系列(p.171)orz rjl代码基本和rjl的一样 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 template Q read(Q& x) { 8 static char c, f; 9 ...
阅读全文
摘要:这里给出了统计有效子串以及确定其第一次出现位置的方式 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 void setIO(const string& s) ...
阅读全文
摘要:orz JT真是太神辣 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 void setIO(const string& s) {10 freopen((s + ".i...
阅读全文
摘要:一开始考虑所有边都是单独的一条路径然后尽量多的合并 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 void setIO(const string& s) {10 fr...
阅读全文
摘要:这么sb的题本来想练练手记过就是过不了拍半天也没问题留坑哪天有空了去linux下面试试 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 template bool r...
阅读全文
摘要:马题解传送门http://www.cnblogs.com/Tunix/p/4412201.html#include#include#include#include#includeusing namespace std;void setIO(const string& s) { freopen(...
阅读全文
摘要:无聊来写了下一开始发现树高是O(n)的,然后就MLE了,进去看了下发现没有重构!看了半天发现调用错了函数然后进去又发现不满足sz = ch[0]->sz + ch[1]->sz + 1然而全都是maintain过的啊发现后来受某个代码的影响返回重建节点时把引用去掉了这样这个点的父亲的信息就不对了又仔...
阅读全文
摘要:orz题解戳这里https://www.byvoid.com/blog/noi-2008-employee/暂时只能理解下由于不等式不能作差,加上Yi变成等式作差作差后每个X最多出现一次,这样就可以考虑两个之间的影响了(通过连边,这里流出去这么多那里就要流进来这么对,对应一正一负) 1 #incl...
阅读全文
摘要:一、最大权闭合图 对于一个图(V, E)由点集V和有向边集E组成,每个点有一定权值,对于一个合法子集,若有一条有向边(u,v)并且u在子集中,则v也必须在子集中,求子集中所有元素权值和最大的子集 分析:考虑每个点有两种状况,选和不选,所以考虑最小割,但是要求最大费用; 先假设取了所有正权点,从原点向
阅读全文
摘要:要分成两坨对吧。。 所以显然最小割但是不兹辞啊。。最小割是最小的啊 求最大费用怎么玩啊那咱们就把所有费用都加起来,减掉一个最小的呗但是两个属于不同集合的点贡献的价值是负的啊网络流怎么跑负的啊那咱就交换一下呗原图是二分图啊,把另一部分与S和T连边的流量换一下就好啦。注意哦 n和m可能为1 所以累加C的...
阅读全文
摘要:看到黄学长的做法觉得有点疑问网上搜了下发现确实有问题看到PoPoQQQ大爷的啦 http://blog.csdn.net/popoqqq/article/details/41594921然后怎么办呢得把每个出口拆成很多个时刻 每个时刻到t建边 1 #include 2 #include 3 #...
阅读全文
摘要:题很傻TAT但是我的转移很蛋疼。。。这么蛋疼的转移能一次写对还是佩服自己QAQ。。记一下这蛋疼的代码(看到黄学长O(n·(a^m)·k)的没写对,貌似还有O(n^m*k)的写法。 1 #include 2 #include 3 #include 4 #include 5 #include ...
阅读全文
摘要:题意:给两个数n, k,每次将k平方取k的前n位,问所有出现过的数的最大值原来这就是floyd判圈法。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 template Q read(Q& x) { 9 ...
阅读全文