「Top Coder」カテゴリーアーカイブ

MNS

SRM148 Div2のhardが普通に解けたので記念に

719.20/1000

概要

数字が9個与えられ、魔法陣が作れる組み合わせはいくつか?

#include <algorithm>
#include <iostream>
#include <map>
#include <numeric>
#include <set>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
#define FOR(i,s,e) for (int i = int(s); i != int(e); i++)
#define FORIT(i,c) for (typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
#define ISEQ(c) (c).begin(), (c).end()
class MNS {
int rn(vector<int> number){
int a[3];
for(int i=0,n=0;i<=7;i+=3){
a[n] = number[i]+number[i+1]+number[i+2];
n++;
}
if(a[0]==a[1] && a[1]==a[2]) return a[0];
return -1;
}
int cn(vector<int> number){
int a[3];
for(int i=0,n=0;i<=2;i++){
a[n] = number[i]+number[i+3]+number[i+6];
n++;
}
if(a[0]==a[1] && a[1]==a[2]) return a[0];
return -1;
}
public: int combos(vector<int> numbers) {
int ans = 0;
sort(numbers.begin(),numbers.end());
do{
if(rn(numbers) == cn(numbers) && rn(numbers) != -1) ans++;
} while(next_permutation(numbers.begin(),numbers.end()));
return ans;
}
};

next_permutation() 最強です

動的計画法をついに理解しました。 グラフの勉強は全然進んでないですけども。 

明日はテストなので今日はテスト勉強に没頭しますw

SRM 581 div2

来週から挑戦しようと思ってましたが思い立って今日挑戦しました。

livedoorだとソースコードを張るのが半端じゃなく面倒なため断念

結果は
209.12/250
0/500
0/900

1問目は表が黒 裏が白のカードがランダムに並べられて 

それを黒白黒白・・・ と並び替えるか 白黒白黒・・・と並び替えるのにどちらが裏返す回数が少ないかって問題でした。

黒白・・・ 白黒・・・の2パターンしかないので

普通に黒白・・・ 白黒・・・と比較するのが早いんですが、それに気づかず配列を二つ用意して いちいちひっくり返してましたw

問題文は朝食食べがてらやってたんですが、この時点で勝負ありでしたw

2問目が半端じゃなく難しくdiv2レベルだと解けたのが上位1割もいなかったみたいです

自分はそれっぽいコードを書いた時点で残り1分だった上、普通に解法自体が駄目だったので論外でした

3問目はどうせ解けないと思って開きませんでしたが無論解けませんでしたw

結局1問目の早解き問題で結果が決まってしまうというしょっぱいデビュー戦で

レートは1027からのdiv2スタートとなりました。

はてなブログに移行しようかな。

 

10000問

昨日はもう一題topcoderをやりました。

SRM147 div2
225.86/250 

186.77/600
3時間半くらい

600点の問題が難しくて3時間以上考えた。わかってからもコードにするのに手間取りました。

topcoder1位の人はロシア人なんだけど、10000問解いたらしいw
 
自分がやってる問題よりもずっと難しい問題を10000問解いてると思うとおそろしい・・・

今日は応用情報について調べようと思ってます。

 

演習開始

プログラミング熱が高いうちにTopcoderに挑戦しようと思って環境構築やら演習やらをやりました。
全部C++で

SRM144 div2

123.05/250
172.45/550
3時間程度 
 
SRM145 div2
122.02 /250
164.28/500
2時間程度 
 
SRM146 div2
225/250
284.14/500
1時間弱

SRM144はvectorのreturn値が見れなくて、いろいろがちゃがちゃやってたんですがそもそもreturn値を見る欄がなかったことに気付くのに1時間くらいかかりました←

javaに慣れてるせいでstring → int,double やint,double →stringの返還に戸惑りましたね・・・

SRM146はそういう変換がなかったので割と早く解けました。

時間がかかっても2問解ければRは上がるみたいなんで時間内に解き切るようにトレーニングあるのみですね。

とりあえずdiv1に行くのが目標です

Top Coder

チームリーダーにtop coderっていう競技プログラミングサイトがあるから

やったほうがいいよってことで登録しました。

試しに過去問やってみたんですけど

クラスを作成して提出みたいな形式だったのですが、まずクラスがわからないというw

ということで適当に調べて一問やったあとに二問目でstringの文字列の一文字一文字に

アクセスする方法がわからないので止めましたw

昨日やり方聞いたらstr(2)みたいにしたら二番目の文字にアクセスできる的なことを聞いたのでやってみようと思います。

とりあえずdiv1に行くまで頑張りますw