hdu6103 Kirinriki(trick+字符串)
题解:
考虑一开始时,左边从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+字符串)的更多相关文章
- 【枚举】【尺取法】hdu6103 Kirinriki
两个等长字符串A,B的距离被定义为 给你一个字符串,问你对于所有长度相等的不相交子串对,其距离不超过m的前提下,最长的长度是多少. 枚举对称轴,两侧先贪心地扩展到最长,超过m之后,再缩短靠近对称轴的端 ...
- 2017 Multi-University Training Contest - Team 6—HDU6098&&HDU6106&&HDU6103
HDU6098 Inversion 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6098 题目意思:题目很短,给出一个数组,下标从1开始,现在输出一个 ...
- C/C++ 中带空格字符串输入的一些小trick
今天在重温 C++ 的时候发现自己存在的一些问题,特此记录下来. 我们可以看一下下面这段代码: #include <iostream> #include <cstdio> #i ...
- [LeetCode] Unique Substrings in Wraparound String 封装字符串中的独特子字符串
Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...
- [LeetCode] Group Shifted Strings 群组偏移字符串
Given a string, we can "shift" each of its letter to its successive letter, for example: & ...
- delphi字符串函数大全
转帖:delphi字符串函数大全 2009-11-17 16:43:55 分类: delphi字符串函数大全 ━━━━━━━━━━━━━━━━━━━━━首部 function StringToGUID ...
- [LeetCode] Reorganize String 重构字符串
Given a string S, check if the letters can be rearranged so that two characters that are adjacent to ...
- 从 RegExp 构造器看 JS 字符串转义设计
多年前我第一次入职腾讯的时候,DC 从杭州给我寄来了一本他刚翻译出炉的<高性能 JavaScript>.那段时间为了帮忙校对,我仔细阅读了书中的每一个段落,结果积累了不少 JavaScri ...
- Delphi中常用字符串处理函数
.copy(str,pos,num) 从str字符串的pos处开始,截取num个字符的串返回. 假设str为,)=,)='def' .concat(str1,str2{,strn}) 把各自变量连接起 ...
随机推荐
- vue组件的基本知识点
1. 组件中 is 的特性: 有些 HTML 元素,诸如 <ul>.<ol>.<table> 和 <select>,对于哪些元素可以出现在其内部是有严格 ...
- hive 学习系列之七 hive 常用数据清洗函数
1,case when 的利用,清洗诸如评分等的内容,用例如下. case when new.comment_grade = '五星商户' then 50 when new.comment_grade ...
- PHP中的mysql_unbuffered_query与mysql_query的区别
对于mysql_query大家都很熟悉,下面先简单介绍下mysql_unbuffered_query mysql_unbuffered_query (PHP 4 >= 4.0.6, PHP 5) ...
- Horner规则求多项式
/* Horner */ /*多项式:A(x)=a[n]X^n+a[n-1]x^n-1+...+a[1]X^1+a[0]X^0*/ #include <stdio.h> long int ...
- urllib.request.urlretrieve()
urllib模块提供的urlretrieve()函数.urlretrieve()方法直接将远程数据下载到本地. urlretrieve(url, filename=None, reporthook=N ...
- python2.7练习小例子(十五)
15):题目:输出指定格式的日期. 程序分析:使用 datetime 模块. 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- ...
- Django中的select_related与prefetch_related
Django是一个基于Python的网站开发框架,一个很重要的特点就是Battery Included,简单来说就是包含了常规开发中所需要的一切东西,包括但不限于完整的ORM模型.中间件.会话处理 ...
- 2019js面试题前端必问点小视频
其实市面上的面试题有很多,但是大部分都是总结的blog居多,有时候说明一个事物也许口述几分钟就可以搞定,但是看帖子可能要分析半天 所以我就出一部分前端js必考的小视频,不管我们什么时候面试基本都绕不过 ...
- 在List中删除符合条件的内容
objDAList.RemoveAll(s => s.daCID == "20170725152407CD");
- Gradle 设置本地meaven
repositories { maven { url uri("F:\\meaven")} }