上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 27 下一页
摘要: 关键点在于:全排列中,任意两点u、v相邻的次数一定是(n - 1)! * 2次,即一个常数(可以由高中数学知识计算,将这两个点捏一起然后全排列然后乘二;或者用n! / C(2, n))。 这之后就好算了,每条边算一下子树size对吧,乘法原理就是贡献次数,乘以边权加一起就行了。 所以不是dfs就行了 阅读全文
posted @ 2019-04-03 00:07 AlphaWA 阅读(210) 评论(0) 推荐(0) 编辑
摘要: Update:smz说regex秒过Orz,yzd记在这里了。 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校内大佬依旧随手A过去,你吉老师该AK还是AK…… 调调改改的,很丑,懒得优化写法了。 大概思路就是先 阅读全文
posted @ 2019-04-02 22:24 AlphaWA 阅读(929) 评论(0) 推荐(0) 编辑
摘要: 据说这题是种dp的套路?然后被我国红名神仙(南大Roundgod)贪心了,不过思路上非常相近了,故而可贪吧。 设的dp[i][0]是:如果把第i个数放在上升序列里了,那么下降序列结尾的那个最大是多少;同理,dp[i][1]是:如果把第i个数放在下降序列里了,那么上升序列结尾的那个最大是多少。 个人y 阅读全文
posted @ 2019-04-02 19:32 AlphaWA 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 发现奇环不可行,偶环可行,考虑二分图。然后染色,方向全都从一种指向另一种就可以了,随意。 阅读全文
posted @ 2019-04-02 19:22 AlphaWA 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 性质是:把节点dfs序以后,异象石按这个序号排序,然后相邻两两求树上距离,这些距离的和除以二就是最小斯坦纳树。 插入删除的具体操作是根据我们上述性质,用一个set维护dfn,比如插入x,则ans加上:(set里的,即之前已经插进来的)左x + x右 - 左右。 阅读全文
posted @ 2019-04-02 00:40 AlphaWA 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 会卡vector。 阅读全文
posted @ 2019-03-31 20:46 AlphaWA 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 1 const int maxn = 4e4 + 5; 2 int T, n, m; 3 int f[maxn], vis[maxn], dis[maxn], ans[maxn]; 4 vector vc[maxn]; 5 vector query[maxn], id[maxn]; 6 7 inline int getf(int v) { return v == f[v] ? v... 阅读全文
posted @ 2019-03-31 20:45 AlphaWA 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 结论是:按位置排序好以后,对于真正的答案,走法应该是:依次走向第0个等分点,第1个等分点……这样对于这种等分情况,是最优的调度。 阅读全文
posted @ 2019-03-30 08:45 AlphaWA 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 1.答案要取连续的区间疯狂暗示线段树。 2.外层枚举r,内层枚举l显然过于暴力。 3.考虑内层的优化。dp[i]:以第i位为结尾的答案(长度大于1的)。dp[i] = max(第一种情况,第二种情况)。解释一下,首先我们可以做到求出i前面gap[j] > gap[i],j < i最大的j的位置pos 阅读全文
posted @ 2019-03-29 22:24 AlphaWA 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 用solve(l, r, prefix)代表区间l开始r结束、带了prefix个前缀str[l](即l前面的串化简完压缩成prefix-1个str[l],加上str[l]共有prefix个)的最大值。 每层可以选择: 1.直接“提现”,把起始位和前面的“存款”直接提出来,再计算l+1~r区间的值; 阅读全文
posted @ 2019-03-29 16:01 AlphaWA 阅读(175) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 27 下一页