tettyあのブログ

こんにちは。ピカピカの高校生です。

AtCoderで入緑したので入緑記事を書いてみる。(7割ネタ)

入緑しました

とても嬉しいです。

 

わたしはだれ

高校1ねんせい。男。イケメン。

C++er。pythonも少し使える。

DirectXとかUnityとかでゲームを作っていたりする。

できること

  • C++
  • python
  • 全探索(bit全探索を含む)
  • DFS
  • BFS
  • 累積和
  • エラトステネスの篩
  • 素数判定
  • グラフ(隣接リスト表現)
  • Union-Find
  • STLとか
  • (二部探索)
  • (DP)

できないこと

精進方法

qiita.com

主にE8さんのこの記事を読んでやってみたりやってみなかったりしました。おわり

あとはコンテストに出るとか?大層なことはしていません。本当に。

茶色になっていない人はこの記事を読んでみると良いかも。

(っていうか問題セットが連続で良くて緑になっただけかもしれない。)

精進記録(AtCoder Problems)

 tettyA

Achievement

Accepted

306

11235th
Shortest Code

0

596th
Fastest Code

0

1592nd
First AC

0

1002nd
Rated Point Sum

58300

13736th
Longest Streak ?

6 days

19427th
Current Streak ?

0 days

Last AC: 2023-01-07
Streak Sum

128 days

TEE ?

13489

 

 

Daily Effort

2020-04-192021-02-022021-11-182023-01-0702468
 
 
 

諦めて写真で投稿します。クソ重いので。

一応こいつらも



 




----------ネタ・ゾーンここから----------

脳内彼女との理想のデートプラン


梅田に行きおしゃれなお店に行く。そこで楽しく団欒をする。

通天閣やらアベノハルカスやらで社畜の残業で構成されている夜景を見てロマンチックな雰囲気にする。

帰り道に手を繋ぎ、信号待ちでキスをする。最後は十三駅近くの検閲により削除検閲により削除♥する。

えっち絵紹介

私は検閲により削除とか検閲により削除とか検閲により削除とかが好みなので、検閲により削除系の絵が多いです。ここでは私の検閲により削除検閲により削除検閲により削除検閲により削除のうち、ほんの検閲により削除検閲により削除程度の絵を検閲により削除でブログに検閲により削除ようと思います。

※刑法175条に違反しないようモザイク処理を施しております。本当は検閲により削除

 

----------ネタ・ゾーンここまで----------

総括

よくぞここまでブラウザバックせずに読んでくれました。私は嬉しい。

この記事のネタを募ったところマトモな回答が無かった。私は悲しい。

なんと入緑するまでにコンテスト参加回数が50回を超えているんですよね。

なぜなら私が怠惰で全く精進していないからです。(Acceptedも多分殆どコンテスト中に解いた問題。)

こんな人間でも入緑は出来るのでまだ入緑していない人はがんばえー!!!

~(完)~

ABC281 D - Max Multiple 備忘録

前置き

間違ってても大目に見てくれや。

URL

D - Max Multiple

概要

問題文見ろ。

解法

DはDPのD。 BIT全探索、next_combination()などに頼ると計算量に処される(自明)。

添字 is 何?

欲しいものはなんだろな?
A:「n番目までの要素から」「k個選んだとき」
=>dp[n][k]でヨシww!

Atcoder「WA」

WTF?

余り、分かんないよね...
つまり
dp[n][k][d]:=n番目までの要素からk個選んだときの最大の和(ただし、d=和%mod D)

初期化

とりま全部-1。SにDの倍数が含まれへんっちゅうことやな。
dp[0][0][0]=0

遷移

A[n]を選ぶ場合と選ばない場合を考えないといけん。

  • 選ぶ場合

dp[n+1][k+1][(d+A[n])%D]=max(dp[n+1][k+1][(d+A[n])%D],dp[n][k][d]+A[n])

  • 選ばない場合

dp[n+1][k][d]=max(dp[n+1][k][d],dp[n][k][d])

dp[n][k][d]==-1のときはそもそも考えなくてええんや。つーか考えんな。そもそも「解が存在しない」んやから選ぶとか選ぶ以前の問題やな。

答えはモロチンdp[N][K][0]。

ACコード

atcoder.jp

defineは神。

巷には反define派をいう訳の分からない人たちがいるのをご存知だろうか。
この記事ではそんな可哀そうな人達の洗脳を解くためにdefineの様々な利点を挙げる。

便利

defineすることによってよく使う定型文的なものを一つに纏めることが出来る。
例えば、std::vectorイテレータ、sort()するときに毎回.begin()と.end()を用意するのが面倒である。そんな時に

#define vecALL(vec) (vec).begin() , (vec).end() 

と定義してあげれば、そんな煩わしいことをしなくて済む。
また、競プロなどでよくN次元配列(N=1,2)を入力として与えられることもあるがこの入力がまた面倒である。そんな時にも

#define vecIN(vec,n) for(int i= 0;i<(n);i++)cin>>(vec)[i]
#define vvecIN(vec,i,j) for(int ip=0;ip<(i);ip++)for(int jp=0;jp<(j);jp++)cin>>(vec)[ip][jp]

このようにすれば未来永劫子々孫々生々世々万劫末代定型文を入力する苦痛な時間からfreeされる。


え、inline関数使えって?
黙れ。
inline関数だとIDEの色分けが普通の関数と一緒になって分かりにくくなり、一々定義まで戻ってこれはinlineで展開されるんだな、と確認しなければなくなる。
しかし、マクロだと大抵のIDEは関数と色分けが別なのでこれはマクロだな、展開されるんだな。という風になるのである。
また、これと同じ理論展開によりconstexprが普通の変数と見分けがつかないということも言える。

環境に良い

ライブラリを使用する時に、「この機能いらねぇなぁ~」とか「この機能ゴミだなぁ~」とか思ったことはないだろうか。
defineとifdefの合わせ技により利用者がいらんと思う機能をバッサリ切り捨て元から無かったようにできるのだ。
これにより実行ファイルの容量が減り、容量にとって優しくなれるのだ。

公平性の確保

constexprやinlineを使っているとdefineを使ったころにせっせこせっせこ動いてたプリプロセッサの出番が全てコンパイラに奪われてしまう。
人がAIに仕事を奪われる、という話がビルドで意図せず少々違う形ではあるが再現されてしまっていたのである。
こんなことはあってはならない。プリプロセッサに仕事を与えるという意味でもマクロは大切なのである。

最後に

これでdefineの重要性が分かっただろうか。それでもconstexprとdefineは同じなのでconstexprを使えという人がいるかもしれないが、そういう人達はもうが反defineに侵されてしまっているので手の打ち所がないので諦めるしかない
しかし、大半のマトモな人たちはdefineが良いということが分かってくれたこであろう。そうであれば、私は十分である。
これからも反define派が出てこないことを祈り、また、不幸にも反define派になってしまった迷える子羊にはその洗脳がいち早く解けることを祈る。

ブログ始めました

ブログを始めると始めましたという記事を書くことが法律で決まっているらしいので書きます。

多分プログラミング関連のことを書くかもしれないし、書かないかもしれないです。

よろしくお願いします。