字符串折叠 bzoj-1090 SCOI-2003

题目大意:我说不明白...链接

注释:自己看

想法:动态规划

状态:dp[i][j]表示从第i个字符到第j个字符折叠后的最短长度。

转移:dp[l][r]=min(r-l+1,dp[l][k]+dp[k+1][r])

当k+1~r可以有l~k得到时还要

dp[l][r]=min(dp[l][r],dp[l][k]+2+calc((r-l+1)/(k-l+1)));//calc用来计算一个十进制数所占位数

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char s[101];
int f[101][101];
bool mark[101][101];
bool jud(int l,int r,int cl,int cr)
{
if((r-l+1)%(cr-cl+1)!=0)return false;
for(int i=l;i<=r;i++)
if(s[i]!=s[(i-l)%(cr-cl+1)+cl])return false;
return true;
}
int get(int x)
{
int t=0;
while(x)
{
x/=10;t++;
}
return t;
}
int dp(int l,int r)
{
if(l==r)return 1;
if(mark[l][r])return f[l][r];
mark[l][r]=1;
int t=r-l+1;
for(int i=l;i<r;i++)
{
t=min(t,dp(l,i)+dp(i+1,r));
if(jud(i+1,r,l,i))
t=min(t,dp(l,i)+2+get((r-i)/(i-l+1)+1));
}
return f[l][r]=t;
}
int main()
{
scanf("%s",s);
printf("%d",dp(0,strlen(s)-1));
return 0;
}

小结:好题,就是那个十进制的太不要脸了.......

最新文章

  1. 构建自己的PHP框架--构建模版引擎(1)
  2. BOOST_AUTO宏
  3. 解密jQuery事件核心 - 自定义设计(三)
  4. 【Java探索道路安全系列:Java可扩展的安全架构】一间:Java可扩展的安全体系结构开始
  5. Linux下部署tomcat
  6. SpringBoot跨域问题解决方案
  7. Java 学习路线图
  8. Idea自带工具解决冲突
  9. python中的split()方法的使用
  10. Oracle内置存储过程之DBMS_OUTPUT
  11. python之抽象类
  12. Elasticsearch 节点角色说明
  13. Dev Label显示不同颜色字体
  14. 实现仿UC浏览器首页下拉动画
  15. 【转】linux下终端命令快捷键
  16. 关于 \t 水平制表符 Horizontal Tab (TAB)
  17. [LintCode]各位相加
  18. redis link 链表结构
  19. [日常]蒟蒻的高一生活 Week 4
  20. 完美解决 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

热门文章

  1. C# WINFORM 局域网PING 工具(技术改变世界-cnblog)
  2. 辨异 —— Java 中 String 的相等性比较
  3. go package包的使用
  4. POJ 1659 Havel-Hakimi定理
  5. C - Football
  6. Redis 字符串结构和常用命令
  7. SQLServer2008 关于数据转换
  8. Android第三方微博、无线传输、动画特效、商城应用等源码
  9. android学习-第二讲(修改项目名称和图标,log,过滤器)
  10. 经典实用SQL Server语句大全总结(一)