zoukankan      html  css  js  c++  java
  • 洛谷P2470||bzoj1068 [SCOI2007]压缩

    bzoj1068

    洛谷P2470

    区间dp入门题?只要注意到每个M“管辖”的区间互不相交即可

    错误记录:有点小坑,比如aaaacaaaac最优解为aRRcR(意会坑在哪里),踩了一次

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<vector>
     5 #include<cassert>
     6 using namespace std;
     7 #define fi first
     8 #define se second
     9 #define mp make_pair
    10 #define pb push_back
    11 typedef long long ll;
    12 typedef unsigned long long ull;
    13 typedef pair<int,int> pii;
    14 int an[101][101];
    15 bool v1[101][101];
    16 int tmp[101];
    17 char s[1010];
    18 int n;
    19 int solve(int l,int r)
    20 {
    21     assert(l<=r);
    22     if(l==r)    return 1;
    23     if(v1[l][r])    return an[l][r];
    24     int ans=0x3f3f3f3f;
    25     for(int i=l;i<r;++i)
    26         ans=min(ans,solve(l,i)+solve(i+1,r));
    27     tmp[l-1]=0;
    28     for(int p=l;p<=r;++p)
    29     {
    30         tmp[p]=tmp[p-1]+1;
    31         if((p-l+1)%2==0&&!strncmp(s+l,s+l+(p-l+1)/2,(p-l+1)/2))
    32             tmp[p]=min(tmp[p],tmp[l+(p-l+1)/2-1]+1);
    33     }
    34     ans=min(ans,tmp[r]+(l!=1));
    35     //printf("1t%d %d %d
    ",l,r,ans);
    36     v1[l][r]=1;
    37     return an[l][r]=ans;
    38 }
    39 int main()
    40 {
    41     scanf("%s",s+1);n=strlen(s+1);
    42     printf("%d
    ",solve(1,n));
    43     return 0;
    44 }
    View Code
  • 相关阅读:
    多项式A除以B (25分)
    numpy随笔
    numpy中文件读取操作np.loadtxt(),np.savetxt()的使用
    Plug It In
    C. Uncle Bogdan and Country Happiness
    获得系统版本号
    C# Winform无边框窗口拖动
    numericUpDown隐藏上下箭头
    C# FTP下载图片转为Base64
    C# 获取版本号
  • 原文地址:https://www.cnblogs.com/hehe54321/p/9906209.html
Copyright © 2011-2022 走看看