CODE FESTIVAL 2016 Final
A問題
A: Where's Snuke? - CODE FESTIVAL 2016 Final | AtCoder
snuke
という文字列がある場所の列(アルファベット)と行(数字)を出力
コード
#include <bits/stdc++.h> #define REP(i,n) for(int i=0; i<(int)(n); ++i) #define FOR(i,k,n) for(int i=(k);i<(int)(n);++i) typedef long long int ll; using namespace std; string s; int H, W; int main(void) { cin >> H >> W; REP(i, H) { REP(j, W) { cin >> s; if(s=="snuke") { char c = 'A'+j; cout << c << i+1 << endl; } } } }
Submission #991415 - CODE FESTIVAL 2016 Final | AtCoder
B問題
B: Exactly N points - CODE FESTIVAL 2016 Final | AtCoder
- 和が
N
になる重複のない自然数の集合で最大の数字が最も小さい集合を出力せよ
方針
m(m+1)/2 > N
となる最小のm
を取り、大きいものから順に除外できる数字を除外していって、ちょうどN
になる集合を作る
コード
#include <bits/stdc++.h> #define REP(i,n) for(int i=0; i<(int)(n); ++i) #define FOR(i,k,n) for(int i=(k);i<(int)(n);++i) typedef long long int ll; using namespace std; int main(void) { int N; cin >> N; int m = 1; for(int i=1; i<=N; ++i) { if(i*(i+1)/2 >= N) { m = i; break; } } int res = m*(m+1)/2 - N; vector<int> contain(m+1); contain.assign(contain.size(), 1); for(int i=m; i>0; --i) { if(res == 0) break; if(res-i >= 0) { res -= i; contain[i] = 0; } } for(int i=1; i<=m; ++i) { if(contain[i]) cout << i << endl; } }
Submission #992560 - CODE FESTIVAL 2016 Final | AtCoder
C問題
C: Interpretation - CODE FESTIVAL 2016 Final | AtCoder
N
人が話すM
種類の言語が与えられる。全員が意思疎通可能か答えろ
方針
N+M
個の頂点を持つ二部グラフを作って人を表すN
個の頂点が連結かどうか調べる- 連結判定はDFSでできる
コード
#include <bits/stdc++.h> #define REP(i,n) for(int i=0; i<(int)(n); ++i) #define FOR(i,k,n) for(int i=(k);i<(int)(n);++i) typedef long long int ll; using namespace std; vector<vector<int> > edge; vector<bool> visit; void dfs(int v) { if(visit[v]) return; visit[v] = true; for(int i=0; i<edge[v].size(); ++i) { dfs(edge[v][i]); } } int main(void) { int N, M; int K, L; cin >> N >> M; edge.resize(N+M); REP(i, N) { cin >> K; edge[i].resize(K); REP(j, K) { cin >> L; L = N+L-1; edge[i][j] = L; edge[L].push_back(i); } } visit.resize(N+M); dfs(0); REP(i, N) { if(!visit[i]) { cout << "NO" << endl; return 0; } } cout << "YES" << endl; }
Submission #993138 - CODE FESTIVAL 2016 Final | AtCoder
D問題
通らず
E問題
部分点を狙ってt
秒でできる最大クッキー数を考えたが失敗