/*CF335B
这个题目的n达到50000,但是串只是有小写字母组成,所以如果字符串的长度大于2600,那么
肯定存在,所开始输入就判断如果长度大于2600,那么直接找当个字母输出100个
否则执行LCS模块,然后判断所得最长公共是否大于100,如果小于100,那么直接输出最长公共
否则从两头分别取50个输出*/
#include<stdio.h>
#include<string.h>
int dp[][],dir[][];
char a[],b[],c[];
void LCS(int n,int m)
{
int i,j;
memset(dp,,sizeof(dp));
memset(dir,,sizeof(dir));
for(i=;i<=n;i++)
for(j=;j<=m;j++)
{
if(a[i-]==b[j-])
{
dp[i][j]=dp[i-][j-]+;
dir[i][j]=;
}
else if(dp[i-][j]>dp[i][j-])
{
dp[i][j]=dp[i-][j];
dir[i][j]=;
}
else
{
dp[i][j]=dp[i][j-];
dir[i][j]=;
}
}
}
int cont=;
void print(int n,int m)
{
if(n== || m==) return;
if(dir[n][m]==)
{
print(n-,m-);
c[cont++]=a[n-];
}
else if(dir[n][m]==) print(n-,m);
else print(n,m-);
}
int main()
{
int j,n;
int hash[],flag=,i=;
char s;
memset(hash,,sizeof(hash));
gets(a);
n=strlen(a);
for(i=;i<n;i++)
{
hash[a[i]]++;
}
for(i=;i<;i++)
{
if(hash['a'+i]>=) { s='a'+i; flag=; break;}
}
if(flag)
{
for(i=;i<=;i++)
printf("%c",s);
printf("\n");
}
else
{
for(i=,j=n-;i<n;i++,j--)
b[j]=a[i];
cont=;
memset(c,,sizeof(c));
LCS(n,n);
print(n,n);
int num=strlen(c);
//printf("%d\n",num);
char m1[],m2[];
if(num<=) printf("%s\n",c);
else
{
memset(m1,,sizeof(m1));
memset(m2,,sizeof(m2));
for(i=;i<;i++)
m1[i]=c[i];
for(i=num-,j=;i>=num-;i--,j--)
m2[j]=c[i];
//int num1=strlen(m1);
//int num2=strlen(m2);
printf("%s%s\n",m1,m2);
} }
return ;
}

CF335B的更多相关文章

随机推荐

  1. C#实现反射调用动态加载的DLL文件中的方法

    反射的作用:1. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型 2. 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射.3. ...

  2. 网络协议之ts---ts 流分析详解

    名词缩写翻译: es:elements stream 基本流 pes:packet elements stream 打包流 pts:presentation time stamp 显示时间戳 dts: ...

  3. Install EPEL repo on CentOS 7 / RHEL 7

    On CentOS 7, we have found without downloading the epel-release RPM package(as we used to do on prev ...

  4. Qt 配置文件QSettings读取以及中文问题

    QSettings settings("xxxx.ini",QSettings::IniFormat);settings.setIniCodec(QTextCodec::codec ...

  5. Android无线测试之—UiAutomator UiCollection API介绍

    UiCollection类介绍 一.UiCollection类说明 1)UiCollection类是UiObject类的子类,即UiObject类的所有方法都被UiCollection继承下来了,都可 ...

  6. sql中between and 用法

    SQL中 between and是包括边界值的,not between不包括边界值,不过如果使用between and 限定日期需要注意,如果and后的日期是到天的,那么默认为00:00:00 例如: ...

  7. 71、Android上对Cookie的读写操作

    Cookie是为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据,在Android中也经常用到,接下来我们介绍Cookie在Android里是如何进行读写的.   Cookie其实就 ...

  8. 将BT转为磁力链接

    实战代码 安装完成后,我们来看下代码: 系统环境:Linux Python环境:Python2.7 请注意python版本 bt2url.py 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  9. angular_文本变化

    注意,在input中用ng-change的时候,一定要结合着ng-model用 开头,注意在这里添加了ng-app <!DOCTYPE html> <html lang=" ...

  10. My97DatePicker日历控件在iframe提示没有权限的问

    修改 WdatePicker.js 文件 $crossFrame:false, 值设成 false,原来的值是 true