`

【水题】USACO Calf Flac

阅读更多
进入USACO要注册才能看题: http://train.usaco.org/usacogate

题目:【翻译版、是别处的网站】http://www.wzoi.org/usaco/13%5C206.asp

SAMPLE INPUT (file calfflac.in)
Confucius say: Madam, I'm Adam.

SAMPLE OUTPUT (file calfflac.out)
11
Madam, I'm Adam


水题啊…………



/*
ID: 1006100071
PROG: calfflac
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <set>
//#include <map>
#include <queue>
#include <utility>
#include <iomanip>
#include <stack>
#include <list>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <ctype.h>
using namespace std;

char buf[20005], str[20005];
int map[20005];

int main()
{
	/*freopen ("calfflac.in", "r", stdin);
	freopen ("calfflac.out", "w", stdout);*/
	char tp[85];
	int len, i, j, maxs = 0, start = 0, end = 0, k = 0;
	while (fgets (tp, 85, stdin))   //fgets可以把换行符也读进tp
		strcat (buf, tp);    //由于是一段话,所以要不断读取
	len = strlen (buf);
    //************************回文不理会标点以及大小写
	for (i = 0; i < len; i++)
	{
		if (!isalpha(buf[i]))
			continue;
		map[k] = i;    //str的第k个字符映射到原串的第i个字符
		if (isupper(buf[i]))
			str[k++] = tolower (buf[i]);
		else str[k++] = buf[i];
	}
    //************************找最大回文maxs,以及回文开端start和回文末端end
	for (i = 0; i < k; i++)    //枚举回文中点
	{
		for (j = 0; ; j++)    //回文长度为奇数
		{
			if (i - j < 0 || i + j > k || str[i-j] != str[i+j])
			{//超界或不相等都会使回文中断, 下面同理

				if (maxs < 2 * j - 1)
				{
					maxs = 2 * j - 1;
					start = i - j + 1;
					end = i + j - 1;
				}
				break;
			}
		}
		for (j = 0; ; j++)    //回文长度为偶数
		{
			if (i - j < 0 || i + j + 1 >= k || str[i-j] != str[i+j+1])
			{   
				if (maxs < 2 * j)
				{
					maxs = 2 * j;
					start = i - j + 1;
					end = i + j;
				}
				break;
			}
		}
	}
	printf ("%d\n", maxs);
	for (i = map[start]; i <= map[end]; i++)//输出原串,所以要映射到原串的开端和末端
		printf ("%c", buf[i]);
	printf ("\n");
	return 0;
}
分享到:
评论

相关推荐

    USACO中的Calf Flac

    《USACO中的Calf Flac》 USACO(美国计算机奥林匹克)是面向全球青少年的一项编程竞赛,旨在提升参赛者的算法设计与编程能力。在USACO的第一章中,我们经常会遇到各种有趣的题目,其中之一就是"Calf Flac"。这道...

    USACO试题英文原题、译题及相应题解

    USACO,全称为United States Computer Olympiad,是一项面向美国中学生的计算机编程竞赛,旨在培养学生的算法思维和问题解决能力。这个压缩包包含的是USACO历年月赛的试题,以及部分试题的数据和详细题解,是学习和...

    USACO经典试题配数据

    资源中的"USACO英文原题.pdf"提供了所有试题的原始英文版本,这对于熟悉英文阅读和理解国际标准的表述至关重要。同时,"USACO全部译题.pdf"则为这些题目提供了中文翻译,帮助那些英语阅读能力有限或希望更直观理解...

    USACO全部译题

    USACO(美国计算机奥林匹克竞赛,USA Computing Olympiad)是针对中学生的一项国际级计算机编程竞赛,旨在提高学生使用计算机解决问题的能力,参赛者需要使用编程语言解决一系列富有挑战性的算法问题。USACO的题目...

    USACO官网93题fps格式 OJ题库

    USACO 官网第一到 五章 练习题中文语言官方数据 fps格式支持导入所有OJ 1 [1.1] 你的飞碟在这儿 Your Ride Is Here 2 [1.1] 贪婪的送礼者Greedy Gift Givers 3 [1.1] 黑色星期五Friday the Thirteenth 4 [1.1] 坏掉...

    USACO试题精选.pdf

    USACO试题精选是一本精选了美国计算机奥林匹克竞赛(USACO)历史上部分题目的题库,包含了诸多针对C++编程的学习题目。这些题目覆盖了多方面的知识点,不仅适合学习算法和编程技巧,而且对于C++学习者来说,是一套很...

    USACO做题代码

    USACO,全称为United States Computer Olympiad,是一项面向中学生的国际性计算机编程竞赛,旨在提升参赛者在算法设计、问题解决以及编程方面的技能。USACO比赛通常包含多个编程题目,参赛者需要使用C++、Java等语言...

    usaco历年试题---2002

    《USACO历年试题——2002》 USACO,全称为USA Computing Olympiad,是美国计算机奥林匹克竞赛,旨在提升中学生的算法设计和编程能力。2002年的USACO试题集,是这一赛事历史上的一个重要部分,对于学习算法、准备ACM...

    USACO月赛十年题典

    ### USACO月赛十年题典知识点概览 #### 一、USACO简介与重要性 - **USACO**(USA Computing Olympiad)是美国计算机奥林匹克竞赛,旨在为美国选拔并培养参加国际信息学奥林匹克(IOI)的队伍。自2000年以来,USACO...

    USACO题解整理版

    USACO(United States of America Computing Olympiad,美国信息学奥林匹克竞赛)是一个面向中学生的计算机编程竞赛,题解整理版中涉及的几个题目,下面将一一介绍它们的解题思路和涉及的关键知识点。 首先,...

    usaco 合集usaco 合集usaco 合集

    这个合集提供了丰富的资源,包括英文原题、中文译题、测试数据以及解答,对于想要深入学习和准备USACO竞赛的学生来说,是一份极其宝贵的资料。 1. **USACO译题.chm**:这份文件包含了USACO历年竞赛的题目翻译,对于...

    usaco.rar_USACO 翻译 下载_usaco _usaco 翻译

    USACO,全称为United States阿Olympiad in Informatics,是美国计算机奥林匹克竞赛,旨在为高中生提供一个学习和展示编程技能的平台。这个比赛涵盖了算法、数据结构以及问题解决等多个方面,对于想要深入理解计算机...

    USACO翻译及题解

    "USACO全部译题.pdf"则是一份完整的题解集,包含了对所有原题的中文翻译和解答。这些解答通常详细解释了问题的解决方案,包括思路、算法和代码实现,对于学习者来说,是理解题目和检查自己解题思路的重要参考。 ...

    USACO试题精选

    8. **模拟和建模**:对实际问题的抽象和建模,然后用程序进行模拟,比如模拟交通灯控制、模拟水桶打水等问题。 9. **竞赛编程技巧**:如快速读入、输出格式化、调试技巧等,这些都是在竞赛环境中提高效率的关键。 ...

    USACO题集及答案

    USACO,全称为United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、问题解决和编程能力。该比赛每年举行,分为青铜、白银、黄金和铂金四个级别,难度逐渐递增。...

    usaco 2010-2011

    ### USACO 2010-2011 季度竞赛概览与关键信息 #### 一、概述 美国计算机奥林匹克(USACO)是面向全球中学生的计算机科学竞赛,旨在发掘并培养计算机科学领域的年轻人才。USACO 2010-2011 季度竞赛于 2010 年 11 月...

    USACO 历年全部测试数据

    含2001~2017全部比赛赛题测试...2001~2007 数据√ 题面× 标程题解× 2008~2010 数据√ 题面√ 标程题解× 2011~2017 数据√ 题面√ 标程题解√ 其中除2008~2010外其他年份均按照年度、月度、金银铜白金组别整理完全

    USACO英汉对照题目

    【USACO 英汉对照题目】是USA Computing Olympiad(美国计算机奥林匹克竞赛)的一部分,这是一个专门为信息学竞赛选手提供训练的在线题库。USACO 提供了一种章节递进的学习模式,从基础到高级,涵盖C和C++语言,帮助...

Global site tag (gtag.js) - Google Analytics