上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 32 下一页
摘要: $dp_i$ 表示在 $i$ 处建一个仓库之后的最小花费。转移方程为 $dp_i = \min \{dp_j + \sum \limits_{k=j+1}^{i-1}p_k\times(x_i-x_k)+c_i\}=\min \{dp_j + x_i\sum \limits_{k=j+1}^{i-1 阅读全文
posted @ 2020-01-27 18:01 Mrzdtz220 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 首先,不知道为什么用了 long double 之后在wsl和cmd跑出来的结果不一样。。看了老半天老是发现不了错。 把圆心平移到坐标原点方便后面计算。 预处理出每个粒子的轨迹,当前位置为 $p$,速度为 $v$,设碰撞点为 $q$,$q=p+tv$,可以得到方程 $(p_x + t v_x)^2 阅读全文
posted @ 2020-01-27 16:07 Mrzdtz220 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 如果这张图是个DAG,那么最长链就是第一个答案,所以就先tarjan缩点。 第二部分拓扑排序解决,注意重边会影响答案,所以不要重复转移。 #include <bits/stdc++.h> namespace IO { char buf[1 << 21], *p1 = buf, *p2 = buf; 阅读全文
posted @ 2020-01-26 16:40 Mrzdtz220 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 整体二分加上一个二维树状数组数点即可。 #include <bits/stdc++.h> namespace IO { char buf[1 << 21], *p1 = buf, *p2 = buf; int p, p3 = -1; void read() {} inline int getc() 阅读全文
posted @ 2020-01-26 14:45 Mrzdtz220 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 整体二分和树套树都是 $O(n \log ^ 2 n)$ 的,但是整体二分的常数更小。 整体二分就是二分答案,然后就转化成区间数点问题,把区间里小于当前mid的数标成1,然后bit查询一下,再分成左右递归做下去。 #include <bits/stdc++.h> const int N = 5e4 阅读全文
posted @ 2020-01-26 12:31 Mrzdtz220 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 黑暗爆炸上没有spj。 第一部分的答案为 $\sum \limits_{j = 1}^{i - 1} q_j \times \frac{1}{(i-j)^2}$,直接卷积就行。第二部分就把 q 数组reverse一下再卷一遍。 #include <bits/stdc++.h> #define db 阅读全文
posted @ 2020-01-26 09:11 Mrzdtz220 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 做法一:直接dinic跑 做法二:平面图最小割转对偶图最短路,左下外区域为起点,右上外区域为终点,一条边连接两个区域,把区域看成点,就变成了最短路问题。 #include <bits/stdc++.h> namespace IO { char buf[1 << 21], buf2[1 << 21], 阅读全文
posted @ 2020-01-25 22:19 Mrzdtz220 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 最小左转法将平面图转成对偶图,然后扫描线进行点定位。 上述两种算法可看这篇博客 这个图可能存在一个轮廓包含另一个轮廓的情况,那么就把左上角的点连个线就可以了,实现也是用扫描线。 自己看懂了算法代码还是不会写,计算几何过于薄弱。。。可作为板子好好巩固。。。 #include <bits/stdc++. 阅读全文
posted @ 2020-01-25 21:07 Mrzdtz220 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 就是二分图匹配,直接匈牙利即可。 #include <bits/stdc++.h> const int N = 220; bool used[N]; int hascow[N], n, link[N][N]; bool find(int x) { for (int i = 1; i <= n; i+ 阅读全文
posted @ 2020-01-25 20:45 Mrzdtz220 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 刚开始想手写平衡树来着,但是发现其实没必要,因为插入操作很友好。 对每个位置维护一个初始位置的值以及末尾位置的值,插入之前和当前位置的末尾值差一下加入set,和下一个位置的初始位置的值差一下加入set,删去当前末尾值与下一位置初始值的差即可。 另外一个也用一个set维护。 #include <bit 阅读全文
posted @ 2020-01-25 20:41 Mrzdtz220 阅读(93) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 32 下一页