2018.10.20 bzoj1068: [SCOI2007]压缩(区间dp)
传送门
这题转移很妙啊。
f[l][r][1/0]f[l][r][1/0]f[l][r][1/0]表示对于区间[l,r][l,r][l,r]有/无重复的机会时压缩的最小值。
那么可以从三种情况转移过来。
- 当前区间允许重复时,分成两段分别压缩且两段都可以重复,那么为了不使前后发生冲突中间断开时需要加一个MMM。
- 只压缩前面一段,后面一段不动。
- 如果当前区间能被分成两端一样的前面一段不压缩,后面一段重复前面的。
代码:
#include<bits/stdc++.h>
using namespace std;
int len,f[55][55][2];
char s[55];
inline bool check(int l,int r){
int mid=(r-l+1)/2;
if((r-l+1)&1)return 0;
for(int i=l;i<=(l+r)/2;++i)if(s[i]!=s[i+mid])return 0;
return 1;
}
inline int dfs(int l,int r,bool op){
if(~f[l][r][op])return f[l][r][op];
if(l==r)return f[l][r][op]=1;
f[l][r][op]=r-l+1;
if(op)for(int i=l;i<r;++i)f[l][r][op]=min(f[l][r][op],dfs(l,i,1)+1+dfs(i+1,r,1));
for(int i=l;i<r;++i)f[l][r][op]=min(f[l][r][op],dfs(l,i,op)+r-i);
if(check(l,r))f[l][r][op]=min(f[l][r][op],dfs(l,(l+r)/2,0)+1);
return f[l][r][op];
}
int main(){
memset(f,-1,sizeof(f)),scanf("%s",s+1),len=strlen(s+1);
cout<<dfs(1,len,1);
return 0;
}
2018.10.20 bzoj1068: [SCOI2007]压缩(区间dp)的更多相关文章
- 【BZOJ-1068】压缩 区间DP
1068: [SCOI2007]压缩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1001 Solved: 615[Submit][Status][ ...
- 洛谷P2470 [SCOI2007]压缩(区间dp)
题意 题目链接 Sol 神仙题Orz 考虑区间dp,如果我们只设\(f[l][r]\)表示\(s_{lr}\)被压缩的最小长度,而不去关心内部\(M\)分布的话,可能在转移的时候转移出非法状态 因此考 ...
- bzoj 1068 [SCOI2007]压缩 区间dp
[SCOI2007]压缩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1644 Solved: 1042[Submit][Status][Discu ...
- B1068 [SCOI2007]压缩 区间dp
这个题我状态想对了,但是转移错了...dp的代码难度都不大,但是思考含量太高了..不会啊,我太菜了. 其实这个题就是一个正常的区间dp,中间多了一个特判的转移就行了. 题干: Description ...
- [SCOI2007]压缩 区间dp
明显是个区间dp,但是我区间dp就是个渣... f[i][j]表示区间i到j最短的字符长度:假设前面加了个M,所以初始化f[i][i]=2;当然最开始是不算M的,所以f[1][1]=1;然后就可以区间 ...
- 2018.10.23 hdu2476String painter(区间dp)
传送门 一道挺妙的区间dp. 我们先用区间dp求出第一个串为空串时的最小代价. 然后再加入原本的字符更新答案就行了. 代码: #include<bits/stdc++.h> using n ...
- 2018.10.23 hdu4745Two Rabbits(区间dp)
传送门 区间dp经典题目. 首先断环为链. 然后题目相当于就是在找最大的回文子序列. 注意两个位置重合的时候相当于范围是n,不重合时范围是n-1. 代码: #include<bits/stdc+ ...
- BZOJ1068 [SCOI2007]压缩 区间动态规划 字符串
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1068 题目概括 (其实是复制的) 给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中 ...
- OSC Source Code Innovation Salon(2018.10.20)
时间:2018.10.20地点:北京 朝阳 浦项中心B座2层
随机推荐
- spring boot 自定义异常
1.创建一个异常: public class LdapQueryException extends Exception { private Integer code; private String m ...
- leetcode349
public class Solution { public int[] Intersection(int[] nums1, int[] nums2) { var list1 = nums1.ToLi ...
- LaiFeng-code
https://github.com/LaiFeng-Android/SopCastComponent https://github.com/LaiFengiOS/
- ABAP-关于COMMIT WORK 和COMMIT WORK AND WAIT
转载:https://blog.csdn.net/champaignwolf/article/details/6925019 首先说明一点:更新是异步的,更新是由SAP中UPD1和UPD2两个进程执行 ...
- Spring MVC 接受的请求参数
目录 1. 概述 2. 详解 2.1 处理查询参数 2.2 处理路径参数接受输入 2.3 处理表单 3. 补充内容 3.1 Ajax/JSON 输入 3.2 multipart参数 3.3 接收 he ...
- SVD 实现
机器学习相关——SVD分解: http://www.cnblogs.com/luchen927/archive/2012/01/19/2321934.html SVD python实现: import ...
- 数据文件导入mysql时出现中文乱码问题
http://www.ynpxrz.com/n773257c2024.aspx 从shell进入mysql, mysql> show variables like ‘%char%'; +---- ...
- Python基础语法题库
引言: 语法练习包括Python基础语法.数据类型.字符编码和简单文件操作等内容. 正文(参考答案附录在题目下方): 1.Python 里用来告知解释器跳过当前循环中的剩余语句,然后继续进行下一轮循环 ...
- 【Java】JVM(六)虚拟机字节码执行引擎
一.概述 执行引擎是虚拟机中最核心的部分之一, 虚拟机自己实现引擎,自己定义指令集和执行引擎的结构体系. 二.栈帧 栈帧包含(1)局部变量表.(2)操作数栈.(3)动态链接.(4)方法返回地址.(5) ...
- Servlet Filter 过滤器 对指定页面不拦截
package niit.dxs.controller; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; i ...