HDU-6103

  1. Kirinriki

    Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 1204 Accepted Submission(s): 475

    Problem Description
    We define the distance of two strings A and B with same length n is
    disA,B=∑i=0n−1|Ai−Bn−1−i|
    The difference between the two characters is defined as the difference in ASCII.
    You should find the maximum length of two non-overlapping substrings in given string S, and the distance between them are less then or equal to m.

    Input
    The first line of the input gives the number of test cases T; T test cases follow.
    Each case begins with one line with one integers m : the limit distance of substring.
    Then a string S follow.

    Limits
    T≤100
    0≤m≤5000
    Each character in the string is lowercase letter, 2≤|S|≤5000
    ∑|S|≤20000

    Output
    For each test case output one interge denotes the answer : the maximum length of the substring.

    Sample Input
    1
    5
    abcdefedcb

    Sample Output
    5

    Hint
    [0, 4] abcde
    [5, 9] fedcb
    The distance between them is abs(‘a’ - ‘b’) + abs(‘b’ - ‘c’) + abs(‘c’ - ‘d’) + abs(‘d’ - ‘e’) + abs(‘e’ - ‘f’) = 5

    Source
    2017 Multi-University Training Contest - Team 6

    本题题意:
  2. 就是让你找出两个子串A,B满足disA,B=i=0n1|AiBn1i| <=m 的最大区间长度
  3. 由于有一百组样例 每个样例字符串的长度是5000 所以暴力的话肯定超时


我们应该考虑如何才能找到区间最大长度 满足条件的

由于若A,B满足条件那么A,B的子串长度就必然满足条件   由于单调性原则   长到一定限度就不满足

而低于m又可以增加长度   考虑尺取法

如何尺取?

我们可以枚举左串的起点 和 右串的终点 因为这样必然最大子串长度在这个枚举之中

然后最每一次枚举

我们用尺取法尺取区间长度 如果此时dis小于m那么就可以向中间延伸 如果大于m那么就不断地把两边去掉

复杂度O(n^2)


code:

#include<bits/stdc++.h>
using namespace std;
int m;//25000000
string ll;
int solve(int l,int r)
{int st=0,ed = 0,dis=0;int ma=0;while(l+ed<r-ed){int t = abs(ll[l+ed]-ll[r-ed]);if(dis+t<=m){dis+=t;ed++;ma = max(ma,ed-st);}else{dis-=abs(ll[l+st]-ll[r-st]);st++;}}return ma;
}
int main()
{int t;scanf("%d",&t);while(t--){scanf("%d",&m);getchar();getline(cin,ll);int ans = 0;int len = ll.length();for(int i=1;i<len;i++)ans = max(ans,solve(0,i));for(int i=0;i<len-1;i++)ans = max(ans,solve(i,len-1));printf("%d\n", ans);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习笔记6——网络编程

目录基础知识查询IP地址端口通信协议TCP实现聊天TCP实现文件上传UDPUDP实现聊天UDP多线程在线咨询URL下载网络资源基础知识 请自行翻阅《计算机网络》 查询IP地址 import java.net.InetAddress; import java.net.UnknownHostException;public class TestInetAddress {public…

[剑指offer][JAVA]面试题第[15]题[二进制中1的个数][位运算]

【问题描述】[简单] 请实现一个函数&#xff0c;输入一个整数&#xff08;无符号数&#xff09;&#xff0c;输出该数二进制表示中 1 的个数。例如&#xff0c;把 9 表示成二进制是 1001&#xff0c;有 2 位是 1。因此&#xff0c;如果输入 9&#xff0c;则该函数输出 2。示例…

课外阅读(XHTML和XML简介)

课外阅读 一、XHTML简介 HTML从出现发展到今天&#xff0c;仍有些缺陷和不足。HTML的三个主要缺点如下。 &#xff08;1&#xff09;太简单。不能适应现在越来越多的网络设备和应用的需要&#xff0c;比如手机、PDA、信息家电都不能直接显示HTML&#xff1b; &#xff08;2…

Java学习笔记7-1——注解与反射

目录注解注解是啥内置注解元注解TargetRetentionDocumentedInherited自定义注解反射静态语言 和 动态语言Java 反射机制概述Java 反射机制提供的功能Java 反射优点和缺点反射相关的主要 API注解 注解是啥 注解&#xff08;Annotation&#xff09;是从 JDK 1.5 开始引入的新技…

C++11并发之std::thread

C11并发之std::thread知识链接&#xff1a;C11 并发之std::mutexC11 并发之std::atomic本文概要&#xff1a;1、成员类型和成员函数。2、std::thread 构造函数。3、异步。4、多线程传递参数。5、join、detach。6、获取CPU核心个数。7、CPP原子变量与线程安全。8、lambda与多线程…

极角排序的几种方法

转载自http://www.cnblogs.com/aiguona/p/7248311.html&#xff01;&#xff01; 关于极角排序&#xff1a; 在平面内取一个定点O&#xff0c;叫极点&#xff0c;引一条射线Ox&#xff0c;叫做极轴&#xff0c;再选定一个长度单位和角度的正方向&#xff08;通常取逆时针方向&a…

[剑指offer][JAVA]面试题第[16]题[数值的整数次方][位运算][二分法]

【问题描述】[中等] 实现函数double Power(double base, int exponent)&#xff0c;求base的exponent次方。不得使用库函数&#xff0c;同时不需要考虑大数问题。示例 1:输入: 2.00000, 10 输出: 1024.00000 示例 2:输入: 2.00000, -2 输出: 0.25000 解释: 2-2 1/22 1/4 0.…

玩转oracle 11g(50):rman备份脚本

D盘新建一个文件夹backup_file&#xff0c;里面新建一个文件夹logs 一个文件叫auto_full_one_rman.bat 修改这三处 set oracle_sidwiicare rman cmdfile D:/backup_file/level_full_one_rman.rman msglog D:/backup_file/logs/full_one_%date:~0,4%%date:~5,2%%date:~8,2%…

Java学习笔记7-2——注解与反射

目录理解 Class 类并获取 Class 实例Class类获取 Class 类的实例哪些类型可以有Class对象所有类型的Class对象从内存角度分析类加载【重点】类加载的过程什么时候会发生类的初始化类加载器获取运行时类的完整结构有了Class对象能做什么性能对比分析通过反射操作泛型通过反射操作…

python实战学习之matplotlib绘图续

学习完matplotlib绘图可以设置的属性&#xff0c;还需要学习一下除了折线图以外其他类型的图如直方图&#xff0c;条形图&#xff0c;散点图等&#xff0c;matplotlib还支持更多的图&#xff0c;具体细节可以参考官方文档&#xff1a;https://matplotlib.org/gallery/index.htm…

Spring MVC面试题

目录概述什么是Spring MVC&#xff1f;简单介绍下你对Spring MVC的理解&#xff1f;Spring MVC的优点核心组件Spring MVC的主要组件&#xff1f;什么是DispatcherServlet什么是Spring MVC框架的控制器&#xff1f;Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决…

5.应用服务器简介

应用服务器简介 Tomcat

NOI-砝码称重v2 多重背包 生成函数

描述 设有1g、2g、3g、5g、10g、20g的砝码各若干枚&#xff08;其总重<100,000&#xff09;&#xff0c;要求&#xff1a;计算用这些砝码能称出的不同重量的个数&#xff0c;但不包括一个砝码也不用的情况。 输入 一行&#xff0c;包括六个正整数a1,a2,a3,a4,a5,a6&#x…

vue-touchjs

支持vue2.0的面向指令的touch指令&#xff0c;基于touchjs&#xff08;原百度实现的移动端手势库&#xff09; vue-touchjs支持三种stopPropagation的方式&#xff1a; 1 .stop修饰符 2 事件handler里面调用stopPropagation方法 3 事件handler里面return false 支持的事件&…

Java学习笔记8-1——汇编语言入门

目录概述进制运算二进制数据宽度无符号数和有符号数原码、反码、补码位运算位运算实现加减乘除汇编学习环境和必要说明汇编语言通用寄存器内存未完待续概述 为什么要学习汇编语言 进制运算 运算的本质是查表 二进制 略 为什么要学习理解二进制&#xff1f; 寄存器、内存、…

数字图像与数字图像处理

数字图像与数字图像处理 1、基本概念 &#xff08;1&#xff09;图&#xff1a;是物体反射或者透射电磁波的分布。 &#xff08;2&#xff09;像&#xff1a;是人的视觉系统对接收的图信息在大脑 中形成的印象。 &#xff08;3&#xff09;图像(image)&#xff1a;是“图”和…

[剑指offer][JAVA]面试题第[46]题[把数字翻译成字符串][递归][逆推]

【问题描述】[中等] 给定一个数字&#xff0c;我们按照如下规则把它翻译为字符串&#xff1a;0 翻译成 “a” &#xff0c;1 翻译成 “b”&#xff0c;……&#xff0c;11 翻译成 “l”&#xff0c;……&#xff0c;25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函…

LVM分区无损增减

http://www.361way.com/change-lvm-size/1792.html转载于:https://www.cnblogs.com/augusite/p/10431263.html

前端基础1——HTML5

目录初识HTML网页基本标签列表表格视频和音频页面结构内联框架表单语法初识HTML Hyper Text Markup Language&#xff08;超文本标记语言&#xff09; <!--DOCTYPE&#xff1a;告诉浏览器使用什么规范&#xff08;默认是html&#xff09;--> <!DOCTYPE html> <…

数字图像处理系统组成 及研究内容

数字图像处理系统组成 及研究内容 .数字图像处理系统的组成 基本图象处理系统的结构 图像输入设备 扫描仪分辨率与扫描图象的大小 分辨率&#xff1a;单位长度上采样的像素个数DPI(dot/inch) 图像输出设备 喷墨打印机 激光打印机 数字印刷机 .图像处理技术研究的内容 图…