ZUFE2481 神奇的字符串
来源:互联网 发布:怀孕多久把脉能知男女 编辑:程序博客网 时间:2024/05/29 14:07
2481: 神奇的字符串
时间限制: 3 Sec 内存限制: 256 MB提交: 8 解决: 3
[提交][状态][讨论版]
题目描述
输入
输出
样例输入
abcb1000 1100350 700200 8002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 2000jelly1000 1100350 700200 8002000 20002000 4322000 20002000 20002000 20002000 200020 20002000 2000350 35200 8002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 20002000 200015 20002000 2000
样例输出
900105
提示
来源
周甄陶
————————————————————————————————————————
思路:分析可知一定是先删去前面和后面然后一端添加字符,所以先n^2处理出前后删减的花费,然后用dp数字达标维护,用dp[i][j][0]表示区间[i,j]向前扩展成回文的最小花费,用dp[i][j][1]表示区间[i,j]向后扩展成回文的最小花费
#include <iostream>#include<queue>#include<cstdio>#include<algorithm>#include<cmath>#include<set>#include<cstring>using namespace std;#define LL long long int dp[1005][1005][2];int a[30],b[30];char s[1005];int L[1005],R[1005];bool dd[1005][1005]; int main(){ while(~scanf("%s",s)) { for(int i=0; i<26; i++) scanf("%d%d",&a[i],&b[i]); int n=strlen(s); memset(dd,0,sizeof dd); for(int i=1; i<=n; i++) { dd[i][i]=true; } for(int i=1; i<n; i++) { if(s[i-1]==s[i]) dd[i][i+1]=true; } for(int j=2; j<n; j++) for(int i=1; i<=n; i++) { if(i+j>n) break; dd[i][i+j]=s[i-1]==s[i+j-1]&dd[i+1][i+j-1]; } for(int i=0; i<n; i++) dp[i][i][0]=0,dp[i][i][1]=0; for(int j=1; j<n; j++) { for(int i=1; i<=n; i++) { if(i+j>n) break; if(dd[i][i+j]) { dp[i][i+j][0]= dp[i][i+j][1]=0; } else { dp[i][i+j][0]=dp[i][i+j-1][0]+b[s[i+j-1]-'a']; dp[i][i+j][1]=dp[i+1][i+j][1]+b[s[i-1]-'a']; } } } L[0]=0; L[1]=a[s[0]-'a']; for(int i=2; i<=n; i++) { L[i]=L[i-1]+a[s[i-1]-'a']; } R[n+1]=0; R[n]=a[s[n-1]-'a']; for(int i=n-1; i>0; i--) { R[i]=R[i+1]+a[s[i-1]-'a']; } int mn=0x3f3f3f3f; for(int i=1; i<=n; i++) { for(int j=n; j>=i; j--) { mn=min(mn,L[i-1]+R[j+1]+min(dp[i][j][0],dp[i][j][1])); } } printf("%d\n",mn); } return 0;}
0 0
- ZUFE2481 神奇的字符串
- 神奇的字符串
- 字符串常量的神奇使用
- 【HNOI2016模拟4.1】神奇的字符串
- 神奇的字符串处理函数——sscanf()
- 字符串大小写逆置(神奇的ascll码)
- python中的原始字符串,神奇的反斜线
- 神奇的的调色板
- Wonderful String Translation Function in Python / Python神奇的字符串变换函数
- Duff's Device 神奇的编程 将字符串拷贝性能提升8倍
- 字符串反转,神奇的算法-读《编程珠玑(第二版)》
- C/C++语言中#的神奇作用:把宏参数字符串化/贴合宏参数
- 编程之美初赛第二场 神奇的数列 + 字符串压缩
- 神奇的C语言二十二:善用格式串format进行字符串处理
- C/C++语言中#的神奇作用:把宏参数字符串化/贴合宏参数
- JZOJ4417 【HNOI2016模拟4.1】神奇的字符串 线段树维护信息
- C/C++语言中#的神奇作用:把宏参数字符串化/贴合宏参数
- jzoj4417 【HNOI2016模拟4.1】神奇的字符串 (映射,权值线段树)
- Java开发时如何使用JSON库-七种JSON库的使用及测试
- 南阳理工acm 746 整数划分(四)(动态规划)
- 正则 字符串中指定增加字符串
- maven编译spark 源码
- 2.1 scrapy框架的学习
- ZUFE2481 神奇的字符串
- echarts图表横轴个性化设置
- 【年度盛宴】2012年度最佳 Web 前端开发工具和框架——《上篇》
- pickerview实现底部弹出选择时间
- JavaScript的this对象,什么意思
- CodeForces 768FBarrels and boxes
- 分布式架构学习之:022--Dubbo负载均衡
- vue组件里面引入highchars
- 解决java.lang.SecurityException: Package android does not belong to 10065