链接

题目大意就相当于 跟你一串字符串 让你截成k段 使总体的值最小

想法是递归的 递归太慢 可以转换为递推的

这样就有可以推出状态方程 dp[i][j] = max(dp[i][j],dp[i-1][g]+sum[g+1][j]+sum[1][g]-sum[1][j]); dp[i][j]表示总长度为j第i次截的最小值 后面的sum[i][j]表示的就是从i开始作为第一个到j个的花费 o[i][j]保存路径

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<cmath>
#define INF 1e10
using namespace std;
char s[],ks[];
#define LL long long
LL dp[][],p[],sum[][];
int o[][],pa[];
int main()
{
//freopen("data1.in","r",stdin);
//freopen("text.out","w",stdout);
int t,k,i,j,l,g,kk=;
cin>>t;
while(t--)
{
memset(sum,,sizeof(sum));
kk++;
for(i = ; i < ; i++)
for(j = ; j < ; j++)
dp[i][j] = INF;
cin>>k>>l;
cin>>ks;
cin>>s;
for(i = ; i <= l ; i++)
cin>>p[i];
for(i = ; i <= l ; i++)
{
for(j = i; j <= l ; j++)
sum[i][j] = sum[i][j-]+p[j]*(j-i+);
}
for(i = ;i <= k- ; i++)
for(j = l ; j >= ; j--)
for(g = ; g < j ; g++)
{
if(dp[i][j]>dp[i-][g]+sum[][g]+sum[g+][j]-sum[][j])
{
dp[i][j] = dp[i-][g]+sum[][g]+sum[g+][j]-sum[][j];
o[i][j] = g;
}
}
int x = k-,y = l;
g = ;
while(x)
{
pa[++g] = o[x][y];
x--;y = pa[g];
}
printf("Keypad #%d:\n",kk);
pa[g+] = ;
for(i = g ;i >= ;i--)
{
printf("%c: ",ks[k-i-]);
for(j =pa[i+]+; j <= pa[i] ; j++)
{
printf("%c",s[j-]);
}
puts("");
}
printf("%c: ",ks[k-]);
for(j = pa[]+; j <= l ; j++)
printf("%c",s[j-]);
puts("");
puts("");
}
return ;
} /**************************************
Problem id : SDUT OJ 1650
User name : shang
Result : Accepted
Take Memory : 688K
Take Time : 200MS
Submit Time : 2014-02-15 11:17:10
**************************************/

sdut1650I-Keyboard(dp)的更多相关文章

  1. 【dp】New Keyboard

    http://codeforces.com/gym/101397 B dp[i][j][k]: i为前一个行动的状态,0-switch.1-type,j为当前状态layout的编号,k 是已键入的字符 ...

  2. 【CF1238E】Keyboard Purchase(状压DP,贡献)

    题意:有m种小写字符,给定一个长为n的序列,定义编辑距离为序列中相邻两个字母位置差的绝对值之和,其中字母位置是一个1到m的排列 安排一种方案,求编辑距离最小 n<=1e5,m<=20 思路 ...

  3. CF1238E.Keyboard Purchase 题解 状压/子集划分DP

    作者:zifeiy 标签:状压DP,子集划分DP 题目链接:https://codeforces.com/contest/1238/problem/E 题目大意: 给你一个长度为 \(n(n \le ...

  4. Codeforces1238E. Keyboard Purchase(状压dp + 计算贡献)

    题目链接:传送门 思路: 题目中的m为20,而不是26,显然在疯狂暗示要用状压来做. 考虑状压字母集合.如果想要保存字母集合中的各字母的顺序,那就和经典的n!的状态的状压没什么区别了,时间复杂度为O( ...

  5. USB Keyboard Recorder

    catalogue . 引言 . Device Class Definition for Human Interface Devices (HID) . USB HID Report Descript ...

  6. HDU 3689 Infinite monkey theorem [KMP DP]

    Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...

  7. [LeetCode] 4 Keys Keyboard 四键的键盘

    Imagine you have a special keyboard with the following keys: Key 1: (A): Print one 'A' on screen. Ke ...

  8. [LeetCode] 2 Keys Keyboard 两键的键盘

    Initially on a notepad only one character 'A' is present. You can perform two operations on this not ...

  9. 关于android屏幕适配的问题(drawable-xxxxxxxx,dp,sp,px等等),偶尔看到了android源代码,关于dpi的区分的值

    上一篇博客说了一下.9.png图片http://blog.csdn.net/qq_23195583/article/details/46737419 当然,点九的是指的能够进行拉伸的.那么假设图片不能 ...

  10. hdu 3689 杭州 10 现场 J - Infinite monkey theorem 概率dp kmp 难度:1

    J - Infinite monkey theorem Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d &am ...

随机推荐

  1. Android网络编程之使用HTTP訪问网络资源

    使用HTTP訪问网络资源 前面介绍了 URLConnection己经能够很方便地与指定网站交换信息,URLConnection另一个子类:HttpURLConnection,HttpURLConnec ...

  2. 树莓派的PWM脉宽调制功能介绍

    近期想用树莓派控制航模的电调,于是研究了下PWM.貌似控制电调比較麻烦,由于电调须要发送几个特定的信号启动,然后才干进入控制模式.今天先弄明确PWM,慢慢折腾.以下的程序亲測可用,我用的树莓派mode ...

  3. AJAX请求提交数据

    1,AJAX准备知识:JSON JSON指的是JavaScript对象表示方法(JavaScript Object Notation) JSON是轻量级的文本数据交换格式 JSON独立于语言 JSON ...

  4. CXF 中自定义SOAPHeader

    Interceptor是CXF架构中一个很有特色的模式.你可以在不对核心模块进行修改的情况下,动态添加很多功能.这对于CXF这个以处理消息为中心的服务框架来说是非常有用的,CXF通过在Intercep ...

  5. SQL Server 多库操作 库名.dbo.表名 出错的问题!

    SQL Server 多库操作 库名.dbo.表名 出错的问题! 数据库名不要用数字开头. 例如:343934.dbo.user 这就会出错.md a343934.dbo.user 就没问题!! 记住 ...

  6. JAVASCRIPT 和 AJax 实现局部验证

    JSP页面 <td width="10%" class="main_matter_td">真实姓名</td> <td width= ...

  7. java 防止表单重复提交(serlvet)

    java 防止表单重复提交 ---------FormServlet.java-------------- protected void doGet(HttpServletRequest reques ...

  8. sphinx源码分析总结

    http://www.cnblogs.com/bonelee/p/6667955.html shinx索引部分源码分析——过程:连接到CSphSource对应的sql数据源,通过fetch row取其 ...

  9. c语言和oc对比

    1)源文件对比 思考&实现1: 1)在C语言中,我们遇到不同后缀的文件有哪些? .c .o .out .h 2.基本语法对比 1)数据类型对比学习 2)变量的定义对比 3)流程控制语句对比 1 ...

  10. 二、Log4j基本使用方法

    转自:https://blog.csdn.net/luohai859/article/details/52250807 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息 ...