您的位置:首页 > 其它

【备战蓝桥杯】USACO-> Beads

2014-01-25 20:28 169 查看
拖了这么久,终于才要开始沉下心好好备战蓝桥杯了。

发现我果然是缺乏训练的。这么一道题目,分析了这么久。目前评测系统崩掉了。我检测的数据应该都是正确的,先不管他,先记录下今天的成果再说。

发现上个学期是 用脑过度,现在是脑袋生锈,真是容易走极端呀。必须合理安排一下,唤醒一下我的大脑才口以,毕竟这个比赛对我还是挺重要的啦。能够冲进决赛的话,优势就很大了。加油!~通过写日志来激励自己每天坚持训练,不知道是不是一个恰当的方法。但是不试试怎么晓得勒。姑且一试好了吧。~试一试又不会咋地。

【问题回顾】

简单显示:

29
wwwbbrwrbrbrrbrbrwrwwrbwrwrrb

就是一条链子,从某一处切断它,匹配最多两种颜色,求能够求得的最大长度,w不计入颜色种类。

方法很多。我的思路就是记住变色点,从每个变色点开始向右计算,可以变一次颜色,w不计入颜色变化。将每次统计的个数与最大的比较,得出最大的。

我开始思路卡壳在哪里勒?就卡在是将w给b还是给r上,我之前的变色点是不计算w的,即w不算变色点。= =后来就悲剧了。

总之就将我的代码贴出来吧。

#include <stdio.h>

int main()
{
char input[360];
int record[360];
int len;
scanf("%d",&len);
scanf("%s",input);
//1、记录变色点
char temp = input[0];
int i,j=0;
for(i=1 ; i < len ; i++)
{
if( temp != input[i])
{
record[j++] = i;
temp = input[i];
}
}
//2、在变色点上做操作,向右检索,到尾翻头;允许变色一次,w不算
int len_re = j;
int time_chge=1;
char chck;
int max=0,m_temp=0;
for(i=record[0],j=0 ; j < len_re ; j++)
{
chck = input[(i++) % len];
while( time_chge >= 0)
{

if(chck == 'w' && input[i%len] != 'w')
{
m_temp++;
chck = input[i%len];
}
else if( chck != input[i % len]  && input[i%len] != 'w')
{
time_chge--;
chck = input[i%len];
m_temp++;
}
else
{
m_temp++;
}
i++;
}
max = (m_temp > max) ? m_temp : max;
i = record[j];
time_chge=1;
m_temp=0;
}
printf("%d",max);
return 0;
}
今天的训练,发现了一个特点,我注意无法集中的,一会弄一下这里,一会弄一下QQ,飞信,看网页,想这个,想那个的。

以前有段时间也会这样,那是在看到hack世界的另一篇天地之后,深深被吸引,或者说是被迷惑,然后不知所措,什么都想探索,想知道。然后就慌了神。

后来慢慢习惯了,就淡定了,就那么些个东西。我就只能搞里面的一个而已,仅此而已。

时光荏苒,不容得我们东一榔头,西一棒槌的。

加油吧骚年。专心,慢慢的做好每一件手头的事情。~~~~

万万不可以养成一心两用的习惯,会害死自己。必须从细节上强迫自己,一心,只一用。

ok~~今天完成。口以去放肆哈皮啦!!!


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: