摘要: 有一个性质就是组成最小生成树总边权值的若干边权总是相等的 这意味着按边权排序后在权值相同的一段区间内的边能被选入最小生成树的条数是固定的 所以先随便求一个最小生成树,把每段的入选边数记录下来 然后对于每一段dfs找合法方案即可,注意dfs中需要退回并查集,所以用不路径压缩的并查集 然后根据乘法定理, 阅读全文
posted @ 2018-06-30 23:05 lokiii 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 不知道该叫贪心还是dp 倒着来,记f[0][i],f[1][i]分别为先手和后手从n走到i的最大值。先手显然是取最大的,当后手取到比先手大的时候就交换 cpp include include using namespace std; const int N=700005; int n,a[N],w= 阅读全文
posted @ 2018-06-30 16:13 lokiii 阅读(122) 评论(0) 推荐(0) 编辑
摘要: n+1个坐标可以列出n个方程,以二维为例,设圆心为(x,y),给出三个点分别是(a1,b1),(a2,b2),(a3,b3) 因为圆上各点到圆心的距离相同,于是可以列出距离方程 $$ (a1 x)^2+(b1 y)^2=(a2 x)^2+(b2 y)^2 $$ $$ (a1 x)^2+(b1 y)^ 阅读全文
posted @ 2018-06-30 14:17 lokiii 阅读(164) 评论(0) 推荐(1) 编辑
摘要: 按结束时间排序,然后开个线段树,按照排序后的牛群贪心的选 贪心的依据是选哪头牛都是选,不如给后面的多省一点空间 cpp include include include using namespace std; const int N=50005; int m,n,c,ans; struct xds 阅读全文
posted @ 2018-06-30 08:57 lokiii 阅读(107) 评论(0) 推荐(0) 编辑