Codeforces 3月10日比赛Round #706

总结:

比赛链接

我这一次呢,是我第一次打ACM赛制,许多东西不懂,还是同机房的同学帮我解释了一下(谢谢那几位同学),还有题目是英文的,有些看不懂就直接百度翻译 ,就懒得自己翻译,省时间。我这次就做了第一题所以我就讲一下第一题的总结吧。

第一题:

这一题我就不放链接了(因为懒),我做这一题的时候,我读了一遍题目就知道了这是一道回文字符串的判断,但是在写代码的时候,由于没有认真分析样例,忘记了对字符串的特殊判断,连续提交错了2次(100分没了!) ,最后只好去问了同学的思路,才知道我少了一个判断。
代码如下:

#include<iostream>
#include<cstdio>

using namespace std;

char c[110];
string a;

int main()
{
	int n,m,k;
	cin>>n;
	
	for(int i=1;i<=n;i++)
	{
		bool flag=1;
		int cnt=0;
		scanf("%d %d",&m,&k);
		cin>>a;
		
		int p,q;
		
		
		if(k*2==m){            //第如果是2倍的关系,怎么都不可能能分割
			cout<<"NO"<<endl;
			continue;
		}
		if(k==0){
			cout<<"YES"<<endl;
			continue;
		}
		
		for (p = 0, q = m-1; p <= q; p++,q--)
		{
            if (a[p] != a[q])                //回文字符串的判断
            {
                flag = 0;
            	break;
  	       	}
  	    	cnt++;
  	    	if(cnt == k)                //第k+1的字符串因为只出现一次,所以不用管k+1是否是回文

  	    		break;
  	    }
  	       	
		if(flag)
		cout<<"YES"<<endl;
		else
		cout<<"NO"<<endl;
	}
	return 0;
}

一些需要注意的点:

  • 在做一些模拟或暴力题时要好好分析样例,样例可能蕴含着一些信息,比如特殊判断,很重要
    就这样吧。
posted @ 2021-03-13 16:08  在那遥远的悠穹下  阅读(46)  评论(0编辑  收藏  举报