AtCoder Beginner Contest 187 C - 1-SAT
阿新 • • 發佈:2021-01-03
C - 1 - SAT
看了官網提供的題解,發現這個思路很巧妙,同時也作為對STL中的set容器的學習吧
題目分析
這道題需要一個set容器來儲存輸入的字串。
測試資料無非有兩類:以!
開頭的字串和沒有以!
開頭的字串 。輸入的如果是以!
開頭的字串,那麼把!
去掉後再在set容器查詢一下是否有匹配的元素,如果存在的話,輸出匹配的元素,結束程式執行;對於非!
開頭的元素,那麼在容器查詢一下加上!
後是否有匹配的元素,如果存在的話,輸出匹配的元素,結束程式執行。如果無匹配元素,那麼將輸入的字串儲存在容器中。
我原本的思路是儲存完字串之後,再遍歷一遍 好暴力qwq ,但這個思路完全是反過來了:判斷完再儲存。對於我這蒟蒻來說這個思路確實是想不到,順便也學習了set的一些用法。
AC程式碼
#include<bits/stdc++.h> using namespace std; int n; string ss; set<string> s; int main(){ ios_base::sync_with_stdio(false); ios::sync_with_stdio(false); cin >> n; for(int i = 0; i < n; i++){ cin >> ss; if(ss[0] == '!'){ string t = ss; t.erase(t.begin()); if(s.count(t)){ cout << t << endl; return 0; } } else { string t = "!" + ss; if(s.count(t)){ cout << ss << endl; return 0; } } s.insert(ss); } cout << "satisfiable" << endl; return 0; }