题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328

解题报告:中文题题意就不说了。还好数据不大,只有1000,枚举回文串的中心位置,然后向两边扩展,当扩展到 k 大于要求的K的时候停止扩展,不断更新最长的长度跟开始位置最小。我先做了个预处理,先求出了a(S),然后用一个数组保存了a(S)中的字符在原来的字符串中对应的位置在哪,这样便于字符串比较,而且又可以在O(1)时间得到在原来串中的长度跟开始的位置。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = ;
char tt[maxn],str[maxn];
int loc[maxn],K; char chto(char c)
{
return c >= 'A' && c <= 'Z'? (c+'a'-'A'):c;
}
void StrCmp(char* str,int i,int j,int& left,int& right)
{
int k = ,len = strlen(str);
while(i >= && j < len)
{
if(str[i] != str[j]) k++;
if(k > K)
break;
i--,j++;
}
left = i+;
right = j - ;
}
int kuoleft(int l)
{
l--;
while(l >= && !((tt[l] >= 'A' && tt[l] <= 'Z') || (tt[l] >= 'a' && tt[l] <= 'z')))
l--;
return l+;
}
int kuoright(int r)
{
r++;
int len = strlen(tt);
while(r < len && !((tt[r] >= 'A' && tt[r] <= 'Z') || (tt[r] >= 'a' && tt[r] <= 'z')))
r++;
return r - ;
}
int main()
{
int kase = ;
while(scanf("%d",&K)!=EOF)
{
getchar();
gets(tt);
int f = strlen(tt),len = ;
for(int i = ;i < f;++i)
if((tt[i] >= 'A' && tt[i] <= 'Z') || (tt[i] >= 'a' && tt[i] <= 'z'))
{
str[len] = chto(tt[i]);
loc[len] = i;
len++; //记录这个字符在原来的子串中对应的位置
}
str[len] = NULL;
int s = ,L = ;
for(int l = ;l < len;++l)
{
int left = ,right = ;
StrCmp(str,l-,l+,left,right);
int ll = loc[left],rr = loc[right];
int lt = rr - ll + ;
if(lt > L) L = lt,s = ll;
else if(lt == L && ll < s) s = ll;
if(l < len -)
{
left = right = ;
StrCmp(str,l,l+,left,right);
ll = loc[left],rr = loc[right];
lt = rr - ll + ;
if(lt > L) L = lt,s = ll;
else if(lt == L && ll < s) s = ll;
}
}
printf("Case %d: %d %d\n",kase++,L,s+);
}
return ;
}

CSU 1328 近似回文词(2013湖南省程序设计竞赛A题)的更多相关文章

  1. CSU 1328: 近似回文词

    省赛的A题...现场都没什么人做...其实就一暴力水题......坑死了... 1328: 近似回文词 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1 ...

  2. CSU 1328 近似回文词【最长回文字符串(三种方法)】

    输入一行文本,输出最长近似回文词连续子串.所谓近似回文词是指满足以下条件的字符串: 1. S以字母开头,字母结尾 2. a(S)和b(S)最多有2k个位置不同,其中a(S)是S删除所有非字母字符并且把 ...

  3. CSU 1337 搞笑版费马大定理(2013湖南省程序设计竞赛J题)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1337 解题报告:虽然x和y的范围都是10^8,但是如果a 是大于1000的话,那么a^3 ...

  4. csuoj 1328: 近似回文词

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328 1328: 近似回文词 Time Limit: 1 Sec  Memory Limit: 1 ...

  5. csu-1328 近似回文词 和 最长回文字符串

    原博文地址:http://blog.csdn.net/u012773338/article/details/39857997 最长回文子串 描述:输入一个字符串,求出其中最长的回文子串.子串的含义是: ...

  6. 字符串 - 近似回文词 --- csu 1328

    近似回文词 Problem's Link:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328 analyse: 直接暴力枚举每一个终点,然后枚举 ...

  7. CSU 1503 点到圆弧的距离(2014湖南省程序设计竞赛A题)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 解题报告:分两种情况就可以了,第一种是那个点跟圆心的连线在那段扇形的圆弧范围内,这 ...

  8. 2012年湖南省程序设计竞赛E题 最短的名字

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1115 解题报告:输入n个字符串,让你求出可以用来区别这些字符串的最少的前缀总共有多少个字 ...

  9. 401 Palindromes(回文词)

      Palindromes  A regular palindrome is a string of numbers or letters that is the same forward as ba ...

随机推荐

  1. 淘淘商城基于maven和svn的理解

    首先了解下maven和svn是什么: Maven是一个项目的管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目的生命周期(Project Life ...

  2. JQuery 和JavaScript的区别

    Google提供的jquery包: http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js jQuery官方的jquery包: ...

  3. JavaWeb学习笔记——jsp基础语法

    1.JSP注释 显式注释 <!-- 注释内容 --> 隐式注释,隐式注释在客户端无法看见 // /* */ <% 注释内容 %> 2.Scriptlet(小脚本程序) 所有嵌入 ...

  4. Java——private default protected public访问控制权限

    访问控制权限 protected范例

  5. Maven打包可执行jar

    参考文献:http://blog.csdn.net/xiao__gui/article/details/47341385 方法:使用assembly插件,生成的jar包名为xxx-jar-with-d ...

  6. thinkphp查询

    public function index(){ $result = M('content')->select() $this->assig('result',$result); $thi ...

  7. SmartUpLoad自动上传包

    一枚默默的开发学习者 用以下代码生成文件名即可 1 package info.haowei.util; 2 3 import java.text.SimpleDateFormat; 4 import ...

  8. 网络广告术语CPC、CPM和CTR的含义和关系

    1.       CPC(Cost-per-click):对于广告主来说,就是每次点击(广告)的(付给网站主的)成本:对于媒体(或网站主)来说,就是用户每次点击(广告)(向广告主收取)的费用.可以用公 ...

  9. Saltstack grains组件

    grains是Saltstack最重要的组件之一,grains的作用是收集被控主机的基本信息,这些信息通常都是一些静态的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根据这些信息进行灵活定 ...

  10. sql语句积累

    有一个需求表(demand),每一记录就是一条需求:另外有一个报价表(quotation),每一条记录是对需求记录的报价详情. 需求表: 报价表: 我现在想得到每条需求的信息以及有多少人报价了,我们可 ...