HDU5901 求1e11素数

来源:互联网 发布:mysql over函数 编辑:程序博客网 时间:2024/05/13 23:33

超高速神模板,膜一膜。

时间小于2000ms。

#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>using namespace std;char s1[105], s2[105];int dp[105][105];int ans[105];int main(){    while (~scanf("%s%s", s1, s2)){        int len = strlen(s1);        memset(dp, 0, sizeof(dp));        for (int j = 0; j < len; j++){            for (int i = j; i >= 0; i--){                dp[i][j] = dp[i + 1][j] + 1;                for (int k = i + 1; k <= j; k++){                    if (s2[i] == s2[k])                        dp[i][j] = min(dp[i][j], dp[i + 1][k] + dp[k + 1][j]);                }            }        }        for (int i = 0; i < len; i++)            ans[i] = dp[0][i];        for (int i = 0; i < len; i++){            if (s1[i] == s2[i])                ans[i] = ans[i - 1];            else                for (int j = 0; j < i; j++)                    ans[i] = min(ans[i], ans[j] + dp[j + 1][i]);        }        printf("%d\n", ans[len - 1]);    }    return 0;}



0 0