zoukankan      html  css  js  c++  java
  • hdu4632Palindrome subsequence

    http://acm.hdu.edu.cn/showproblem.php?pid=4632

    TLE了N次 原因居然是取模次数太多了。。! 这数据卡的好紧 还是我写的太搓。。828ms挤过

    s[i]==s[j] dp[i][j] = dp[i][j-1]+dp[i+1][j]+1;

    else  dp[i][j] = dp[i][j-1]+d[[i+1][j]-dp[i+1][j-1];

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 #define mod 10007
     7 char s[1010];
     8 int dp[1010][1010],k;
     9 int find(int i,int j)
    10 {
    11     if(dp[i][j])
    12     return dp[i][j];
    13     if(i==j)
    14     {
    15         dp[i][j] = 1;
    16         return 1;
    17     }
    18     if(j-i==1)
    19     {
    20         if(s[i]==s[j])
    21         {
    22             dp[i][j] = 3;
    23             return 3;
    24         }
    25         else
    26         {
    27             dp[i][j] = 2;
    28             return 2;
    29         }
    30     }
    31     if(s[i]==s[j])
    32     return dp[i][j]=(find(i,j-1)+find(i+1,j)+1)%mod;
    33     else
    34     return dp[i][j]=(find(i,j-1)+find(i+1,j)-find(i+1,j-1)+mod)%mod;
    35     return dp[i][j];
    36 }
    37 int main()
    38 {
    39     int i,j,t,kk=0;
    40     scanf("%d",&t);
    41     while(t--)
    42     {
    43         kk++;
    44         memset(dp,0,sizeof(dp));
    45         scanf("%s",s);
    46         k = strlen(s);
    47         int ans = find(0,k-1);
    48         printf("Case %d: ",kk);
    49         printf("%d
    ",ans);
    50     }
    51     return 0;
    52 }
    View Code
  • 相关阅读:
    [BZOJ3172]单词
    [BZOJ2434]阿狸的打字机
    [BZOJ1195]最短母串
    [codeforces743E]Vladik and cards
    [BZOJ2553]禁忌
    [BZOJ1009]GT考试
    [BZOJ3507]通配符匹配
    [BZOJ4027]兔子与樱花
    test20190308
    Luogu P2742 模板-二维凸包
  • 原文地址:https://www.cnblogs.com/shangyu/p/3257066.html
Copyright © 2011-2022 走看看