http://poj.org/problem?id=2176

区间dp,暴力处理相同的一段

#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int N=105;
char s[N];
vector<int> ys[N];
int n,f[N][N],pre[N][N];
int pos(int x)
{if(x<=9) return 1;if(x<=99) return 2;return 3;
}
int solve(int l,int r)
{int len=r-l+1;int mx=0x3f3f3f,ret;for(int i=ys[len].size()-1;i>=0;--i){bool flag=1;for(int j=2;j<=ys[len][i];++j)for(int k=l+(j-1)*(len/ys[len][i]);k<=l+j*(len/ys[len][i])-1;++k)if(s[k]!=s[k-(len/ys[len][i])]) {flag=0;break;}int tmp=f[l][l+len/ys[len][i]-1]+pos(ys[len][i])+2;if(flag && tmp<mx) mx=tmp,ret=ys[len][i];}return ret;
}
void print(int l,int r)
{int len=r-l+1;if(pre[l][r]==0) {for(int i=l;i<=r;++i) putchar(s[i]);return;}if(pre[l][r]>0) {print(l,pre[l][r]);print(pre[l][r]+1,r);}if(pre[l][r]<0) {printf("%d(",-pre[l][r]);print(l,l-len/pre[l][r]-1);putchar(')');}
}
int main()
{
while(scanf("%s",s+1)!=-1)
{    n=strlen(s+1);for(int i=1;i<=n;++i)for(int j=i;j<=n;++j)f[i][j]=j-i+1;for(int i=1;i<=n;++i) ys[i].clear();for(int i=1;i<=n;++i)for(int j=1;i*j<=n;++j)ys[i*j].push_back(i);for(int i=2;i<=n;++i)for(int j=1;i+j-1<=n;++j){int l=j,r=i+j-1;for(int k=l;k<r;++k)if(f[l][k]+f[k+1][r]<f[l][r]){f[l][r]=f[l][k]+f[k+1][r];pre[l][r]=k;}int tmp=solve(l,r);if(f[l][l+i/tmp-1]+2+pos(tmp)<f[l][r])f[l][r]=f[l][l+i/tmp-1]+2+pos(tmp),pre[l][r]=-tmp;}print(1,n);puts("");
}return 0;
}

转载于:https://www.cnblogs.com/w19567/p/11291427.html

poj2176 Folding相关推荐

  1. Codeforces Gym 101473D Folding Machine (暴力搜索)

    题目连接: http://codeforces.com/gym/101473/attachments 原先以为按照这个复杂度还要剪一下支,没想到暴力dfs完全可以通过. 代码: #include &l ...

  2. 嵊州D5T2 折纸 folding

    折纸 folding [问题描述] 在非常紧张的 NOIP 考试中,有人喜欢啃指甲,有人喜欢转铅笔,有人喜欢撕 纸条,--而小 x 喜欢迷折纸. 现有一个 W * H 的矩形纸张,监考老师想知道,小 ...

  3. Traversing Mapping Filtering Folding Reducing

    2019独角兽企业重金招聘Python工程师标准>>> Traversing Mapping Filtering Folding Reducing Traversal 使用 for ...

  4. Gym - 101142F Folding(折半)

    点击打开题目链接 题目大意:Alex喜欢折纸,将一张 W * H 的纸折成 w * h 的纸片,问最少需要折几次. 由样例也可以看出,最小次数的情况就是对折除以二的情况.只要一直让纸片的长度和宽度分别 ...

  5. Android Folding View(折叠视图、控件)

    很早之前看过有人求助以下这个效果是如何实现的, 也就是侧滑菜单的一个折叠效果,其实关于这个效果的实现,谷歌的一名工程师已经完成,并开放源码到devbytes上面了.如下面所示: 地址是:https:/ ...

  6. 编程语言中的常量折叠(const folding)

    深度学习框架theano的文档中说,theano支持const folding.在google上搜索const folding,提示更多的是一种编译器的编译优化技术.常量折叠(const foldin ...

  7. 【Eclipse】--Eclipse折叠代码插件folding

    一.下载插件资源 Eclipse代码折叠插件 关闭Eclipse,把下载到的插件com.cb.eclipse.folding_1.0.6.jar放到Eclipse的plugins下面,重启Eclips ...

  8. 从Folding@home项目看GPU通用计算发展

    GPU通用计算发展历程简析 前言:Folding@home(蛋白质折叠过程研究)项目GPU客户端的推广,使得普通玩家也有机会体会GPU通用运计算能力,让显卡也能成为支持公益事业的重要力量.分布式计算的 ...

  9. 如何在DAppNode中配置Folding At Home节点

    一. 什么是Folding At Home Folding At Home是一个研究蛋白质折叠.误折.聚合及由此引起的相关疾病的分布式计算工程.由斯坦福大学化学系的潘德小组(Pande Group)主 ...

最新文章

  1. python解释器运行代码-python解释器怎么运行
  2. 晓庄学院计算机科学分数,2016南京晓庄学院艺术类专业录取分数线
  3. android源码settings中显示所有正在运行进程流程分析
  4. HDU-5119 Happy Matt Friends
  5. swift菜鸟入门视频教程-09-类和结构体
  6. “约见”面试官系列之常见面试题第二十四篇之vue-router使用(建议收藏)
  7. 【软件质量】代码评审“亮红灯”的情况
  8. [deviceone开发]-doSpace应用源码开源
  9. 富士康已看到芯片短缺开始缓解迹象 预计下半年会有改善
  10. 隐藏水滴屏的软件_隐藏水滴屏的软件
  11. C# GIF图片的分解以及合成
  12. win10ie服务器未响应,win10ie浏览器老是无响应是什么原因?解决win10ie浏览器老是无响应的方法介绍...
  13. chrome-功能指令
  14. python使用正则去除字符串里多余的空白字符
  15. 为什么这项技术一经Google推出问世就迅速成为主流?
  16. 启用window10专业版系统自带的远程桌面
  17. AutoHotKey进阶 --- 单击网页中的按钮(Acc库)
  18. manjaro安装与配置(vscode,微信,美化,输入法)
  19. 【GNN报告】Mila实验室/蒙特利尔大学朱兆成:基于图神经网络的知识图谱推理
  20. winrar远程代码执行漏洞(cve-2018-20250)

热门文章

  1. 创建构建方法android,如何快速创建并发布一个 Android 库
  2. MATLAB生成正弦波
  3. UWP-HttpClient
  4. Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)...
  5. 236 Lowest Common Ancestor of a Binary Tree
  6. Java操作MySQL的中文处理方法
  7. java 当前时间格式_JAVA中获取当前系统时间及格式转换
  8. Hadoop系列-HDFS HA高可用集群
  9. (28)XIlinx FPGA 原语简介(FPGA不积跬步101)
  10. (12)FPGA时钟设计原则