poj2176 Folding
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相关推荐
- Codeforces Gym 101473D Folding Machine (暴力搜索)
题目连接: http://codeforces.com/gym/101473/attachments 原先以为按照这个复杂度还要剪一下支,没想到暴力dfs完全可以通过. 代码: #include &l ...
- 嵊州D5T2 折纸 folding
折纸 folding [问题描述] 在非常紧张的 NOIP 考试中,有人喜欢啃指甲,有人喜欢转铅笔,有人喜欢撕 纸条,--而小 x 喜欢迷折纸. 现有一个 W * H 的矩形纸张,监考老师想知道,小 ...
- Traversing Mapping Filtering Folding Reducing
2019独角兽企业重金招聘Python工程师标准>>> Traversing Mapping Filtering Folding Reducing Traversal 使用 for ...
- Gym - 101142F Folding(折半)
点击打开题目链接 题目大意:Alex喜欢折纸,将一张 W * H 的纸折成 w * h 的纸片,问最少需要折几次. 由样例也可以看出,最小次数的情况就是对折除以二的情况.只要一直让纸片的长度和宽度分别 ...
- Android Folding View(折叠视图、控件)
很早之前看过有人求助以下这个效果是如何实现的, 也就是侧滑菜单的一个折叠效果,其实关于这个效果的实现,谷歌的一名工程师已经完成,并开放源码到devbytes上面了.如下面所示: 地址是:https:/ ...
- 编程语言中的常量折叠(const folding)
深度学习框架theano的文档中说,theano支持const folding.在google上搜索const folding,提示更多的是一种编译器的编译优化技术.常量折叠(const foldin ...
- 【Eclipse】--Eclipse折叠代码插件folding
一.下载插件资源 Eclipse代码折叠插件 关闭Eclipse,把下载到的插件com.cb.eclipse.folding_1.0.6.jar放到Eclipse的plugins下面,重启Eclips ...
- 从Folding@home项目看GPU通用计算发展
GPU通用计算发展历程简析 前言:Folding@home(蛋白质折叠过程研究)项目GPU客户端的推广,使得普通玩家也有机会体会GPU通用运计算能力,让显卡也能成为支持公益事业的重要力量.分布式计算的 ...
- 如何在DAppNode中配置Folding At Home节点
一. 什么是Folding At Home Folding At Home是一个研究蛋白质折叠.误折.聚合及由此引起的相关疾病的分布式计算工程.由斯坦福大学化学系的潘德小组(Pande Group)主 ...
最新文章
- python解释器运行代码-python解释器怎么运行
- 晓庄学院计算机科学分数,2016南京晓庄学院艺术类专业录取分数线
- android源码settings中显示所有正在运行进程流程分析
- HDU-5119 Happy Matt Friends
- swift菜鸟入门视频教程-09-类和结构体
- “约见”面试官系列之常见面试题第二十四篇之vue-router使用(建议收藏)
- 【软件质量】代码评审“亮红灯”的情况
- [deviceone开发]-doSpace应用源码开源
- 富士康已看到芯片短缺开始缓解迹象 预计下半年会有改善
- 隐藏水滴屏的软件_隐藏水滴屏的软件
- C# GIF图片的分解以及合成
- win10ie服务器未响应,win10ie浏览器老是无响应是什么原因?解决win10ie浏览器老是无响应的方法介绍...
- chrome-功能指令
- python使用正则去除字符串里多余的空白字符
- 为什么这项技术一经Google推出问世就迅速成为主流?
- 启用window10专业版系统自带的远程桌面
- AutoHotKey进阶 --- 单击网页中的按钮(Acc库)
- manjaro安装与配置(vscode,微信,美化,输入法)
- 【GNN报告】Mila实验室/蒙特利尔大学朱兆成:基于图神经网络的知识图谱推理
- winrar远程代码执行漏洞(cve-2018-20250)
热门文章
- 创建构建方法android,如何快速创建并发布一个 Android 库
- MATLAB生成正弦波
- UWP-HttpClient
- Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)...
- 236 Lowest Common Ancestor of a Binary Tree
- Java操作MySQL的中文处理方法
- java 当前时间格式_JAVA中获取当前系统时间及格式转换
- Hadoop系列-HDFS HA高可用集群
- (28)XIlinx FPGA 原语简介(FPGA不积跬步101)
- (12)FPGA时钟设计原则