zoukankan      html  css  js  c++  java
  • 雅礼集训2019 Day2

    雅礼集训2019 Day2

    two

    你有两棵有根树,每棵各有 n 个顶点。让我们用整数 1 到 n 给每棵树的顶点编号。两棵树的根都是顶点 1。第一棵树的边都都是蓝色,第二棵树的边都是红色。 简明起见,我们称第一棵树是蓝色的,以及第二棵树是红色的。

    当满足下面的两个条件下,我们认为边(x, y) 有害于边(p,q):

    1. 边(x,y)的颜色不同于边(p,q)。
    2. 考虑与边(p, q) 颜色相同的树,编号为 x, y 的两个顶点中有且只有一个同时在 顶点 p 的子树与顶点 q 的子树里。

    现在告诉你,在阶段 1,有恰好一条蓝色的边被删除了, 而在阶段 i,若我们删除了边(u1,v1), (u2,v2),. . . , (uk,vk)。 那么在阶段 i+1 我们要删除的所有满足以下条件的边(x,y):

    1. 边(x,y)未被删除。
    2. 存在一个 i(i ≤ k)使得边(x,y)有害于(ui , vi )。

    当某个阶段没有删除任何边时,则整个过程结束,你需要回答,每个阶段哪些边将被删除。 注意,有害边的定义只依赖于开始删边之前的初始就拥有的两棵有根树。

    发现对于一条边哪些边能选这条边作为下一层一定是在一条路径上(除开LCA),直接线段树优化连边+最短路即可。

    然后边权只有01,跑0-1bfs即可。总复杂度(nlog ^2n)(边的数量)。标算好像是一个log的,不过4s随便跑吧,树剖常数还小。

    bracket

    给定一棵有 n 个节点的无根树,每个节点上是一个字符,要么是(,要么是)。

    定义 S(x, y) 为从 x 开始沿着最短路走到 y,将沿途经过的点上的字符依次连起来得到的字符串。

    合法括号序定义如下:

    1. ()是合法的。
    2. 若 A,合法,则(A)也合法。
    3. 若 A,B 分别合法,则 AB 也合法。

    函数 f(x, y) 等于对 S(x, y) 进行划分,使得每一个部分都是合法括号序,能得 到的最大的段数,比如(())()()的最大段数为 3,(()())(())的最大段数为 2。 特别的,如果 S(x,y)本身并不是合法括号序,则 f(x,y)=0。

    m 次询问,每次输入一个 k,查询有多少点对的 f 值为 k。

    雅礼泄题CSP,建议禁赛一年

    其实差别还是蛮大的。

    由于不是到根的路径,考虑点分治之后拼接两条链,那么一定是(()()(())...(((...) + (...)))...(())()())这样的。因为中间的一定会组成一段,所以可以忽略,只考虑后面的段数。那么对于左边有(y_1)个单独的左括号,后面有(x_1)段,右边有(y_2)个单独的右括号,后面有(x_2)段,这两个要拼起来一定满足(y1=y2),并且最终段数为(x_1+x_2+1),按y归类+FFT即可。注意(x)不会超过这层的总点数。

    写到一半结果没保存,就没写了。

    sum

    请你取出集合{1, 2, …, n}的一个子集,使得其中的元素两两互质,并最大化子集 中的元素之和,你只需要输出这个子集中的元素之和即可。 如 ans(10)=30,此时的子集为{1, 5, 7, 8, 9}。

    结论题。(题解:并不清楚怎么证明…)

    首先可以发现两个结论:

    1. 最优集合里每个数最多只有两个不同的质因子
    2. 若一个数含有两个不同质因子,则一定满足一个< √n,一个> √n

    依据上述结论,我们可以建一个二分图,跑最大费用流即可。 然而直接跑可能会 T,我们先默认每个数都只有一种质因子来初始化答案,

    那么对于一个< √n 的素数 i令 S 向 i 连一条费用为 0 流量为 1 的边,

    对于一个> √n 的素数 i令 i 向 T 连一条费用为 0 流量为 1 的边,

    对于一对(i,j)则只有当f(i, j) − f(i) − f(j) > 0才令 i 向 j 连一条费用为f(i, j) − f(i) − f(j)流量为 1 的边(f 表示用这些质因子能凑出的最大的≤ n的数) 最后跑出来的费用加上初始的答案就是最终答案。

    知道结论后就不难了

    后记

    感觉最近好颓啊...还有十多天就要省选了,这样下去不行的,不如我们......

  • 相关阅读:
    画图工具Graphviz安装配置
    转:完善eclipse+pdt作php开发中的代码提示能力
    转:SVN 出现This client is too old to work with working copy...错误
    Codeforces Round #260 (Div. 2)C. Boredom(dp)
    three.js 源代码凝视(十四)Math/Sphere.js
    android项目中刷新activity界面
    中科燕园GIS外包---地铁GIS项目
    华为HCNA教程(笔记)
    HapiJS开发手冊
    《Java并发编程实战》第十四章 构建自己定义的同步工具 读书笔记
  • 原文地址:https://www.cnblogs.com/lcyfrog/p/13126512.html
Copyright © 2011-2022 走看看