2019-04-24

今日解いたものです

 

ABC089 C - March

頭文字がMARCHのいずれかから始まる人数をそれぞれ数えておく. あとはどの文字を選ぶかの場合の数と各文字ごとにその中からだれを選ぶかの場合の数をかけ合わせれば求めたい数になる.

→実装でバグらせた.面倒なことを考えずに,頭文字の組み合わせは高々5C3=10通りしかないのでそのすべてについて人数を掛け合わせ和を取ればよい.

思った処理を実装するという点にまだまだ難があるなぁ. Bもちゃんと埋めたほうがよさそう.

 

ABC084 C - Special Trains

各駅でF[i]の倍数のうち一番小さい時刻まで待つを繰り返せば最短時間で到達できる.

→無限にREを出した.しかも細かいところでもバグらせまくった

こういうのは素直にシミュレーションするのがよいかも......

 

今日は2問しかできなかった

連続AC記録 3日目

2019-04-23

今日解いたものです

 

ABC100 C - *3 or /2

ゲームの終了条件は「すべてが奇数となったとき」と読み替えられるので,すべての整数に対して約数として2をいくつ持っているかを数え上げればよい. 実際にゲームを行うときは2の約数を行うものを一つ選び残りの数を3倍するという操作を繰り返し行えばゲーム数は最大となる.

 

ABC096 C - Grid Repainting 2

縦もしくは横に連続した2マスしか塗れないため,斜めにのみ黒いマスが連続してはいけない.つまりすべての黒いマスに対して,隣接四方向少なくともいずれかに黒いマスが存在すればYes,存在しなければNoを返せばよい.バカの一つ覚えみたいにif文を並べたが解答はスッキリした実装だったので改善の余地あり.

 

研究

とりあえず先輩の卒論,修論を読んでみようとしたが全然わからない.とりあえずテンソルネットワークの基礎知識をつける必要があると感じた.

 

連続AC記録 2日目

 

2019-04-22

これからは勉強したこととかこのブログにまとめていこうと思います.

 

今日解いたやつ

ABC104 C - All Green

得点*総問題数+コンプリート点の和を求め,高い順から取っていけばよいのではないかと考えた.

→誤り. 全部解く場合はそれでよいが全部解かない場合はコンプリート点は寄与せず,得点の高い問題から取っていく必要があるため.

D<=10から2^Dの全探索が間に合うことがわかるため,どのボーナス点を取るのかを全探索する.足りない分は高いほうから取る.

bit演算わからない......

(if*1でbitのi番目にフラグが立っているかを調べる)

 

ABC103 C - Modulo Summation

fを最大化するには最小公倍数-1に対してfを作用させればよいのではないかと考え実装したが数が大きくなるとバグる......(負の数とか出る)

解答みたら単純に最後の答えだけ出力すればよいので,mod演算せず和だけ出せばよいと書いてあってさらに意気消沈した.

 

ABC103 B- String Rotation

文字列が苦手すぎるので克服のためにやったら案の定解けなかった.

文字列の巡回をS.back()+S.substr(0,S.size()-1)で書くというのもわからないとか.....

文字列周りのC++の知識詰めないと始まらないレベル.

 

今日は3問.

連続AC記録 1日目 4/22

*1:bit>>i)&1) or if(bit&(i>>1