注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Yavin(某沙茶的代码库)

Star Wars fan and OIer

 
 
 

日志

 
 

SGU337 水  

2012-08-21 12:29:47|  分类: SGU300系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
很水很水的一道题
我却写了一个晚上都没写出来

最近很不舒服,状态太差了。受不了。
真心想请个假回家休息几天,空调吹多了啊。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<iostream>
#include<vector>
using namespace std;

const int MAX=2000+10;

int K,len,anslen,dif[MAX][MAX],sum[MAX][MAX];
string a;

int F(int i,int l)
{
int p=(i+l-1)%len;
if(p>=i)
return sum[l][p]-(i?sum[l][i-1]:0);
else
return sum[l][p]+sum[l][len-1]-sum[l][i-1];
}

int cmp(int i,int j,int l)
{
for(int k=1;k<=2*l;++k)
{
if(a[i]!=a[j])return a[i]<a[j];
i=(i+1)%len;
j=(j+1)%len;
}
return 0;
}

int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#endif
int i,l,j;
cin>>K>>a;
len=a.size();
for(l=1;l<=len/2;++l)
for(i=0;i<len;++i)
{
j=(i+l)%len;
sum[l][i]=dif[l][i]=(a[i]!=a[j]);
if(i>0)sum[l][i]+=sum[l][i-1];
}
for(l=1;l<=len/2;++l)
for(i=0;i<len;++i)
if(F(i,l)<=K)
anslen=max(anslen,l);
int ans=-1;
for(i=0;i<len;++i)
if(F(i,anslen)<=K)
if(ans==-1 || cmp(i,ans,anslen))
ans=i;
for(l=0;l<2*anslen;++l)
printf("%c",a[(ans+l)%len]);
}



  评论这张
 
阅读(170)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018