読者です 読者をやめる 読者になる 読者になる

Tamflexの貯蔵庫

やる気のない備忘録

codingame - Skynet: the Virus

Ambush Finish the 4th test of the "Skynet: the virus" puzzle with 50 or more remaining links and get a 100% score. (訳) 待ち伏せ "Skynet: the virus"の4番目のテストケースを50辺以上残して完了し,100%のスコアを獲得せよ. というAcheivementがあ…

codingame - Horse-racing Duals

bashをプログラミング言語と読んでいいのかよくわからないけどbash縛りのAchivementがあったので解いてみた. read N;s=($(for((i=0;i

codingame - Mayan Calculation

連想配列を使えば楽に解ける long long を使うことに注意 #include <bits/stdc++.h> #define REP(i,n) for(int i=0;i<n;i++) using namespace std; typedef long long ll; int main() { string s; ll l,h,ans,x[2]; cin>>l>>h; vector<string> a(20,""); map<string,ll> b; REP(i,l) { getline(cin,s); if(s==""){i--;continue;} REP(j,s.size())…</string,ll></string></n;i++)></bits/stdc++.h>

codingame - The Gift

貪欲的に小さい順にとけば良い. #include <bits/stdc++.h> #define REP(i,n) for(int i=0;i<n;i++) using namespace std; typedef long long ll; int main() { ll n,c; cin>>n>>c; vector<ll> a(n,0); REP(i,n) cin >> a[i]; string ans = ""; sort(a.begin(),a.end()); REP(i,n) { int t=(a[i]</ll></n;i++)></bits/stdc++.h>

codingame - Scrabble

割と面倒だった(225byte) y='';$><<(a=$<.to_a.map{|s|s.chomp.split y})[0,n=a.size-1].select{|v|a[n].inject(v*y){|s,b|s=s.sub(b,y)}==y}.max_by{|s|eval({qz:10,jx:8,k:5,fhvwy:4,bcmp:3,dg:2,'a-z'=>1}.inject(s*'+'){|a,v|a=a.gsub(/[#{v[0]}]/,v[1].…

codingame - Bender, a depressed robot

ループ判定が面倒 自分は同じ所を同じ向きで通った場合にループ判定を出すようにした. しかしこれだけでは最後のテストケースが落ちるので20回以上同じ所を同じ向きで通った場合判定を出すようにした. struct P { int x,y; P(){}; P(int x, int y): x(x), y(…

codingame - Dwarfs standing on the shoulders of giants

メモ再帰によって簡単に解ける template<typename T> struct Edge { int dst; T w; Edge() {}; Edge(int dst): dst(dst) {w=1;}; Edge(int dst, T w): dst(dst), w(w) {}; bool operator < (const Edge &e){return w != e.w ? w > e.w : dst < e.dst;} }; typedef vector<Edge<ll></edge<ll></typename>…

codingame - Telephone Numbers

例によってrubyで挑戦してみた(73byte) gets;p$<.inject([]){|a,s|[*1..s.size-1].each{|v|a<

codingame - Conway Sequence

気合の131byte l,r=$<.read.split;$><<[*2..r.to_i].inject([l.to_i]){|s|y=0;n=s[0];t=[];(s+['']).each{|v|(v==n)?(y+=1):(t+=[y,n];n=v;y=1)};s=t;}*' '

codingame - Network Cabling

x軸またはy軸に平行なメインケーブルから各家庭に枝を伸ばせば良い. 中央値は絶対偏差の和を最小にすることが知られているので, メインケーブルのy座標/x座標は中央値を用いると良さそう. 証明はこちらなど↓ 連続関数に関してはこちら↓ http://web.uvic.ca/~…

codingame - Teads Sponsored Contest

グラフの直径を求めれば良い 以下が参考になる Spaghetti Source - 木の直径前に解いたabc019のdouble sweepのアルゴリズムを思い出した. 計算量はO(E) この手の問題は多いのでそのうちグラフをクラス化して保存しておきたい. 直径,最小全域木等をg.diameter…

codingame - Indiana - Level 1

やるだけ int main() { int W; // number of columns. int H; // number of rows. cin >> W >> H; cin.ignore(); vector<vector<int>> T(W,vector<int>(H,0)); REP(i,H)REP(j,W) cin >> T[i][j]; int EX; // the coordinate along the X axis of the exit (not useful for thi</int></vector<int>…

codingame - The Paranoid Android

そこまで難しくはないが例外処理に手間取った. struct Info { int floor; int pos; Info(){}; Info(int f,int p):floor(f),pos(p){}; bool operator==(const Info &a) { return floor==a.floor && pos==a.pos; } }; const int SPACE = 0; const int BLOCK = …

codingame - Stock Exchange Losses

int main() { ll n; cin >> n; ll ans = 0, m = LLINF; vector<ll> a(n); REP(i,n) cin >> a[i]; DOWN(i,n-1,0) { m = min(a[i],m); ans = min(m-a[i],ans); } cout << ans << endl; return 0; }</ll>