剪气球串

http://exercise.acmcoder.com/online/online_judge_ques?ques_id=3862&konwledgeId=42

#include <bits/stdc++.h>
using namespace std;

#define maxn 100009
const int MOD = 1e9 + 7;
int main()
{
    int n;
    int a[maxn];
    int dp[maxn];
    int cnt[11];

    while (~scanf("%d",&n))
    {
        memset(a,0,sizeof(a));
        memset(dp,0,sizeof(dp));
        for (int i = 1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        dp[0] = 1;
        for (int i = 1;i<=n;i++)
        {
            memset(cnt,0,sizeof(cnt));
            for (int j = 0;j<i;j++)
            {
                cnt[a[i-j]]++;
                if (cnt[a[i-j]] > 1)
                {
                    break;
                }
                dp[i] = (dp[i] + dp[i-j-1])%MOD;
            }
        }
        printf("%d\n",dp[n]);
    }
    return 0;
}
时间: 2024-10-11 22:19:39

剪气球串的相关文章

(KMP 1.3)hdu 2087 剪花布条(求文本串中有几个模式串)

题目: 剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10380    Accepted Submission(s): 6684 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输

HDU 2087 剪花布条(模式串在主串中出现的次数主串中子串不可重叠)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 题意:求模式串在主串中出现的次数,与模式串匹配的子串之间不可重叠. 思路:用kmp算法解决,在匹配更新结果后,重新定位模式串时,不可用j = next[j],应该直接让j定位到模式串开头. code: 1 #include <cstdio> 2 #include <cstring> 3 4 const int MAXN = 1005; 5 6 char aa[MAXN]; 7 c

HDU2087 剪花布条

Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样.花纹条和小饰条不会超过

KMP算法之剪花布条

http://acm.hdu.edu.cn/showproblem.php?pid=2087 剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12000    Accepted Submission(s): 7683 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对

[HDOJ2087]剪花布条

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11544    Accepted Submission(s): 7421 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一

VC拷贝字符串到剪切板

char a[15] ="中华人民共和国"; DWORD dwLength = 14; // 要复制的字串长度 HANDLE hGlobalMemory = GlobalAlloc(GHND, dwLength + 1); // 分配全局内存并获取句柄 LPBYTE lpGlobalMemory = (LPBYTE)GlobalLock(hGlobalMemory); // 锁定全局内存 //for (int i = 0; i<dwLength; i++) //{ // 将&qu

杭电---2087剪花布条

Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样.花纹条和小饰条不会超过1000个字符长.如果遇见#字符,则不再进行工作. Output 输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出

[KMP]HDU2087 剪花布条

题目链接 中文题目,没翻译. 思考 和上一道题目差不多,不过这道题目是字符串不能覆盖.那我们就可以这样想这些已经匹配的字符串,既然不能提供给后面帮助.那么我们可以直接把他们看做是剪去了,用之后剩下的这段母串和模式串再进行匹配. 所以当匹配成功时 ans++ 并将模式串指针清0 #include <iostream> #include <cstdio> #include <cstring> using namespace std; char t[1000005],p[10

剪花布条

剪花布条 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9295 Accepted Submission(s): 6047 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据,分