Ruteのプログラミング日記

競技プログラミング(AtCoder)の問題の解説や、過去問を解いた感想、また解けない過去問について共有したいと思ってます。

パナソニックプログラミングコンテスト2020 感想&反省

先に言いますと、爆死しました....Orz

なぜか?今回の問題、異様な難易度だったことはすでに裏付けられます。なぜなら仕組みがはっきりわからない人だとこのような図を描く羽目になってしまうのです...

 

さて、反省ばかりしているわけにも行きませんので今回の問題を振り返りましょう。

A問題

https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_a

Kth Turm

はい。配列をlsとおいてls[K-1]で瞬殺。

 

B問題

https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_b

最初、こんな考察をしていました。ところが何度やってもWAになってしまいました。

H = 行の数とし、奇数・偶数 W = 列の数とし、奇数・偶数 の時で考える
H = 奇数 W = 奇数の時(入力例2)
→(列の数を2で割った商+1)*(列の数を2で割った商+1)
+ (列の数を2で割った商)*(列の数を2で割った商)
つまり (H×W)//2+1に一致
H = 奇数 W = 偶数の時 (例 H = 7 W = 4 )
→(列の数を2で割った商+1)*(列の数を2で割った商)
+ (列の数を2で割った商)*(列の数を2で割った商)
これはH×W//2に一致します
H = 偶数 W = 奇数の時 (入力例1)
→(行の数を2で割った商)*(列の数を2で割った商+1)
+(行の数を2で割った商)*(列の数を2で割った商)
これは (H*W)//2
H = 偶数 W = 偶数の時
→(行の数)*(列の数を2で割った商)
これは(H*W)//2

 

何がおかしいか何度か確認すると、列・行の数が1または2のとき以下のようになることに気づきました。

列の数・または行の数が1のとき 駒は動けないから1通り

列の数・または行の数が2のとき

H = 2ならばW通り W = 2ならばH通り

これでようやくACしました。70分もかかったので順位は相当低いですorz

 

C問題

python

math.sqrt(a)+math.sqrt(b) < math.sqrt(c) や

a**(1/2)+b**(1/2)<c**(1/2) かを愚直に判定してやってみるも、なぜかWA

 

これについてはよくわからなかったので解説を読みます。

 

感想&反省は以上になります。

今回はレーティングが下がるんでしょうね....