• 140725模拟赛总结



    A:hdu4847    字符串匹配
    第一想法是KMP,写了好长时间结果还TLE了-_-||,实际上用个简单的枚举判断就能解决。因为待验证的字符串"doge"很小。
    写A题的时候还被输入卡了半天。
    Tips1:输入至文件结尾(eof)的常用方法:
          while (cin>>a)        //最常用的
          while (cin.getline(s,30))    //按行读入前30个字符。空格也读入
          getline(cin,s)        //和getline相似,
    Reference:http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html
    Tips2:自己的KMP还是两年前用Pascal写的......
    找了个KMP模版,以后用就行:
    Reference:http://www.cnblogs.com/183zyz/archive/2011/03/24/1994380.html

     1 # include<stdio.h>
     2 # include<string.h>
     3  char P[10005],T[1000005];
     4  int next[10005],n,m;
     5 void Pnex()
     6 {    
     7     int k,q;    
     8     next[1]=0;   
     9     k=0;   
    10     for(q=2;q<=n;q++)  
    11     {       
    12         while(k>0 && P[k+1]!=P[q])   
    13         {          
    14             k=next[k];    
    15         }      
    16         if(P[k+1]==P[q]) k++; 
    17         next[q]=k;   
    18     }
    19 }
    20 int main()
    21 {    
    22     int i,t,q,num;  
    23     scanf("%d",&t);    
    24     getchar();     
    25     while(t--)     
    26     {           
    27         gets(P);    
    28         gets(T);      
    29         n=strlen(P);     
    30         m=strlen(T);    
    31         for(i=n-1;i>=0;i--)  
    32             P[i+1]=P[i];    
    33         for(i=m-1;i>=0;i--)     
    34             T[i+1]=T[i];          
    35         Pnex();    
    36         q=0;     
    37         num=0;    
    38         for(i=1;i<=m;i++) 
    39         {            
    40             while(q>0 && P[q+1]!=T[i])  
    41             {              
    42                 q=next[q];     
    43             }            
    44             if(P[q+1]==T[i]) q++; 
    45             if(q==n)      
    46             {            
    47                 num++;       
    48                 q=next[q];    
    49             }      
    50         }          
    51         printf("%d
    ",num);   
    52     }   
    53     return 0;
    54 }
    View Code


    Tips3:补充一个更快的字符串匹配算法:Boyer-Moore算法
    Reference:http://www.ruanyifeng.com/blog/2013/05/boyer-moore_string_search_algorithm.html

    Tips4:补充李大神发的一个神图:


    B:hdu4848    搜索+强剪枝
    题目大意:图上每个点都有各自的deadline,需要在deadline之前遍历完所有的点。求最少时间
    Reference:http://www.tuicool.com/articles/vERnuqZ

    C:hdu4849    AC    裸的最短路
    D:hdu4850
    先留着点,本周一定要写!


  • 相关阅读:
    Yii2 框架目录
    实现超链接在本页面的跳转
    操作系统
    shell笔记
    软RAID5制作流程
    nginx学习之简化安装篇(一)
    Javascript中实现继承的方式
    JavaScript中的函数和C#中的匿名函数(委托、lambda表达式)
    JavaScript中变量、执行环境、作用域与C#中的异同
    Javascript与C#对变量的处理方式
  • 原文地址:https://www.cnblogs.com/pdev/p/3868886.html
Copyright © 2020-2023  润新知