sdut1650I-Keyboard(dp)
题目大意就相当于 跟你一串字符串 让你截成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)的更多相关文章
- 【dp】New Keyboard
http://codeforces.com/gym/101397 B dp[i][j][k]: i为前一个行动的状态,0-switch.1-type,j为当前状态layout的编号,k 是已键入的字符 ...
- 【CF1238E】Keyboard Purchase(状压DP,贡献)
题意:有m种小写字符,给定一个长为n的序列,定义编辑距离为序列中相邻两个字母位置差的绝对值之和,其中字母位置是一个1到m的排列 安排一种方案,求编辑距离最小 n<=1e5,m<=20 思路 ...
- CF1238E.Keyboard Purchase 题解 状压/子集划分DP
作者:zifeiy 标签:状压DP,子集划分DP 题目链接:https://codeforces.com/contest/1238/problem/E 题目大意: 给你一个长度为 \(n(n \le ...
- Codeforces1238E. Keyboard Purchase(状压dp + 计算贡献)
题目链接:传送门 思路: 题目中的m为20,而不是26,显然在疯狂暗示要用状压来做. 考虑状压字母集合.如果想要保存字母集合中的各字母的顺序,那就和经典的n!的状态的状压没什么区别了,时间复杂度为O( ...
- USB Keyboard Recorder
catalogue . 引言 . Device Class Definition for Human Interface Devices (HID) . USB HID Report Descript ...
- HDU 3689 Infinite monkey theorem [KMP DP]
Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- [LeetCode] 4 Keys Keyboard 四键的键盘
Imagine you have a special keyboard with the following keys: Key 1: (A): Print one 'A' on screen. Ke ...
- [LeetCode] 2 Keys Keyboard 两键的键盘
Initially on a notepad only one character 'A' is present. You can perform two operations on this not ...
- 关于android屏幕适配的问题(drawable-xxxxxxxx,dp,sp,px等等),偶尔看到了android源代码,关于dpi的区分的值
上一篇博客说了一下.9.png图片http://blog.csdn.net/qq_23195583/article/details/46737419 当然,点九的是指的能够进行拉伸的.那么假设图片不能 ...
- 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 ...
随机推荐
- linux远程管理工具:putty
使用QTP测试文件上传和目录做成是否成功,必须先将文件和目录下载到本地,再作比较.现在下载工具众多,其中putty是最出色的一个,支持linux服务器,这点很重要“免费的”.下面就让我们来看一下吧! ...
- MFC程序打开文件对话框出错的问题解决
前几天从网上下了个图像分析的mfc小程序,是VC6的 用VC6在本地编译生成都没问题.执行起来弹出一个未处理的错误,程序崩溃退出. 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究. ...
- Visual Studio Code Unit Testing
1.NUnit project.json { "version": "1.0.0-*", "testRunner": "nunit ...
- PHP引用是什么?
引用是什么 在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像 C 的指针,替代的是,引用是符号表别名.注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.最 ...
- Java对象的创建过程
//TODO https://www.cnblogs.com/chenyangyao/p/5296807.html
- Linux学习笔记:系统启动引导过程
Linux系统启动引导过程 近期发现自己在仅仅是掌握上有几个比較硬的伤: 一.知识体系碎片,比方Linux,这学点那学点,结果没有成体系,串不起来: 二.记忆时间短暂,非常多的内容学了就忘,最后的结果 ...
- create python project steps
Setting Up Your First Project You don't have to manually create the structure above, many tools will ...
- [原创] [C#] 转换Excel数字列号为字母列号
转换Excel数字列号为字母列号 例如: 0 -> A 26 -> AA private static string GetColumnChar(int col) { ; ; ) ) + ...
- bzoj1833: [ZJOI2010]count 数字计数&&USACO37 Cow Queueing 数数的梦(数位DP)
难受啊,怎么又遇到我不会的题了(捂脸) 如题,这是一道数位DP,随便找了个博客居然就是我们大YZ的……果然nb,然后就是改改模版++注释就好的了,直接看注释吧,就是用1~B - 1~A-1而已,枚举全 ...
- ELF和a.out文件格式的比较
本文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出).COFF(Common Ob ...