AtCoder Beginner Contest 344 参加記録
2024-03-10
競プロ
はじめに
AtCoder Beginner Contest 344に参加した記録です。 今回は、茶色パフォーマンスでした。

A問題
文字列の先頭から|までの文字列と2個目の|から最後までを出力しました。
int main(void){
string S; cin >> S;
int first = S.find_first_of('|'); int last = S.find_last_of('|');
cout << S.substr(0, first) << S.substr(last+1) << endl;
return 0;
}B問題
0が入力されるまで、値を読み込み、0が入力されたら、逆順にして出力しました。
int main(void){
vector<ll> A;
int a; cin >> a; A.push_back(a);
if(a == 0){ cout << "0" << endl; return 0; }
while(true){ cin >> a; A.push_back(a);
if(a == 0){ break; } }
reverse(A.begin(), A.end());
for(auto x : A){ cout << x << endl; }
return 0;
}C問題
すべてのパターンの和を計算しておき、その計算結果をmapに入れ、
各Xiがmap内にあるかで判定しました。
vector<ll> A, B, C, X;
map<ll, bool> mp;
bool dfs(int i, ll sum){ if(i == 0){ REP(j, A.size()){ if(dfs(i+1, sum+A[j])) return true; } }else if(i == 1){ REP(j, B.size()){ if(dfs(i+1, sum+B[j])) return true; } }else if(i == 2){ REP(j,C.size()){ if(dfs(i+1, sum+C[j])) return true; } }else{ mp[sum] = true; }
return false;}
int main(void){
int N; cin >> N; REP(i, N){ ll tmp; cin >> tmp; A.push_back(tmp); }
int M; cin >> M; REP(i,M){ ll tmp; cin >> tmp; B.push_back(tmp); }
int L; cin >> L; REP(i,L){ ll tmp; cin >> tmp; C.push_back(tmp); }
int Q; cin >> Q; REP(i,Q){ ll tmp; cin >> tmp; X.push_back(tmp); }
dfs(0, 0);
REP(i,Q){ if(mp[X[i]]) cout << "Yes" << endl; else cout << "No" << endl; }
return 0;
}同じカテゴリの記事
2025-05-14
BFS(幅優先探索)メモ 2024-08-18
AtCoderで緑になるまでにやったこと 2024-05-20
AtCoder Beginner Contest メモ 2024-03-10
AtCoder Beginner Contest 344 参加記録 2024-03-03
AtCoder Beginner Contest 343 参加記録 2024-02-25
AtCoder Beginner Contest 342 参加記録