zoukankan      html  css  js  c++  java
  • 集训笔记0302

     

    作业题 lgP2758以及pro版本

    设A和B是两个字符串。我们要用最少的字 符操作次数,将字符串A转换为字符串B。 这里所说的字符操作共有三种:
    • 1、删除一个字符;
    • 2、插入一个字符;
    • 3、将一个字符改为另一个字符;
    • !皆为小写字母!


    表面看起来似乎是字符串的题,我也确实按字符串的思路想了很久,后来发现,这题居然是个dp!
    不详细写了,据说看代码就行

     void dp()
    {
        for(int i=1;i<=lena;i++)
            f[i][0]=i;
        for(int i=1;i<=lenb;i++)
            f[0][i]=i;
        for(int i=1;i<=lena;i++)
            for(int j=1;j<=lenb;j++)
            {
                if(a[i-1]==b[j-1])
                {
                    f[i][j]=f[i-1][j-1];
                    continue;
                }
                f[i][j]=min(min(f[i-1][j],f[i][j-1]),f[i-1][j-1])+1;
            }
    }
    

    PRO版:
    https://nanti.jisuanke.com/t/43511
    • 给两个由a~z和0~9组成的字符串,你可以 对任意一个字符串做如下操作:
    • 在一个地方插入一个字母
    • 删除一个字母
    • 删除一个数字k,然后在此处插入k个字母
    • 问最少几步使得两个字符串相同且没有数 字存在?
    • 第一个字符串长10000,第二个长1000, 数字最多100个


    这道题与前面唯一的区别就是多了一些数字需要处理,我们发现,最后要求输出的结果里都是没有数字的,全部需要转化为字母,而每一个数字都可以转化为相应个数的任意字母,于是把其换位通配符再dp即可;


     

    EXCRT 扩展中国剩余定理

    洛谷有模板,讲的也很详细,照着推就好了;
    

    lgP4777模板:

        给定n组非负整数,,求解关于x的方程组的最小非负整数解。
    
     

     

     


    • 让我们来改变一下格式:
    • x+y1a1=b1①
    • x-y2a2=b2②
    • x-y3a3=b3③
    • …
    • ①②相减得:
    • y1a1+y2a2=b1-b2
    • 用exgcd求解,不能解就无解。
    • 然后我们可以解出一个最小正整数y1,带 入①得到x其中一个解:
    • x0=b1-y1a1
    • 它的全解为x=x0+k*lcm(a1,a2)(由y1的全解可导)
    • 即x=x0(mod lcm(a1,a2))
    则:
    • x+y3*lcm(a1,a2)=x0④
    • ③④再联立,重复以上过程即可。
    显然成立orz;


     

    逆元

    https://www.cnblogs.com/kongbursi-2292702937/p/10582258.html
    写的挺好,看看就差不多了orz(bu
    待补;


     

    错排问题

    • lgP1595 信封问题
    • 某人写了n封信和n个信封,如果所有的信 都装错了信封。求所有信都装错信封共有 多少种不同情况
    我们令f[n]表示n封信错排的答案为多少,思 考一下f[n]的递推式是什么?
    近似与whh巨佬的思路:

      首先我们认为前(n-1)个信封都为错排的,则方案数为f(n-1),而第n封信装在第n个信封里,于是随意与(n-1)个信封里的信互换均成立,而对于(n-1)的每一种错排方案,我们都可以把第n号信与(n-1)中的每一个互换,则方案数为(n-1)*f(n-1);
    
    
    
    
      而我们继续想,这是前(n-1)封信全部错排的情况,还有没有别的情况,可以使n封信错排呢?显然有,那就是,第i封信装在第i个信封里,第n封信装在第n个信封里,二者互换,也满足要求;那么不难发现,此时需要前(n-2)封信错排,且i共有(n-1)种取值可能,从1☞(n-1);而每一种可能种都有f(n-2)种错排,则方案数为(n-1)*f(n-2);还有其他可能么?没了; 
    

    于是递推式子为f(n)=(n-1)*f(n-1)+(n-1)*f(n-2); 正确性显然;

  • 相关阅读:
    careercup-树与图 4.6
    careercup-树与图 4.5
    careercup-树与图 4.4
    careercup-树与图 4.3
    oracle 建表时显示ORA-00904无效的标识符
    Unable to read TLD "META-INF/c.tld" from JAR file
    MIME TYPE
    JavaWeb response对象常用操作
    移动硬盘文件删除后,空间没有变大
    Redis 数据结构解析和命令指南
  • 原文地址:https://www.cnblogs.com/ziyuan122625/p/12400778.html
Copyright © 2011-2022 走看看