ABC154参加(公式バチャ)
ABC154にバーチャル参加しました~
結果はA~Dの4完でした
今回は全部Fortranで出しました(や っ た ぜ)
A問題
$S$ と $T$ のうち $U$ と同じ方を1だけ減らして終わりでした.
B問題
$S$の長さを取得してその分だけ'x'を出力して終わりでした.
C問題
数列$A$をソートして隣り合うもので等しいものがあれば'NO', なければ'YES'を出力して終わりでした.
D問題
各$p _ {i}$について期待値を求め, 累積和をとったあとに$K$の間隔で引き算して終わりでした.
E問題
場合の数でやろうとしましたが$N$の桁数のときの扱い方がわからずに詰みました.
恐らく$i (K \le i \le (Nの桁数-1))$のときは愚直に
を計算して足していけばいいと思います(間に合うかわかんないけど最大で100桁だから間に合うはず)
F問題
をうまいこと2項定理を使って式変形させてあげれば行けると考えたのですが式変形がうまくいかず(数弱の極み)だめでした.
解説を見たらE問題はDPを使って解く問題だったんですね…
EDPCをもうちょっとまじめにやってたら解けたかもしれない…
F問題はなんか似たようなことを考えてる気もしますが…(正直良くわからん)
とりあえず昨日同じペースでできてれば緑色直前まで行けたっぽいです.
また次がんばります
ABC153参加
ABC153に参加しました.
久しぶりに5完しました!
やったね!
コンテスト成績はこちら
今回はFortranで3完, Pythonで1完, C++で1完でした.
A問題
FortranでACしました.
して, 小数点以下を切り上げて終わりでした.
B問題
FortranでACしました.
の総和がより大きいかどうか見て終わりでした.
C問題
FortranでACしました.
モンスター全員の体力の総和から, 大きい順に匹分のHPを引いて終わりでした.
D問題
Python3でACしました.
モンスター全員の体力をからにする操作を1回としてカウントすることにします.
条件から, 1回の操作でモンスターの数が2倍に増えること, そして最初のモンスターは1匹だけであることから回目の操作におけるモンスターの数はとなります.
よってモンスター全員を倒すためにはを2で割ることのできる回数(商が0より大きくなる回数)をとしてとなることがわかります.
以上からを2で何回割れるか数えてを求めれば終わりになります.
E問題
C++でACしました.
サンプルケースから規則性が見られず, あとはなんかが報酬でがコストっぽく見えたので直感的にDPかな?って思ってみてました.
その後, 制約を見るとがだったのでここでDPだと確信して紙DPをして遷移式を考えました.
行列のdpテーブルを考えたときの遷移式は以下の通りです.
$$ dp[i][j]= \begin{cases} \lceil B[i]/j \rceil \hspace{10pt} (i=1)\\ \min (dp[i-1][j],B[i]) \hspace{10pt} (j \leq A[i])\\ \min (dp[i-1][j],dp[i][j-A[i]]+B[i]) \hspace{10pt} (others) \end{cases} $$
久しぶりの水パフォでHighest更新です!!
やったね!!!
3月末までに緑色がだいぶ射程圏内に入りましたね.
今回のセットは全体を通して統一感と言うかストーリーというかがあってとても楽しかったです.
多分次回は冷えると思いますが極力冷えないようにがんばります.
ABC152参加
ABC152に参加しました.
激冷えしました…
コンテスト成績はこちら
今回遂にFortranで3完しました.
A問題
の時にYes、それ以外の時にNoを出力して終わりですね. はい()
提出コードはこちら↓
B問題
を回だけ出力して終わりですね. はい()
提出コードはこちら↓
C問題
無限に時間を使いました…
最初は隣同士で降順になっているものの数を数えればいいかと思っていたらWAになりました(それはそう).
結局先頭から降順になっているものの数を数えることでACしました.
WAしたコードはこちら↓
ACしたコードはこちら↓
E問題
問題文から全てのについてとなれば良いことからがの最小公倍数になれば良いことがわかります.
そのため、最小公倍数を求めてから全てのについて商を取って足して最後にとの余りを取れば終わりのはずでした.
計算結果が非常に大きくなることが予想されたためさすがにこの問題はPythonで書きました.
が、
は?
はああ???
結局これに詰まって時間内にACできませんでした.
悔しい…
追記
結局最小公倍数を出した後にとの余りをとり、各の逆元をかけることでTLEされずにできるようです.
逆元の生成についてはこちらを参考にしました↓
後日ACしたコードはこちらです↓
解説読む限りE問題はどうやら最小公倍数を素因数分解した状態で持っておくべきだったようですね.
この前冷えないように頑張ると言ってたのに冷えましたね…
知ってました()
とりあえず3月末までに緑色になれるよう頑張ります.
はああああああああああああ
追記
なんだかんだでFortranで1st ACしてた.
やったね
ABC151参加
ABC151に参加しました.
ratedになってしまいましたね*1
コンテスト成績はこちら
今回はC++で1完、Fortranで2完でした.
A問題
cout<<(char)(c+1)<<endl;
でできるので便利ですよね*2
B問題
Fortranで出しました.
いちいち平均を求めると面倒だし下手すると数値がずれていってしまうため、必要な合計点から得られた得点を引いていくのが最善ですね.
それで最後に出てきた値がマイナスならゼロにして、満点より値が大きかったら-1を出力すればできました.
C問題
Fortranで出しました.
ほぼほぼ実装ゲーでしたね.
ACしなければペナルティは生えないことを知っていますか?僕は知りませんでした()
ちなみにこれで2ペナ生やしました.
D問題
たぶんDFSすればACできると踏んでいましたがここら辺でお腹が空いたのでご飯を食べにいきました.
できたらFortranで3完したかったですね.
どう考えてもコンテストの途中でご飯食べにいくのどうかしてますよね.
以後気をつけます()
どうやらF問題は恒例の数学問題*3だったようなのでご飯食べに行かずにやるべきでしたね.
まぁとりあえずHighestは更新できたのでよしとしましょう()
いつもHighest更新した後のコンテストではだいたい冷えてるので次はとりあえずレートを冷やさないように頑張ります.
ABC150参加
ABC150に参加しました.
unratedになってしまいましたね.
コンテスト成績はこちら
今回はPythonで3完でした.
A問題
かどうか判定して終わりですね. はい.
B問題
文字列中に"ABC"がいくつあるか数えて終わりでした.
C問題
制約から全列挙で行けることがわかったためPythonのitertoolsを使ってとりあえず全ての順列を列挙しました.
その後、線形探索で与えられた数列がどこにあるか探し、その差の絶対値を取って終わりでした.
D問題
問題文から式変形をし、となればいいことが分かり、そこからどうするか考えてたところでunratedが発表されたため、考えるのをやめました. はい()
今回久しぶりに全てPythonでのACでした.
できればどこかでFortranを使えばよかったかもしれません.
なんだかんだ17分で3完できたためratedだったら700超えてたかもですね…
とりあえず今年はレート1000超え目指してがんばります.
アマチュア無線について思うこと
あけましておめでとうございます.
すっかり寝正月ですね*1.
今年もよろしくお願いします.
さて、今日はアマチュア無線関連でTLが少しざわついたのでそのことについてつらつら書いていこうかと思います.
目次
わたしはだれ?
ぼくはアマチュア無線とプログラミングが好きな大学生です.
最近は卒研配属関連で鬱になってるよ.
アマチュア無線は大学に入ってから始めました.
もともと高校生の時にBCL*2をやってて、そこからアマチュア無線の存在を知りました.
現在は個人局(JJ1GUJ)や社団局(JR1ZTT)のコールサインで通常交信からコンテストまで幅広く出ています.
好きな周波数帯は遠くの局と通信できるHF帯で、好きなモードはCW*3です.
詳細はこちらを見てください.
元ネタというか事の発端と言うか…
元ネタはここら辺ですかね.
アマチュア無線ビギナーへ、ぜひ覚えておいて欲しいライフハックをお伝えします。
— Yasuki Okita (@JA1CCN) 2019年12月31日
交信中に変なのに絡まれたら、すぐに無線機の電源を切ればOK。交信が途切れることはよくあるので、相手は「あれ?いなくなった」と思うだけ。気にしなくて全然OK
不快感が増幅する前に電源オフ! これが基本ですm(__)m
まぁ今回はここら辺を受けて自分自身がアマチュア無線のことをどう思っているかつらつら書いていこうと思います.
アマチュア無線の利点
アマチュア無線をやる上での利点とするとここら辺があげられるかと思います.
・kHz帯からGHz帯まで幅広い周波数帯で免許を下ろし、運用することができる
・FT8やCWをはじめとするデジタルモードや電話など様々な変調方式で電波を出し通信を行うことができる
個人的にはAMラジオで使われている周波数帯からスマホで使われている周波数帯まで幅広く使えるのは素晴らしいことだと思っています.
アマチュア無線の欠点
欠点としてはここら辺が挙げられると思います.
・初期コストが高い
・(いろいろな意味で)ビギナーに優しくない
・やりたいことがあっても情報が見つからない
やはり初期コストの高さは学生ハムの参入を妨げている大きな要因かと思われます.
多くのビギナーがまず受けるであろう第3級アマチュア無線技士の試験手数料と免許申請料だけで7,000円近くになってしまいます.
そこからさらに開局しようとなると少なくともさらに2万円かかります.
よっぽどやる気がない限りなかなかやる気になれませんね.
一応弊社団では合格した場合や開局する場合には試験手数料や開局申請手数料をはじめとする各手数料は全て部費から支払ってくれる制度があります.
おそらく他社団でもこのような制度があるかと思われます*4.
(いろいろな意味で)ビギナーに優しくないというのは実際に自身で免許を取得し、交信するようになった時に最も実感したことです.
「この周波数帯はラグチュー*5するための周波数帯だからラグチューする気ないなら電波出すな(意訳)」と言われておじいちゃんのつまらない話に付き合わされたり「30年前のQSLカード*6が来てない、はよ送れ*7」と言われたりして正直やる気無くしました*8.
このような経験を回避するためにはCW等のデジタルモードに逃げるのが手っ取り早いのですが、別途申請が必要だったり訓練をしなくてはならなかったりとなかなか辛いものがあります.
最後にやりたいことがあっても情報が見つからないというのはぼく自身のサーチ能力がアレというのもあるかと思われます.
ただ仮に情報が見つかったとしても情報量がほぼゼロだったり内輪ネタが多かったり文体が読みづらかったり*9してとりあえずMPが削られます.
むすび的な何か
い か が で し た か 笑 ?
正直なところを述べると先に述べた欠点のうち初期コストの高さは仕方ないにしても残りの2点においてはなんとかしたいよねって感じです(そんな権限はないですが)
特に情報量の少なさについてはいろいろアマチュア無線使って遊んで(そんな余裕あるのか?)その記事を書いていって微力ながら貢献しようと思っています.
まぁこんな感じにいいとこも悪いとこもあるよねって感じです()
(ToDo: 言葉がまとまったら整備する)
参考文献
Github Pagesでテーブルを表示させる方法
Github PagesでMarkdown記法でテーブルを書くとうまく表示されないという問題があったため、これを解決する方法をメモっておきます.
あらまし
僕は自分のwebページをGithub Pagesを使って公開しています.
Github PagesとはGithubにMarkdownで書いたファイルをあげるとwebページで公開してくれるなんか、そう、すごいやつです(詳細はググってください).
そこで、自分が出場したアマチュア無線のコンテスト成績を公開しているのですが、その際に以下のように表示されてしまう問題がありました.
ちなみにリポジトリ上で見ると下のようにうまく表示されていました.
解決方法
どうやら上の事象からMarkdown記法では効かないっぽいのでHTMLで書いたところ、うまく表示されるようになりました.(なんでかは知らん)
HTMLでの表の書き方はこちらを参考にしてください.
HTMLのtableでテーブルを作る方法と応用テクニックを解説 | webliker
また、CSSで表のスタイルを指定することもできます.
MarkdownにCSSを適用させる方法はこちらを参考にしてください.
なんか原因を知っている方がいましたら教えてくださいm(_ _)m