jj1gujのブログ

アイコン画像は音速の奇行子 様よりいただきました

ABC165参加

ABC165に参加しました!! コンテスト結果はこちら Fortranで2完, Pythonで1完, C++で1完でした.

A問題

Fortranでだしました.
$A$から$B$までループ回して$K$の倍数があったら'OK', なかったら'NG'を出力しました.

B問題

Pythonでだしました.
預金額を$Y$円としたときに$\lfloor Y/100 \rfloor $をループを回して足していって$X$円を超えたところでループを止めました.

C問題

C++でだしました.
最初貪欲でやっていったらサンプル2でWAだったので発狂して先にD解いてました.
Dとき終わったあとに制約とか見返してたら先頭を固定すれば$A$の場合の数は高々$10 ^ 9$だとわかったので*1全探索で行くことにしました.
DFSで考えられる数列を全列挙し, あたえられた条件に当てはまるか全ての条件を試して得点を足していきました.

D問題

紙でsample1を解いていたときになんか周期性を感じたので(は?)頑張って数式化してみました.
$x=Bc+d$ ($0 \le d \le B-1$)とすると,
$\lfloor \frac{Ax}{B} \rfloor = \lfloor \frac{ABc+Ad}{B} \rfloor = Ac+ \lfloor \frac{Ad}{B} \rfloor$
$A \times \lfloor \frac{x}{B} \rfloor = Ac$
よって
$\lfloor \frac{Ax}{B} \rfloor - A \times \lfloor \frac{x}{B} \rfloor = \lfloor \frac{Ad}{B} \rfloor$
ここで$\lfloor \frac{Ad}{B} \rfloor$は単調増加なので, $N < B-1$なら$d$に$N$を代入して, $N \ge B-1$なら$d$に$B-1$を代入して計算し, 出力するようにしました.
今回開始が10分遅れだったのに終了時刻がいつもどおりだと勘違いしてC問題でやみくもに提出しまくって3ペナ生やしてしまいました…
やみくもに提出せず, ペナを生やしていなければパフォが30くらい上がっていたのでもったいなかったです…
ただ最近あまり精進できていなかったのに4完できたのは偉いと思います.
みんなほめてください(は?

*1:本当はそれよりもっと少なくて${} _ {20} \mathrm{C} _ {10}$らしいです

SDRplayをTCP経由でSDRSharpで使えるようにする

昨日SDRplayがお家に届いたので遊んでみたよ!!

きっかけ

SDRplay用の推奨ソフト(?)*1であるSDRunoをインストールして使ってみたけどかなり使いにくいと感じました.*2 そこで, 普段から使い慣れているSDRSharpで使いたいと思って調べてみたら公式マニュアルがあったのでこの通りにセットアップしてみたところ, うまくいかなかったのでTCP経由で使えるようにしました. 調べてみたところここで公式マニュアルの方法だともうできなくなっており(は?), TCP経由であれば機能は制限されるものの使えるよ的なことが書いてありました(圧 倒  的 英 弱なのでひょっとしたら違うかも)

読み進める前に

まず以下の条件をすべて満たしていることを前提とします

  • SDRplayを購入済みである(アイキャスエンタープライズラジオパーツジャパンで買える. 2020年4月当時だとアイキャスの方がセール中かなんかで多分安かった)

  • SDRunoをインストール済みである(してない場合はここからインストールしてください)

  • SDRsharpをインストール済みである(してない場合はここからインストールしてください)

やりかた

  1. ここからTCP SERVERをダウンロードし, zipファイルを解凍する.
  2. 解凍したフォルダを適当なところに移動する.
  3. 移動したフォルダを開いて, rsp_tcp.exeをダブルクリックして実行する.
    f:id:jj1guj:20200426044354j:plain
  4. 下の写真のようなコンソール画面が出てきたらSDRsharpを開いて実行する. f:id:jj1guj:20200426044546j:plain
  5. SDRSharpの画面左にあるSourceのドロップダウンをクリックしてRTL-SDR(TCP)を選択し, 変更する.
    f:id:jj1guj:20200426044656j:plain
  6. 画面上にある▷マークをクリックして再生する.

    やってみた

    ちょうどALL JAコンテストをやっていたので3.5MHz CWを聞いてみました.

    f:id:jj1guj:20200426045342j:plain
    おっ、ええやん
    こんな感じで受信することができ, いい感じに聴くことができました~!!
    や っ た ね!!
    これで気象FAXの受信とかもしてみたいですね…(やったらまた記事書こうかな)

*1:推奨かどうかは知らないけど公式マニュアルだととりあえずこれで説明されてる

*2:使い慣れてないだけ説が濃厚な気もする

AtCoderはじめて1年たった

なんかAtCoder始めて1年たったらしいのでポエム的な何かを置いときますね.

1年やった結果

コンテスト参加回数: 38回(Ratedのみ)
レーティング: 0→843
最高パフォ: 1255
最低パフォ: 55
色変回数: 4回*1
RatedがUnratedになった回数(参加したもののみ): 4回
できるようになったこと: DP, 累積和, 繰り返し2乗法, nCkとかそこらへん, 計算量の見積もり, Fortran
布教して沼に沈めた人数: 9人くらい

次の1年間の目標

とりあえず水色になれてたらいいかなぁ…
それ以外の目標が浮かばない.
あっ!DFSとかBFSとかグラフ系のアルゴリズム書けるようになりたい!*2

感想

まあ1年間でよく緑になれたなあ…って感じです.
始めた当時は茶色まで上がれるだろうけど茶色でサチるかなぁって思ってました.
ぶっちゃけ1年たっても緑色でサチってる自信しかないので水色になったら誰かほめてください.

*1:灰色から青色って思うじゃん?

*2:DFSが書けない緑コーダーです

ABC163参加

ABC163に参加しました!!
コンテスト結果はこちら
Fortranで3完でした.

A問題

$\pi =3.14$として$2\pi R$を出力して終わりでした

B問題

$N$から$A _ {i}$をひたすら引いてマイナスになったら$-1$を出力しました.

C問題

$A _ {i}$に含まれる$1$~$N$の個数をひたすらカウントして出力しました.

D問題

なんか総和を取りまくればいける気がする...

今回unratedでしたね…
特に事故ることもなかっただけに悲しいです…
またがんばります

ABC160参加

ABC157に参加しました.
結果はこちら
Fortranで5完でした.
やったね!

A問題

問題文のとおりに実装しました.

B問題

$X$を500で割ったあまりを$Y$としたときに$1000 \times \lfloor X/500 \rfloor +5 \times \lfloor Y/5 \rfloor$を出力しました.

C問題

なんか考察中に頭の中がごちゃごちゃになって無限に時間を書けてしまいました…
結局隣同士の家の距離を求めて, その距離の総和から最も大きい隣同士の距離を引きました.

D問題

これもC問題で無限に時間を書けてしまった焦りから頭の中がごちゃごちゃになってしまっていました...
今回制約が$2 \times 10 ^ 3$で二重ループをかけられるので各点$i$から, その点の右側にある点$j$までの最短距離を$\min ( j-i, abs(i-X)+abs(j-Y)+1)$で求め, 合計を求めました.

E問題

実はD問題解いてるときに問題文を読んでてなんか解けそうな気はしていました...
結局無色のりんごは赤リンゴにも青りんごにもなれるので, 最初に$P$から大きい順に$X$個, $Q$から大きい順に$Y$個取り出し, 1つの配列$S$に格納しておきます. そうするとABCの過去問にありそうな$S$の要素を$R$の要素で書き換えて$S$の総和を最大化する問題になるのであとはこれを解けばよいです.

今回C問題AC時に冷えることがほぼ決定していてかなり焦っていました. しかし, なんとか終了間際にE問題まで通すことができて本当に良かったです!! Cに時間をかけてしまったのは正直精進不足だとおもいます.
これからはCまで20分以内に安定して解けるように頑張ります!!

ABC159参加

ABC159に参加しました!! コンテスト結果は[こちら]( Fortranで2完, Pythonで2完でした.

A問題

Fortranで通しました.
2つの数の和が偶数になる組み合わせは (偶数)+(偶数) (奇数)+(奇数)しかないため {} _ N C _ {2} + {} _ M C _ {2}を出力しました.

B問題

最初に与えられた文字列が回文か判定し, その後真ん中を除いた前半分と後ろ半分がそれぞれ回文かを判定しました.

C問題

サンプルからエスパーして ( \frac{L}{3} ) ^ 3を出力しました.

D問題

あらかじめ全ての組み合わせ Bを計算し, 与えられた Aに含まれる各 A _ {i}の登場回数を数えておきます.
これを C _ {i}としたときに B- {} _ {C _ {i} } C _ {2}+{} _ {C _ {i}-1 } C _ {2}を出力しました.


なんか今日のA問題, むずかしくなかったですか?ぼくはむずかしいとおもいました.
とりあえず今回1日未満で緑色に復帰することができました!
次は落ちないように気をつけたいです. まる.

f:id:jj1guj:20200322231645p:plain
緑復帰RTA成功!

AtCoderで茶色になった

AtCoderで茶色になりました!!
や っ た ね
コンテスト成績はこちら

どうして…どうしてこうなった

今日のAGCでA問題見たらかCafeCoderで見たことあるような雰囲気だったのでそのままDPしたらWAになりました.
問題文はしっかり読もうね.


とりあえず明日のABCで色変します()
問題文の誤読には気をつけましょう

f:id:jj1guj:20200322000036j:plain
みんな、気をつけような…