zoukankan      html  css  js  c++  java
  • FJWC2020

    挑一些没做出来的讲讲

    D1T2

    题意:(n)(m)条边的图,给边定向,使得存在点使得(1)(2)能走到该点
    (nle 15,mle {nchoose 2})

    求不存在点使得(1)(2)同时走到该点
    枚举集合(A,B),表示(1)能到达的集合,(2)能到达的集合

    • (Acap B=emptyset)
    • 不存在边((u,v))(uin A,vin B)
    • ((u,v)in E,u otin A,v otin B),该边怎么定向都无所谓
    • ((u,v)in E,uin A,v otin B),该边方向确定

    然后单独处理(A,B)内的,令(f_{1/2,S})(1)到达点集为(S)的方案数
    (O(3^n))

    D1T3

    题意:给定长度为(n)的字符串,找到最大的(m),使得存在(1le l_1le r_1le l_2le r_2le cdotsle l_mle r_m)(s_{l_{i+1},r_{i+1}})(s_{l_i,r_i})的严格子串

    结论1:存在最优解,使得子串长度每次减小(1)

    (f_{i})为以(i)开头的子串作为第一个,最大的(m)

    结论2(f_{i}le f_{i+1}+1)

    证明:
    相当于证明(f_{i+1}le f_{i}-1),这很显然

    那么每次判断初始化(f_i)(f_{i+1}+1),然后一步步判断
    考虑如何判断(f_i)大于等于(len)

    • (jin[i+len,n])
    • (max(lcp(suf_i,suf_j),lcp(suf_{i+1},suf_j))ge len-1)
    • (f_jge len-1)

    条件2的(j)分为可以二分出来,然后就是(jin[i+len,n],rank_jin[l,r]),是否存在(f_jge len-1),可以用线段树维护

    D2T1

    题意:有一个长度为 (n) 的数列,原先每一个位置都是 (0)。每一次,我们可以给两个相邻的位置分别 加一 和 加二 。问最少需要操作多少次,才可以使得对于 (1≤i≤n),第 (i) 个位置上的数大于等于 (h_i)

    看不懂题解...

    D3T2

    这题很有意思啊

    题意:给定(n) 个点 (m) 条边的无向图,求有多少个非空点集的导出子图连通。
    ((x,y)in E) 满足 (|x−y|≤12)
    答案对 (2) 取模,(1≤n≤50)

    考虑对连通块黑白染色,那么对于一个子图,染色的方案数为(2^{连通块个数}),该为对(4)取模,若最后答案为(2)则为(1),否则为(0)
    状压点的颜色。(O(3^{12}n))

    D4T3

    题意:给定一棵 (n) 个点的有边权的树,(q) 次修改某一条边的边权,要回答在初始局面和每次修改后,有多少条无向路径 ((u,v)) 满足路径上所有边的 gcd 恰为 (1)
    (nle 10^{5},qle 100,w,xle 10^6)

    先考虑(q=0)
    (f(i))为路径为(i)倍数的个数,(ans=sum mu(i)f(i))
    由于(wle 10^6)(w)最多质因子个数为(7),每条边的有效约数为(2^kle 128),用并查集做(O(2^k nalpha(n)))

    考虑(qge 1),对于((u,v,w)in E),考虑撤销((u,v,w))的效果,再添加((u,v,w'))的效果
    处理(u)(v)的子树,令(g(i))(i)(u/v)边权的gcd,(O(nlogw))。再合并,(O(sqrt{w}cdot sqrt{w}))

    (O(2^k nalpha(n)+qcdot (nlogw+sigma(w)_0cdot sigma(w)_0)))

    D5T1

    给定一个长度为 (n) 的序列 (a_1,a_2,⋯,a_n)(a_i)为在 ([l_i,r_i]) 中独立均匀随机生成的实数,求这个序列逆序对个数的期望值

    D5T3

    给定一个 (1)(n) 的排列,你需要把它升序排序。你要进行两个阶段的操作。第一阶段中,每次任选两个相邻元素并进行交换。第二阶段中,每次修改一个位置上的元素。最小化两个阶段操作的总次数,并给出一种总操作次数最小的合法方案。

    在第一阶段中,若进行过(i,i+1)交换,则(i)(i+1)之间连边
    对于极大连通块([l,r]),令其逆序对个数为(x)
    (xge r-l+1),则可以通过第二阶段直接搞,故在最优中不会出现

    因为对于一个连通块([l,r]),其至少有(r-l)条边,故(xge r-l)
    所以所有的极大联通块,其逆序对个数为(r-l)

    故对于区间([l,r]),其可能成为极大连通块的条件为

    • ([l,r])(a_l,cdots,a_r)的值域
    • (a_l,cdots ,a_r)的逆序对个数为(r-l)

    ([l_1,r][l_2,r](l_1<l_2))均满足条件,则选择([l_2,r])不会劣于([l_1,r])。故我们会选择以(r)为右端点的最大合法(l)

    根据对极大连通块的定义,最大的合法(l)只需要考虑最大满足条件(1)
    考虑第一个条件的充要条件

    • (max(a_l,cdots,a_r)=r)
    • (sumlimits_{i=l}^r (a_i-i)=0):前缀和相等

    考虑如何快速求([l,r])的逆序对,由于(a_l,cdots,a_r)的值域是([l,r])(a_1,cdots,a_{l-1})中的任意数,要么全部大于([l,r]),要么全部小于
    (sum_i)(a_1,cdots,a_i)的逆序对个数,(f(l,r)=sum_r-sum_{l-1}-(r-l+1)sumlimits_{i=1}^{l-1}[a_i>l])

    然后随便搞个dp

  • 相关阅读:
    word20170108逛景点 Sightseeing有用的词和句子
    c# List 分页问题
    VUE界面,this.form.xxx=1赋值后,界面效果没有变化
    SQL Server使用索引视图来实现“物化视图”
    .NET CORE 实现异步处理
    当请求接口提示网络错误Error:Network Error的时候
    SheetJS js-xlsx :js实现导出Excel模板
    增加索引分析
    聚集索引与非聚集索引的总结
    Dynamics CRM-无法识别安全令牌的颁发者,若要接受来自此颁发者的安全令牌,请将 IssuerNameRegistry 配置为返回此颁发者的有效名称
  • 原文地址:https://www.cnblogs.com/Grice/p/13322531.html
Copyright © 2011-2022 走看看