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