zoukankan      html  css  js  c++  java
  • 2019暑假杭二day2测试总结

    T1

    题目大意

    给出一个字符串(S),求出一个子序列,使原序列的每个字符出现且仅出现一次,且子序列的字典序最小。

    sol

    T1我得了90分,离奇(WA)了第一个点,正解比我的算法要简便地多,维护一个栈,对于每个字符,如果已经在栈内就直接跳过;否则,若栈顶字符比它大,且之后出现过,则弹出栈顶,以后在加进来(贪心),当不能弹时将当前字符加入栈内。最后,把栈从下往上输出即可。

    T2

    题目大意

    有一个文本框和一个剪贴板,开始,文本框里有一个内容,剪贴板为空。每次可以进行三种操作:

    1. 将文本框的所有内容复制到剪贴板;

    2. 将剪贴板的内容粘贴到文本框;

    3. 删除文本框的最后一个内容。

    (f(x))为地到(x)个内容,最少需要的操作次数,求

    [sum_{i=1}^nf(x)*1920817^{n-i}(modspace998244353) ]

    (n<=2000000)

    sol

    难点在于求(f(x)),我发现这是一个最短路,于是以文本框和剪贴板为坐标,建出了(n^2)个点,边权都为1,对应一个操作,只得了40分。其实这题可以利用边权,建出(n+50)个点,每个点(x)(x-1)连边权为一的边,向(i*x(i*x<=n+50))连边权为(i)的边,为了优化,可以只在(i)为质数且不超过11的时候连边,当(i)为合数时,可被几次复制粘贴凑出来,且答案更优。当(n)大于11时可以玄学证明一定不优。建好图之后跑(spfa)找单源最短路就行dijkstra居然更慢

    T3

    题目大意

    给定一个(n*m)的矩阵,矩阵有一些位置是障碍(给出坐标),不能通过。现在要从((0,0))走到((n,m)),只能往上走和往右走,求有多少种走发。两种走法不一样当且仅当一种走法的某个障碍在路径左边,另一种走法在路径右边((1<=n,m<=10^9))

    sol

    我开始只写出了无障碍的5分,正解是离散化后(dp),设(f[i][j])为到分第(i)行第(j)列的方案数,没遇到障碍就只能往右走,遇到障碍就只能往上走,方案数叠加就行,可以用线段树加扫描线优化。代码细节比较多,我暂时还没实现。

  • 相关阅读:
    java的(PO,VO,TO,BO,DAO,POJO)解释
    java中的几种对象(PO,VO,DAO,BO,POJO)
    mybatis如何根据mapper接口生成其实现类
    MyBatis接口的简单实现原理
    Fast-settling synchronous-PWM-DAC filter has almost no ripple
    CMOS DACs act as digitally controlled voltage dividers
    Programmable current source requires no power supply
    Add margining capability to a dc/dc converter
    Use an LM317 as 0 to 3V adjustable regulator
    Simple microcontroller-temperature measurement uses only a diode and a capacitor
  • 原文地址:https://www.cnblogs.com/hht2005/p/11402666.html
Copyright © 2011-2022 走看看