...

  • 题目:
  • 题意:
  • 分析:
  • 代码:

题目:

传送门


题意:

给出一个较长的字符串,要求我们按照规则进行化简,使得其长度最短


分析:

直接使用分治的思想,对于区间l−rl-rl−r,我们枚举一个分界点,求出如何分才能使该区间的长度最短
而对于化简,我们可以考虑r−l+1r-l+1r−l+1的约数,因为想要化简就必须能整除该区间的长度,然后模拟尝试是否可行即可


代码:

// luogu-judger-enable-o2
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define LL long long
#define LZX IMU
using namespace std;
inline LL read() {LL d=0,f=1;char s=getchar();while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();}return d*f;
}
string ss[105][105],s;
int f[105][105];
int dec(int l,int r)
{int w=r-l+1;for(int i=1;i<=w/2;i++){if(w%i) continue;int tf=0;for(int j=l;j+i<=r;j++) if(s[j]!=s[j+i]) {tf=1;break;}if(!tf) return i;}return -1;
}
int dfs(int l,int r)
{if(l==0&&r==1) {l=l;int c=1+1;}if(f[l][r]) return f[l][r];if(l==r) {ss[l][r]=s[l];f[l][r]=1;return 1;}int len=99999999,k;for(int i=l;i<r;i++) {int ll=dfs(l,i)+dfs(i+1,r);if(len>ll) len=ll,k=i;}ss[l][r]=ss[l][k]+ss[k+1][r];f[l][r]=len;int d=dec(l,r);if(d==-1) return f[l][r];string sy;int md=(r-l+1)/d;while(md) sy.push_back(md%10+'0'),md/=10;reverse(sy.begin(),sy.end());sy=sy+"("+ss[l][l+d-1]+")";if(sy.size()<f[l][r]) f[l][r]=sy.size(),ss[l][r]=sy;return f[l][r];
}
int main()
{cin>>s;dfs(0,s.size()-1);cout<<ss[0][s.size()-1];return 0;
}

洛谷 P2400 秘密文件【分治】相关推荐

  1. 洛谷-P1885-Moo-普及--分治

    一 题目 二 示例及提示 三 题解 思路: 代码: #include <iostream> #include <vector> using namespace std;void ...

  2. Bzoj4016/洛谷P2993 [FJOI2014] 最短路径树问题(最短路径问题+长链剖分/点分治)

    题面 Bzoj 洛谷 题解 首先把最短路径树建出来(用\(Dijkstra\),没试过\(SPFA\)\(\leftarrow\)它死了),然后问题就变成了一个关于深度的问题,可以用长链剖分做,所以我 ...

  3. 分治——Secret Cow Code S(洛谷 P3612)

    题目选自洛谷P3612 梳理题意 给定一个字符串,每次将其最后一个字符移到最前方,形成的新串接到原串后作为下一次操作的字符串 现询问第 N 个位置的字符 简要分析 看一眼数据范围,N<10^18 ...

  4. 分治——南蛮图腾(洛谷 P1498)

    题目选自洛谷P1498 把杨辉三角对2取模输出看下结果,这是12行内的结果: 11 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 1 ...

  5. BZOJ4553/洛谷P4093 [HEOI2016/TJOI2016]序列 动态规划 分治

    原文链接http://www.cnblogs.com/zhouzhendong/p/8672434.html 题目传送门 - BZOJ4553 题目传送门 - 洛谷P4093 题解 设$Li$表示第$ ...

  6. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  7. 洛谷P4319 变化的道路

    题意:给定图,每条边都有一段存在时间.求每段时间的最小生成树. 解:动态MST什么毒瘤...洛谷上还是蓝题... 线段树分治 + lct维护最小生成树. 对时间开线段树,每条边的存在时间在上面会对应到 ...

  8. 【洛谷习题】南蛮图腾

    题目链接:https://www.luogu.org/problemnew/show/P1498 不好实现... 这道题在洛谷的分类是分治,我用的方法就是分治,不过却刷新的我对分治的认识.以前见过的分 ...

  9. 【暖*墟】#洛谷网课1.30# 树上问题

    树上倍增 基环外向树DP DFS序与欧拉序 树链剖分 可以参考wjyyy的https://www.wjyyy.top/421.html wjyyy是这样说的: 树链剖分是一种优化,将树上最常经过的几条 ...

最新文章

  1. 树莓派默认密码_用树莓派搭建私人简易网盘 2/5 树莓派4B初始设置
  2. 数据中心规划设计中值得注意的八个问题
  3. [概统]本科二年级 概率论与数理统计 第五讲 二元随机变量
  4. 手把手教你安卓入门(一)
  5. Java实现文件上传-按钮弹出上传页面
  6. 定了!2020年,6种将死的编程语言!
  7. Python-复习-习题-13
  8. 1Python全栈之路系列之MySQL数据库基本操作
  9. python基础知识-python基础知识,python必背内容,一、python的基
  10. java实现人民币数字和大写转换
  11. 黑苹果电池电量补丁_修改DSDT实现电量显示方法【转载】
  12. 《暗时间》读书笔记与读后感
  13. FPGA开发中sof和elf文件的合并与格式转换
  14. 【内网穿透服务器】利用云服务器+FRP实现内网穿透并远程连接服务器
  15. CEC循环生态社区的商业模式瑞波基因XAG
  16. 刷新率属于计算机的显示性能指标吗,显示器性能指标(菜鸟必看)
  17. 数据结构与算法——左程云08
  18. Bigdata_Elasticsearch
  19. php carbon 格式化,Laravel Carbon 简明使用
  20. 算法分析:方阵的主对角线之上称为“上三角”。

热门文章

  1. 滑坡泥石流的防御措施_泥石流防治措施
  2. 【干货篇】Processing-Kinect人形物理碰撞效果
  3. 魅蓝note3刷Android8.0,老机型是最大受益者,魅蓝Note3刷Flyme6更快了
  4. ios开发笔记之 消费统计表
  5. js实现table表头冻结(scroll时固定)
  6. 鸿蒙开发学习入门之概述总结
  7. 【毕业设计】 python flas疫情爬虫可视化
  8. 【18.5.31 日常】Android项目——飞机大战详解
  9. java抢答器实现思路,汇编实现竞赛抢答器 | 术与道的分享
  10. openstreetmap 到 cad的转换