1. 程式人生 > 其它 >2022.3.16賽後總結

2022.3.16賽後總結

一、今日訓練賽題目總結

      總體來說,今天的題目偏純數學題目(恰好戳中我的軟肋),自然比賽結果也異常慘烈,不過遺憾的是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賽後開啟整個複習專案。
忙碌的一天,明天加油!!!