题解:

考虑一开始时,左边从1开始枚举,右边从n开始枚举

我们可以得到一个最大的值k。

但是如果这样依次枚举,复杂度肯定是n^3,是不行的

考虑如何利用上一次的结果,如果我们把1和n同时去掉

就可以利用上一步的结果了(因为剩下的匹配仍然没有改变)

这样依次扫一遍,每次O(n)的时间可以得到O(n)对匹配对应的最大值

所以均摊复杂度就是O(n^2)

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char S[];
bool dp[][];
int T, m; int myabs(int x) { return x < ? -x : x; } int main()
{
cin>>T;
while(T--){
cin>>m;
cin>>S;
int ANS = , n = strlen(S);
memset(dp, , sizeof(dp));
for(int i = ; i < n; i++)
for(int j = n-; j >= ; j--){
if(i >= j) break;
if(dp[i][j]) continue;
int sx = i, sy = j, k = , ans = ;
while(sx < sy){
if(sx+k >= sy-k){
while(sx < sy){
dp[sx][sy] = ;
ANS = max(k, ANS);
k--;
sx++;
sy--;
}
break;
}
if(ans + myabs(S[sx+k]-S[sy-k]) <= m) ans += myabs(S[sx+k] - S[sy-k]), k++;
else{
while(ans + myabs(S[sx+k]-S[sy-k]) > m && k > ){
dp[sx][sy] = ;
ANS = max(k, ANS);
ans -= myabs(S[sx] - S[sy]);
k--;
sx++;
sy--;
}
if(ans + myabs(S[sx+k] - S[sy-k]) <= m){
ans += myabs(S[sx+k] - S[sy-k]);
k++;
} else { sx++; sy--; }
}
}
}
cout<<ANS<<endl;
}
return ;
}

hdu6103 Kirinriki(trick+字符串)的更多相关文章

  1. 【枚举】【尺取法】hdu6103 Kirinriki

    两个等长字符串A,B的距离被定义为 给你一个字符串,问你对于所有长度相等的不相交子串对,其距离不超过m的前提下,最长的长度是多少. 枚举对称轴,两侧先贪心地扩展到最长,超过m之后,再缩短靠近对称轴的端 ...

  2. 2017 Multi-University Training Contest - Team 6—HDU6098&&HDU6106&&HDU6103

    HDU6098 Inversion 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6098 题目意思:题目很短,给出一个数组,下标从1开始,现在输出一个 ...

  3. C/C++ 中带空格字符串输入的一些小trick

    今天在重温 C++ 的时候发现自己存在的一些问题,特此记录下来. 我们可以看一下下面这段代码: #include <iostream> #include <cstdio> #i ...

  4. [LeetCode] Unique Substrings in Wraparound String 封装字符串中的独特子字符串

    Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...

  5. [LeetCode] Group Shifted Strings 群组偏移字符串

    Given a string, we can "shift" each of its letter to its successive letter, for example: & ...

  6. delphi字符串函数大全

    转帖:delphi字符串函数大全 2009-11-17 16:43:55 分类: delphi字符串函数大全 ━━━━━━━━━━━━━━━━━━━━━首部 function StringToGUID ...

  7. [LeetCode] Reorganize String 重构字符串

    Given a string S, check if the letters can be rearranged so that two characters that are adjacent to ...

  8. 从 RegExp 构造器看 JS 字符串转义设计

    多年前我第一次入职腾讯的时候,DC 从杭州给我寄来了一本他刚翻译出炉的<高性能 JavaScript>.那段时间为了帮忙校对,我仔细阅读了书中的每一个段落,结果积累了不少 JavaScri ...

  9. Delphi中常用字符串处理函数

    .copy(str,pos,num) 从str字符串的pos处开始,截取num个字符的串返回. 假设str为,)=,)='def' .concat(str1,str2{,strn}) 把各自变量连接起 ...

随机推荐

  1. jquery点击li 获取当前父节点所在类的索引

    jquery点击li 获取当前父节点所在类的索引 $('.jbcz').find('.content li').click(function(){ //alert($('.jbcz').find('. ...

  2. JDK6 新特性

    JDK6新特性目录导航: Desktop类和SystemTray类 JAXB2实现对象与XML之间的映射 StAX Compiler API 轻量级 Http Server API 插入式注解处理AP ...

  3. emlog博客插件分享openSug

    emlog博客插件百度搜索下拉提示框openSug.js发布上线啦: 下载:https://www.opensug.org/faq/.../opensug.emlog_v1.0.0.zip[~4KB]

  4. 做 JAVA 开发,怎能不用 IDEA!

    用了 IDEA,感觉不错.决定弃用 Eclipse 入门教程: www.cnblogs.com/yangyquin/p/5285272.html

  5. AB PLC 编程之状态机

    AB的程序设计和西门子有点PLC不大一样,在AB中没有RS指令,所以主要用move指令来作步进.今天我们就用Move指令写个AB的程序,和西门子比,有哪些不同. 控制任务 很简单的一个状态机.初始步为 ...

  6. 学习python第一天 pycharm设置

    print(“hello,world”) pycharm设置 1. 选择python 解析器,目的是确定pycharm 的运行环境. 方法: File-->Settings-->Proje ...

  7. Electronic Devices【电子设备】

    Electronic Devices We may think we're a culture that gets rid of our worn technology at the first si ...

  8. HyperLedger Fabric 1.4 交易流程(6.3)

    区块链最主要的特性之一是去中心化,没有了中心机构的集中处理,为了达成数据的一致性,就需要网络中全民参与管理,并以某种方法达成共识,所以区块链的交易流程也就是共识的过程.       在Fabric中, ...

  9. ABAP CDS ON HANA-(10)項目結合して一つ項目として表示

    Numeric Functions ABS(arg)  CEIL(arg) DIV(arg1, arg2) DIVISION(arg1, arg2, dec) FLOOR(arg) MOD(arg1, ...

  10. TreeMap与LinkedHashMap的区别

    TreeMap是根据元素的内部比较器进行排序的,它可以根据key值的大小排序: LinkedHashMap是保持存放顺序的. TreeMap采用红黑树算法,遍历效率高: LinkedHashMap采用 ...