洛谷 P2400 秘密文件【分治】
...
- 题目:
- 题意:
- 分析:
- 代码:
题目:
传送门
题意:
给出一个较长的字符串,要求我们按照规则进行化简,使得其长度最短
分析:
直接使用分治的思想,对于区间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 秘密文件【分治】相关推荐
- 洛谷-P1885-Moo-普及--分治
一 题目 二 示例及提示 三 题解 思路: 代码: #include <iostream> #include <vector> using namespace std;void ...
- Bzoj4016/洛谷P2993 [FJOI2014] 最短路径树问题(最短路径问题+长链剖分/点分治)
题面 Bzoj 洛谷 题解 首先把最短路径树建出来(用\(Dijkstra\),没试过\(SPFA\)\(\leftarrow\)它死了),然后问题就变成了一个关于深度的问题,可以用长链剖分做,所以我 ...
- 分治——Secret Cow Code S(洛谷 P3612)
题目选自洛谷P3612 梳理题意 给定一个字符串,每次将其最后一个字符移到最前方,形成的新串接到原串后作为下一次操作的字符串 现询问第 N 个位置的字符 简要分析 看一眼数据范围,N<10^18 ...
- 分治——南蛮图腾(洛谷 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 ...
- BZOJ4553/洛谷P4093 [HEOI2016/TJOI2016]序列 动态规划 分治
原文链接http://www.cnblogs.com/zhouzhendong/p/8672434.html 题目传送门 - BZOJ4553 题目传送门 - 洛谷P4093 题解 设$Li$表示第$ ...
- 洛谷 - 试炼场(全部题目备份)
整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...
- 洛谷P4319 变化的道路
题意:给定图,每条边都有一段存在时间.求每段时间的最小生成树. 解:动态MST什么毒瘤...洛谷上还是蓝题... 线段树分治 + lct维护最小生成树. 对时间开线段树,每条边的存在时间在上面会对应到 ...
- 【洛谷习题】南蛮图腾
题目链接:https://www.luogu.org/problemnew/show/P1498 不好实现... 这道题在洛谷的分类是分治,我用的方法就是分治,不过却刷新的我对分治的认识.以前见过的分 ...
- 【暖*墟】#洛谷网课1.30# 树上问题
树上倍增 基环外向树DP DFS序与欧拉序 树链剖分 可以参考wjyyy的https://www.wjyyy.top/421.html wjyyy是这样说的: 树链剖分是一种优化,将树上最常经过的几条 ...
最新文章
- 树莓派默认密码_用树莓派搭建私人简易网盘 2/5 树莓派4B初始设置
- 数据中心规划设计中值得注意的八个问题
- [概统]本科二年级 概率论与数理统计 第五讲 二元随机变量
- 手把手教你安卓入门(一)
- Java实现文件上传-按钮弹出上传页面
- 定了!2020年,6种将死的编程语言!
- Python-复习-习题-13
- 1Python全栈之路系列之MySQL数据库基本操作
- python基础知识-python基础知识,python必背内容,一、python的基
- java实现人民币数字和大写转换
- 黑苹果电池电量补丁_修改DSDT实现电量显示方法【转载】
- 《暗时间》读书笔记与读后感
- FPGA开发中sof和elf文件的合并与格式转换
- 【内网穿透服务器】利用云服务器+FRP实现内网穿透并远程连接服务器
- CEC循环生态社区的商业模式瑞波基因XAG
- 刷新率属于计算机的显示性能指标吗,显示器性能指标(菜鸟必看)
- 数据结构与算法——左程云08
- Bigdata_Elasticsearch
- php carbon 格式化,Laravel Carbon 简明使用
- 算法分析:方阵的主对角线之上称为“上三角”。
热门文章
- 滑坡泥石流的防御措施_泥石流防治措施
- 【干货篇】Processing-Kinect人形物理碰撞效果
- 魅蓝note3刷Android8.0,老机型是最大受益者,魅蓝Note3刷Flyme6更快了
- ios开发笔记之 消费统计表
- js实现table表头冻结(scroll时固定)
- 鸿蒙开发学习入门之概述总结
- 【毕业设计】 python flas疫情爬虫可视化
- 【18.5.31 日常】Android项目——飞机大战详解
- java抢答器实现思路,汇编实现竞赛抢答器 | 术与道的分享
- openstreetmap 到 cad的转换