539〜
まだratedしてませんがエディタが混み合っているので書きます。
xox 48th
でした。
フォーティーエイト!!!!
PlatypusPaternity
よくわかんなかった
TopReader
WAコード↓
class PlatypusPaternity { public: int maxFamily( vector <string> female, vector <string> male, vector <string> sibling ) { int fs=female.size(), ms=male.size(), ss=sibling.size(), clen=female[0].length(); int res=0; for (int i=0; i<fs; i++) { for (int j=0; j<ms; j++) { for (int k=0; k<ss; k++) { int cnt=0; bool flag=true; for (int l=0; l<clen; l++) { if (female[i][l]==male[j][l]&&male[j][l]==sibling[k][l]&&female[i][l]=='Y') { cnt++; } else if (sibling[k][l]=='Y'&&(female[i][l]=='N'||male[j][l]=='N')) { flag=false; } } if (flag&&cnt!=0) cnt+=2; res=max(res,cnt); } } } return res; } };
Over9000Rocks
n<=15なので2^15通りを全列挙して9000とかの取り扱いなどなどに注意しながら区間をマージして数えたり。
最初全列挙の部分を再帰でやったら最大ケースでなんかバグったのでbit列挙に変えてAC
class Over9000Rocks { public: // lower<=X<=upper int sz; vector<P> res; vector<int> low, up; bool used[15]; void dfs(int l, int u, int cnt) { if (cnt==sz) { if (l>9000||u>9000) res.push_back(P(l,u)); return; } for (int i=0; i<sz; i++) { if (!used[i]) { used[i]=true; dfs(l+low[i],u+up[i],cnt+1); dfs(l,u,cnt+1); used[i]=false; } } } int countPossibilities( vector <int> lowerBound, vector <int> upperBound ) { low=lowerBound; up=upperBound; sz=low.size(); memset(used, 0, sizeof(used)); // dfs(0,0,0); for (int i=0; i<(1<<sz); i++) { int l=0, u=0; for (int j=0; j<sz; j++) { if (i>>j&1) { l+=low[j]; u+=up[j]; } } if (l>9000||u>9000) res.push_back(P(l,u)); } sort(res.begin(), res.end()); vector<P> r; int px=-1; for (int i=0; i<res.size(); i++) { if (px==-1) { r.push_back(res[i]); px=0; } else { P p=r[px]; if (p.first<=res[i].first&&res[i].first<=p.second) { r[px].second=max(p.second,res[i].second); } else { r.push_back(res[i]); px++; } } } int res=0; for (int i=0; i<r.size(); i++) { if (r[i].first<=9000) res+=r[i].second-9000; else res+=r[i].second-r[i].first+1; } return res; } };
CaptureFish
まさかのJeipoujuさん登場
だれだwriter
とりあえず嘘解法送ったら結局落とされたけど他人の得点を落とすという点で貢献してくれてた
WAコード
class CaptureFish { public: int getParity( string fish ) { int cnt=0; for (int i=0; i<fish.size(); i++) if (fish[i]=='O') cnt++; if (cnt&1) return 0; else return 1; } };
あーーー
Medium通したらEasy落としちゃうのどうにかなりませんかね(笑)