参加記録
華麗に0完
300:
0〜N-1と1〜Nを間違えた。
550:
開いてない
900:
開いてない
5/13/2012
4/22/2012
TCO2012 2A
参加記録。何も出来なかった。
300 :
2部マッチングして正当性を確かめるまでは思い浮かんだけど
log2 で分類しきれるという所に最後まで気がつかなかった。
もっとシンプルな方法で解いてる人がいるけど、あれは何をやっているのか・・・。
450 :
読んだだけ。
1000 :
開いてない。
300 :
2部マッチングして正当性を確かめるまでは思い浮かんだけど
log2 で分類しきれるという所に最後まで気がつかなかった。
もっとシンプルな方法で解いてる人がいるけど、あれは何をやっているのか・・・。
450 :
読んだだけ。
1000 :
開いてない。
4/08/2012
TCO2012 1B
参加記録。通過したけど、残念な結果。
250 :
やるだけ。やるだけにも関わらずFailedSystemTest。
500 :
メモ化した。memo[区間の先端][区間の終端][今何匹か]
貪欲とか2分探索みたいな解法の人もいた。
1000 :
読んでない。
250 :
やるだけ。やるだけにも関わらずFailedSystemTest。
500 :
メモ化した。memo[区間の先端][区間の終端][今何匹か]
貪欲とか2分探索みたいな解法の人もいた。
1000 :
読んでない。
4/01/2012
TCO2012 1A
参加記録。惨敗
250 :
全部試す。
ソートを忘れて再提出。
500 :
AとBが等しくなる場合はたぶん無い。素数を分母か分子に振り分けるパターン数 / 2。
__builtin_popcountにlong long int を使ってシステムテストで落ちる。
1000 :
ざっと読んだだけ。
250 :
全部試す。
ソートを忘れて再提出。
500 :
AとBが等しくなる場合はたぶん無い。素数を分母か分子に振り分けるパターン数 / 2。
__builtin_popcountにlong long int を使ってシステムテストで落ちる。
1000 :
ざっと読んだだけ。
5/25/2011
TCO2011 Qual3
参加記録。
250
Failed System Test
500
250再挑戦
個数が多くて6個で、数値の範囲が1-15と小さいので、充分大きい数まで試せばいい。
250
Failed System Test
500
class CoinMachinesGame {
public:
int maxGames(int c, vector <int> need, vector <int> give) {
int cnt = 0;
while( true ){
int tmp = c;
const int size = need.size();
int idx = 0;
int mx = -(1 << 30 );
for(int i=0; i<size; ++i){
if( need[i] <= c ){
if( mx < give[i] - need[i] ){
idx = i;
mx = give[i] - need[i];
}
}
}
int game = c / need[idx];
c -= need[idx] * game;
c += give[idx] * game;
cnt += game;
if( tmp == c )break;
}
return cnt;
}
};
1000class ComplementMachine2D {
public:
int largestSubmatrix(vector <string> m) {
int r = max( m.size(), m[0].size() );
for(int begin=0; begin < m[0].size(); ++begin){
for(int end = begin+1; end <= m[0].size(); ++end){
for(int top = 0; top < m.size(); ++top){
for(int bottom = top + 1; bottom <= m.size(); ++bottom){
bool a, b;
a = true;
b = true;
for(int i=begin; i<end; ++i){
a = a && m[top][i] == m[bottom-1][i];
b = b && m[top][i] != m[bottom-1][i];
}
if( !a && !b )break;
r = max( r, (bottom - top) * (end - begin) );
}
}
}
}
return r;
}
};
250再挑戦
個数が多くて6個で、数値の範囲が1-15と小さいので、充分大きい数まで試せばいい。
class AllButOneDivisor {
public:
int getMinimum(vector <int> v) {
for(int n = 1; n < 100000; ++n){
int cnt = 0;
for(int i=0; i<v.size(); ++i){
if( n % v[i] == 0 ) ++cnt;
}
if( cnt+1 == v.size() )return n;
}
return -1;
}
};
登録:
投稿
(
Atom
)