当前位置 : 主页 > 编程语言 > 其它开发 >

2022.3.16赛后总结

来源:互联网 收集:自由互联 发布时间:2022-05-30
一、今日训练赛题目总结 总体来说,今天的题目偏纯数学题目(恰好戳中我的软肋),自然比赛结果也异常惨烈,不过遗憾的是B题我在最后有了思路,可是我没有把握住最后的时间,

一、今日训练赛题目总结

      总体来说,今天的题目偏纯数学题目(恰好戳中我的软肋),自然比赛结果也异常惨烈,不过遗憾的是B题我在最后有了思路,可是我没有把握住最后的时间,强迫自己冷静下来深入思考。

但是也有些意外收获吧。

  本次比赛的A题中用到了一个我比较不常用的容器——stack,以前只知道这玩意遵循后进先出,却从来没想过用它来求个数为偶数的回文串(本质上统计的是位置对称且相同的字母对)。另外,第一题虽然走了很多弯路,但是我学会了STL容器中如何删除,里面容器(详情见大佬博文:STL容器中erase的一些注意事项,priority_queue中的一些细节用法)。

二、训练赛习题

  1.A题

  题意:找出字符串中的所有处于对称位置且相等的字母对数,然后转化为步数,步数为偶数则B win,若步数为奇数 ,则A  win。

  题解:利用stack的FIFO特性,统计处于对称位置且相等的字母对数

查看代码


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<vector>
#include<cmath>
using namespace std;
#define maxn 100020
#define inf 1e8
// const int N=1e5+10;
stack<char>t;
int main()
{
    int ans=0;
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    string s;
    cin>>s;
    int len=s.size();
    for(int i=0;i<len;i++)
    {
        if(t.size()==0)
            t.push(s[i]);
            else{
                if(s[i]==t.top())
                {
                    ans++;
                    t.pop();
                }
                else
                {
                    t.push(s[i]);
                }
            }
    }
    if(ans&1) cout<<"Yes";
    else
        cout<<"No";
    return 0;
}

三、今日结语
今天的每日一题没有完成,明天一定给它补回来。另外,我的复习计划最近恐怕很难搞起来,所以我准备在4.9赛后开启整个复习项目。
忙碌的一天,明天加油!!!



  

  

网友评论