みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

【参加記】わぁいこどふぉ あかりこどふぉ大好き【おまけもあるよ】

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

【参加記】わぁいこどふぉ あかりこどふぉ大好き【おまけもあるよ】

投稿記事 by みけCAT » 13年前

昨日の17時からのCodeforcesに参加してきました。
日記書くの遅い?小さいことは気にするな!

結果は・・・
2126点 30位/796
A~Cの3問しか解けず、しかも他の参加者に比べて遅い上にAを再提出したのですが、8本のHackが効いたようです。

ではコードを晒していきましょう。
A. Robot Bicorn Attack
文字列の長さは最大30文字!区切りは2箇所!これは全探索!!→書く→提出
…Σ(゚Д゚|||)しまった!このままではオーバーフローする!→再提出
► スポイラーを表示
結果:318点 Aを再提出とか痛いです。

B. Plane of Tanks: Pro
仕様が与えられているので実装するだけ。でもどうやって実装するか…
→普通に整数で計算したら通りました
► スポイラーを表示
結果:426点 そこそこ。

C. Geometry Horse
これは…貪欲でおk?→Pretest Failed→問題の解釈を誤った!→修正して提出
► スポイラーを表示
結果:582点 終了時には500点満点になっていたのですが、
誰かがシステムテストで落ちた影響で1000点満点になったようです。

D. Plane of Tanks: Duel
所謂普通の確率DP?…でも両方100%の確率で外したら全然決着がつかないし、
そうでなくてもいつ終わるかわからないし、わからない!
ソースコードはありません。

E. Power Defence
攻撃のタワーとフリーズタワーを向かい合わせに配置して…でもフリーズタワーの影響範囲が…
めんどくさそう!パース!(おい)
ソースコードはありません。

F. Gnomes of Might and Magic
え?え?問題文何言ってるの?わけがわからないよ。
ソースコードはありません。

Hack
コーディングと撃墜が分かれていないということは、
コーディングを早めに諦めればそれだけ長い時間を撃墜に当てられるということ。
思う存分撃墜してやりました。

主な撃墜対象としては
A:最初の0の処理忘れor処理ミス、桁数制限が無いor甘いことによるオーバーフロー
B:隣にあるプレイヤーのデータとスコアが同じ間(インデックスを確認せずに)ループ
C:不完全な多倍長計算
がありました。
私がいたRoom 74
撃墜に使ったデータはこちらです。
► スポイラーを表示
[hr]
おまけ
Japan Alumni Group Spring Contest 2012

AOJで(比較的出やすい時間に)コンテストがあると聞いた(見た)ので、参加してみました。
案内のページ
Everyone is eligible to participate the contest but please be very sure that this contest is intended for World Finals; The problem set will be far harder than other JAG's practice contests.
意訳:誰でも参加できるよ、でも世界大会を想定しているから超難しいよ。しっかり理解しといてね。

よし、受けて立つ!
→開始
A:うわぁ、実装ゲーだ!パース!
B:え?グラフの切断?今の僕には理解できない。
C:45^4通りなら全探索!…よく考えたら4^45通りだ。無理。
D:僕には、わからないよ。
E:グラフから閉路を消す?…わけがわからないよ。
F:凸包?…いや、コーナーケースが…
G:工エエェェ(´д`)ェェエエ工
H:??????????
I:これはDP…いや、10^18だと!?どうみてもMLE…以前の問題。
J:上から順番?コーナーケース?…???
…やばい、マジで難しい。

→しばらく経過
やばい、全然解けない!みんなはBを通してる人が多いみたい。わけがわからないよ。
基地が繋がっていない場所を切ったらいけないから…
最大値が10000だからshortで行ける。
→Runtime Errorを量産。\(^o^)/

→さらに経過
Iも通してる人が多いみたい。よく考えろ。
障害物が30個しかない。ということは障害物と障害物の間を効率良く計算できればいいはずだ。
でもどうやって?数列?書き出してみる。だめだ、全然一般項が求まらない。
何か、武器はないのか!?
…この形は…そうか!蟻本にあった行列の繰り返し2乗法だ!
→書く→提出→Σ(゚Д゚|||)
#include
#include

#define MOD_BY 1000000009ULL

typedef unsigned long long ull;

typedef struct {
int x;
ull y;
} xy_t;

ull matrix[64][75][75];

void matrix_mul(ull in1[75][75],ull in2[75][75],ull out[75][75],int n) {
ull result[75][75];
int i,j,k;
for(i=0;i0)matrix[0][i-1]=1;
matrix[0]=1;
if(iy)>(b->y))return 1;
if((a->y)y))return -1;
if((a->x)>(b->x))return 1;
if((a->x)x))return -1;
return 0;
}

int main(void) {
int case_num;
int w,n;
ull h;
int i;
ull now[75];
ull now_pos;
xy_t noentry[30];
ull now_matrix[75][75];
for(case_num=1;;case_num++) {
scanf("%d%llu%d",&w,&h,&n);
if(w==0 && h==0 && n==0)break;
for(i=0;inow_pos) {
memset(now_matrix,0,sizeof(now_matrix));
matrix_kaizyo(now_matrix,w,noentry.y-now_pos);
matvec_mul(now_matrix,now,now,w);
now_pos=noentry.y;
}
now[noentry.x-1]=0;
}
if(now_pos<h) {
memset(now_matrix,0,sizeof(now_matrix));
matrix_kaizyo(now_matrix,w,h-now_pos);
matvec_mul(now_matrix,now,now,w);
}
printf("Case %d: %llu\n",case_num,now[w-1]);
}
return 0;
}
[/code][/spoil]

コメントはまだありません。