题意:据说假设你给无限仅仅母牛和无限台巨型便携式电脑(有很大的键盘),那么母牛们会制造出世上最优秀的回文。

你的工作就是去寻找这些牛制造的奇观(最优秀的回文)。

在寻找回文时不用理睬那些标点符号、空格(但应该保留下来以便做为答案输出),仅仅用考虑字母'A'-'Z'和'a'-'z'。要你寻找的最长的回文的文章是一个不超过20,000个字符的字符串。 我们将保证最长的回文不会超过2,000个字符(在除去标点符号、空格之前)。

暴力 注意一些细节 输入字符中有回车啊之类的 wins下 输完按回车按Ctrl+z再按回车即可了

ubuntu下是Ctrl+z

代码:

#include <algorithm>

#include <iostream>

#include <sstream>

#include <cstdlib>

#include <cstring>

#include <iomanip>

#include <cstdio>

#include <string>

#include <bitset>

#include <vector>

#include <queue>

#include <stack>

#include <cmath>

#include <list>

#include <map>

#include <set>

#define sss(a,b,c) scanf("%d%d%d",&a,&b,&c)

#define mem1(a) memset(a,-1,sizeof(a))

#define mem(a) memset(a,0,sizeof(a))

#define ss(a,b) scanf("%d%d",&a,&b)

#define s(a) scanf("%d",&a)

#define INF 0x3f3f3f3f

#define w(a) while(a)

#define PI acos(-1.0)

#define LL long long

#define eps 10E-9

#define N 100010<<1

#define mod 1000000000+7

using namespace std;

void mys(int& res)

{

    int flag=0;

    char ch;

    while(!(((ch=getchar())>='0'&&ch<='9')||ch=='-'))

        if(ch==EOF)  res=INF;

    if(ch=='-')  flag=1;

    else if(ch>='0'&&ch<='9')  res=ch-'0';

    while((ch=getchar())>='0'&&ch<='9')  res=res*10+ch-'0';

    res=flag?-res:res;

}

void myp(int a)

{

    if(a>9)

        myp(a/10);

    putchar(a%10+'0');

}

/********************the end of template********************/

struct node{

    int st, ed, lenth;

}s;

struct strtr{//副本

    int pos;

    char c;

}strt[20001];

char str[20001];

bool can(char x, char y){

     if(x == y || (x - y == ('a' - 'A')) || (y - x == ('a' - 'A'))) return true;

     return false;

}

int main(){

        int j, k;

        char ch;

        int top = 0, len = 0;

        w((ch = getchar()) != EOF){

           str[len++] = ch;

           if(isalpha(ch)){

                strt[top].c = ch;

                strt[top++].pos = len-1;

           }

        }

        s.lenth = -1;

        for(int i = 0; i < top ; i ++){

            if(strt[i].c != strt[i+1].c){

                for(j = i-1, k = i+1; j>=0 && k<top; j--, k++){

                    if(!can(strt[j].c,  strt[k].c )) break;

                }

            }

            else{

                for(j = i-1, k = i + 2; j>=0 && k<top; j--, k++){

                    if(!can(strt[j].c,  strt[k].c )) break;

                }

            }

            if(s.lenth < k - j - 1){

                s.st = strt[j+1].pos;

                s.ed = strt[k-1].pos;

                s.lenth = k - j - 1;

            }

        }

        cout<<s.lenth<<endl;

        for(int i=s.st; i<=s.ed; i++)

            cout<<str[i];

        cout<<endl;

    return 0;

}

USACO Section 1.3 : Calf Flac (calfflac)的更多相关文章

  1. USACO 1.3.3 Calf Flac(Manacher算法)

    Description 据说如果你给无限只母牛和无限台巨型便携式电脑(有非常大的键盘),那么母牛们会制造出世上最棒的回文.你的工作就是去寻找这些牛制造的奇观(最棒的回文). 在寻找回文时不用理睬那些标 ...

  2. USACO 6.2 Calf Flac

    Calf Flac It is said that if you give an infinite number of cows an infinite number of heavy-duty la ...

  3. Calf Flac

    1.3.3 Calf Flac Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 223  Solved: 42[Submit][Status][Forum] ...

  4. USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)

    usaco ch1.4 sort(d , d + c, [](int a, int b) -> bool { return a > b; }); 生成与过滤 generator&& ...

  5. USACO Section 3.3: Riding the Fences

    典型的找欧拉路径的题.先贴下USACO上找欧拉路径的法子: Pick a starting node and recurse on that node. At each step: If the no ...

  6. USACO Section 3.3 Camlot(BFS)

    BFS.先算出棋盘上每个点到各个点knight需要的步数:然后枚举所有点,其中再枚举king是自己到的还是knight带它去的(假如是knight带它的,枚举king周围的2格(网上都这么说,似乎是个 ...

  7. [IOI1996] USACO Section 5.3 Network of Schools(强连通分量)

    nocow上的题解很好. http://www.nocow.cn/index.php/USACO/schlnet 如何求强连通分量呢?对于此题,可以直接先用floyd,然后再判断. --------- ...

  8. USACO Section 5.3 Big Barn(dp)

    USACO前面好像有类似的题目..dp(i,j)=min(dp(i+1,j),dp(i+1,j+1),dp(i,j+1))+1  (坐标(i,j)处无tree;有tree自然dp(i,j)=0) .d ...

  9. USACO Section 1.3 Prime Cryptarithm 解题报告

    题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...

随机推荐

  1. js获得 json对象的个数(长度)

    function getJsonObjLength(jsonObj) { var Length = 0; for (var item in jsonObj) { Length++; } return ...

  2. hibernate之4.延迟载入

    延迟载入: 仅仅有当使用以实体对象的属性(除主键属性外)时,才会发送查询语句到数据库 get不支持延迟载入 @Test public void getTest(){ Session session=n ...

  3. POJ 2431 Expedition (priority_queue或者multiset可解)

    Expedition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18655   Accepted: 5405 Descr ...

  4. 51nod 1770 数数字 找规律,注意进位,时间复杂度O(n)

    题目: 这题很简单,找规律即可. 考虑两次进位: 1.a*b时的进位. 2.aa*b时加法时进位. 代码: #include <bits\stdc++.h> using namespace ...

  5. 51nod 1065 最小正字段和 解决办法:set存前缀和,二分插入和二分查找

    题目: 这题要求大于0的最小字段和,常规O(n)求最大字段和的方法肯定是没法解的. 我的解法是:用sum[i]存前i项的和,也就是前缀和. 这题就变成了求sum[j]-sum[i]的大于0的最小值( ...

  6. 51nod1073-约瑟夫环,递归。

    N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数.问最后剩下的人的编号. 例如:N = 3,K = 2.2号先出列,然后是1号,最后剩下的是3号. ...

  7. oc消息转发机制本质

    第一级转发:主体不变,动态添加对应函数: 第二级转发:函数不变,切换接收主体: 第三极转发:函数签名不变,主体和函数都有可能变化: 1.使用函数的动态添加技术: 2.使用的类似is-a swzzing ...

  8. 优动漫PAINT-牵牛花画法教程

    喇叭型对画者自身的塑形功力会有较高的要求,作者很靠谱的把他的塑形方式详细呈现了出来~ 对于这样的一个仿真效果的牵牛花完全可以使用优动漫PAINT完成,简单又快捷,软件下载:http://www.don ...

  9. ZBrush软件特性之Material

    在ZBrush中,任何物体表面的外观都是多种因素的综合结果,例如基础颜色.纹理图像投落到表面上的照明效果和材质属性.材质可以改变照明在表面上的反应,以便模型表现出光泽.凹凸.反射.金属性或透明效果.Z ...

  10. 洛谷 P3203 [HNOI2010]弹飞绵羊 分块

    我们只需将序列分成 n\sqrt{n}n​ 块,对于每一个点维护一个 val[i]val[i]val[i],to[i]to[i]to[i],分别代表该点跳到下一个块所需要的代价以及会跳到的节点编号.在 ...