摘要: 要保证长度为L的序列下标字典序最小,当然要尽量选前面的数。 如何判断前面的数是否满足条件?,只需要知道这个数开头的递增序列的最长长度是多少,如果不小于L,那么必然可以加入这个数。还需判断一下它是否大于前面的那个数就行了。 LIS用nlogn。 # include <cstdio> # include 阅读全文
posted @ 2017-03-03 20:00 free-loop 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 点权树链剖分模板题。 # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include <queue> # include <stack> # in 阅读全文
posted @ 2017-03-03 13:26 free-loop 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 设第i个人给了第i+1个人mi个糖果(可以为负),因为最后每个人的糖果都会变成sum/n。 可以得到方程组 mi-mi+1=a[i+1]-sum/n.(1<=i<=n). 把方程组化为mn组成的形式,最后的结果就是求min(abs(mn)+abs(mn-a[i+1]+sum/n)....)。可以看出 阅读全文
posted @ 2017-03-03 10:20 free-loop 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 如果m=n-1,显然这就是一个经典的树形dp。 现在是m=n,这是一个环套树森林,破掉这个环后,就成了一个树,那么这条破开的边连接的两个顶点不能同时选择。我们可以对这两个点进行两次树形DP根不选的情况。 那么答案就是每个森林的max()之和。 # include <cstdio> # include 阅读全文
posted @ 2017-03-02 12:04 free-loop 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题目所谓的序列长度实际上就是各循环节的lcm+1. 所以题目等价于求出 一串数之和等于n,这串数的lcm种数。 由唯一分解定理可以联想到只要把每个素数的幂次放在一个分组里,然后对整体做一遍分组背包就行了。 # include <cstdio> # include <cstring> # includ 阅读全文
posted @ 2017-03-01 17:09 free-loop 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 这是个anti-sg问题,套用sj定理即可解。 SJ定理 对于任意一个Anti-SG游戏,如果定义所有子游戏的SG值为0时游戏结束,先手必胜的条件: 1、游戏的SG值为0且所有子游戏SG值均不超过1。 2、游戏的SG值不为0且至少一个子游戏SG值超过1。 # include <cstdio> # i 阅读全文
posted @ 2017-03-01 15:37 free-loop 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 需要明确的是 对于图的每一个MST,所有的边权排序后的结果都是一样的。 先求出图中的一个MST,对于图中权值和MST中相同的一些边,可以对MST中的边替换形成新的MST,这种替换的条件是和原来的MST的这条边构成的联通性应该是一样的。 可以用dfs找出对于原MST中每个权值的边有多少种选择。最后用乘 阅读全文
posted @ 2017-03-01 15:09 free-loop 阅读(124) 评论(0) 推荐(0) 编辑
摘要: dp[i]=min(dp[j]+(sum[i]-sum[j]+i-j-1-L)^2) (j<i) 令f[i]=sum[i]+i,c=1+l 则dp[i]=min(dp[j]+(f[i]-f[j]-c)^2) 1.证明决策单调性 假设在状态i处的k决策优与j决策,即 dp[k]+(f[i]-f[k]- 阅读全文
posted @ 2017-02-28 19:56 free-loop 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 正着不好搞,考虑倒着搞。倒着搞就是一个并查集。 # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include <queue> # include 阅读全文
posted @ 2017-02-28 19:44 free-loop 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 有一种东西叫树的prufer序列,一个树的与一个prufer序列是一一对应的关系。 设有m个度数确定的点,这些点的度为dee[i],那么每个点在prufer序列中出现了dee[i]-1次。 由排列组合可以推出公式。需要用高精度。 #include<cstdio> #include<cstring> 阅读全文
posted @ 2017-02-28 18:16 free-loop 阅读(189) 评论(0) 推荐(0) 编辑