zoukankan      html  css  js  c++  java
  • 一句话题解(2020.12)

    loj2004. 「SDOI2017」硬币游戏

    诡异的神仙题

    部分分也许可以建AC自动机然后快速幂,或者设Ei表示节点i经过的期望总次数,高斯消元求解

    考虑把所有非最终态的点缩起来,设E0表示这些点的答案,类似uoj514把限制解除,变成某人胜利后仍可以按1/2的概率往后选,则一个确定串s的出现概率为1/(2^|s|)

    设一个任意的非合法串x,考虑往x后接ai,则x+ai的期望为E0*1/(2^m)

    假设i的k长度前缀=j的k长度后缀,则j可以先匹配(m-k)位然后抢先获胜

    比如A=001,B=100,则E(x+001)=1/8E(x)=E(A)+E(B+1)+E(B+01)=E(A)+1/2E(B)+1/4E(B),就是B获胜后再往后加固定串

    加上ΣEi=1共n+1个未知数n+1个方程,高斯消元求解,注意i=j也要枚举k因为可能已经匹配了一部分

    精度?2^(-300)无所畏惧

    loj2002. 「SDOI2017」序列计数

    dp+快速幂

    agc033F

    如果强制按顺序(a,b,c)则好做,直接dfs求出以每个点x为端点的度数,一个新加的点能连向dfs链上之前能和x加边的点的话就可以加

    否则考虑转化,每次把边(a,b)(a,c)变成(a,b)(b,c)

    主要是具体实现,维护nx[x,y]表示路径x->y上第一个和y有连边的点,加一条边时如果有nx就往下分,否则把以x为根y子树和以y为根x子树遍历,把连较远点的边删掉重新加,同时更新nx

    用栈维护加边序列,时间复杂度暂时不会证

    agc037F

    首先考虑判断,每次把最小值的段拿出来贪心合成最长段,这样显然是最优的

    然后考虑计数,求(sumsum L_iR_j[i,j ext{合法}]),初始Li=Ri=1,每次把min的段拉出来,先前缀和算内部的接着考虑一个端点在内部(两个都在不影响)

    考虑通过修改L和R使得其和原问题等价,比如有8个1,输入的L=3,则把R[3]+R[4]+R[5]->R'[1],就是新的序列中一个数代表原序列的一段,这样合并后即可解决一个端点在内部的情况

    这样会算重,所以再前缀和把内部的减掉,如果长度<L则直接不管,因为这样等于在其位置断开分成左右两边,显然也和原问题等价,堆+链表维护

    arc110E

    同arc027E,每次从后缀第一次出现的转移,操作就是题目的操作,额外定义两个相同字符操作后为空,空与任何字符操作为其字符

    发现满足交换律结合律,前缀和优化,算的时候不考虑相同的不能操作,同时把空串也算进去,最后特判即可

    arc110F

    对一个数x操作等于把x往后丢x位,对一个位置一直操作会不重直到为0(没有能把丢出去的数替换掉的数)

    先构(n-1)~0,通过移1来轮换即可把0调到末尾,然后从前往后操作,接着从后往前把序列反过来,对1~x顺序操作后x会被移到0后面

  • 相关阅读:
    HDU 5045 5047 5050 5053(上海网络赛E,F,I,L)
    Xcode 5、Xcode 6 免证书真机调试
    Ubuntu打开终端的方法三种
    JAVA异常处理机制
    Java多线程之~~~~synchronized 方法
    iphone开发技术要学习的内容
    表达式求值(数据结构书上栈的应用之中的一个)
    Java学习篇之---json-lib(Maven)
    Nginx 笔记与总结(16)nginx 负载均衡
    SPSS数据记录的选择(Select Cases)
  • 原文地址:https://www.cnblogs.com/gmh77/p/14096469.html
Copyright © 2011-2022 走看看