shuji4649のブログ

気が向いたときに書きます

AtCoder入水しました!

こんにちは。shuji4649です。

ABC342で入水することができたので記事を書こうと思います。

プロフィール

中3。競プロの他にはロボットを作ったりしています。

競プロはpythonメインでやってます。

 

入水するまでにやったこと

出られるコンテストには出る

ABC・ARC・AGCすべて出られるときは出ました。もちろんRatedで(AGC以外)。

コンテストに出ることが一番効果ある気がします。

 

最近のコンテストの成績はこんな感じです。時々緑Perfとったりしますが水Perfが安定してきました。青Perfもちょこちょこ。いいですね。

これからは絶対に緑Perf以下とりたくないです。青Perf目標で行きます。

 

アルゴリズムの勉強

コンテストに出て解けなかったものを中心にアルゴリズムを勉強しました。

くわしくはあとで書きます。

あとE8さんの記事をみながら過去問精選100問を半分くらい解きました。

qiita.com

 

Twitterを始める

入緑のタイミングに合わせてTwitterを始めました。

ロボットも競プロもそうですが、Twitterを見ているだけで非常にたくさんのことを学べます。

ロボット用と競プロ用でアカウント分けたほうがいいかなとか思ったり思わなかったり。もう手遅れな気はする。

 

OMCを始める

最後のJJMOで5完というひどい成績を収めてしまったのでちゃんと数学を勉強しようということでOMCを始めました。プログラマには数学も必要なので。

とりあえず何も勉強はしない状態で水色まではいけそうです。黄色くらいを目指したいと思います。今年は数検も受けようかな。

 

虚無埋め

精進は僕は虚無埋め(簡単なものをつぶしていくこと)中心です。

ABCのA全部埋めて喜んでたりしました。

ご覧の通りちゃんとした精進らしいものはしてないですね。精進よりコンテストに出ることでいろいろ学んでいったって感じだと思います。

 

使えるアルゴリズム・データ構造

 

完璧

  • 全探索
  • 二分探索
  • 累積和・いもす法
  • DFS
  • BFS
  • 基本的なDP
  • ワーシャルフロイド法

ライブラリからコピペなら使える

知ってはいるが使えない

  • 遅延セグ木

 

大体このくらいです。少なめだと思います。これから頑張ります。

 

最後に

次は青ですね。今年中に行けるように頑張ります。ちゃんと精進していきたいと思います。

1600はちょっと遠いのでまずはあちゃせん目標で行きたいと思います(?)。

 

 

 

JOI2023/2024参加記

今回、本選に出場することができたので参加記を書いてみようと思います。

本選は今年が初めてでした。よわよわ競プロerなのでお手柔らかにお願いします。

 

一次予選

何事もなく通過しました。

 

二次予選

二次予選の時点でAtCoderのレートは778(茶)でした。

言語はいつも使っているPythonを使いました。

A問題

13:06:19で無事AC。ちょっともたついた。

B問題~

13:14:07 B問題を単純な累積和でまず小課題3までの47点を確保。

13:55:44 なかなかわからなかったのでC問題に移って小課題1,4,5の23点を取る。

~しばらくB問題に苦戦~

15:06:13 とりあえず先にD問題の小課題1,2の17点を取った

15:38:37 B問題、累積和と二分探索を使えばいいことに気づきAC!(遅い)

その後20分かけてEを解いてみるが得点は得られず

結果

100-100-23-17-0の240点。

本選進出のボーダーがなんと240点でぎりぎり通過しました!やったあ!

科学オリンピックで本選に行けたのはこれが初めてだったので嬉しかったです。

本選に向けて

ただ、本選に行ったとはいえ実力的に春合宿なんて行けるわけがなく、またロボットの方をやりたかったのであまりこれといった対策はしていませんでした。

いつも通り普通に競プロをして、レートは一応1100くらいまでは上がりました。

C++は、一応理解はできるし書けますが慣れてはいなく本選で使える自信はありませんでした。いつか移行しなきゃいけないのは分かってます。

本選1日目

本選は2日間に分かれて行われます。

1日目には開会式・講演会・プラクティス・交流会がありました。

 

開会式の一人5秒の自己紹介動画はみんな面白くて楽しかったです。

僕は「ー・ー・ー ・ー・ー・ ・ー・・ ・・・ー」と言って立ち去っていく動画を提出しました。

 

ラクティスでは本番と同じ環境で問題を解きました。AtCoderとは全然違ったので練習できてよかったです。C++全然使ってなかったしC++のローカルの環境構築とかも全くやってなかったのでだいぶ苦戦して、100点くらいしか取れませんでした。C++ちゃんと勉強しないとやばいなと思いました。

 

夜には双子さんの交流会がありました。僕は参加しなかったのですがすごく楽しそうだったので参加すればよかったと後悔してます。簡単に言うと暗号になっている問題文を解読してその問題に答えるっていう感じのものでした。

チームに入っていないのに勝手に問題を解いてGoogleフォームに出してしまいました。

Discordで話題になってた「チーム1.5」は僕でした。すみませんでした。

 

本選2日目

ついに本選の競技です。

きっとCランクだろうとは思っていましたが、とりあえず100点はとりたいと思って頑張りました。

考えるときはPythonで書いて、最後にC++に書き直す感じで解こうと思いました。

問題1

1時間近く「最大値」を「総和」と勘違いしていました!!!!

自分だけかと思ったら意外と多くてびっくりしました(でも1時間も気づかないのはひどすぎる)

Tで割った余りで全探索のO(NT)解法で85点取って次に行きました(14:05:22)

問題2

ワーシャルフロイド的な感じの書いたら小課題2(N≦50,M≦50)は通りました(15:02:37)。

あと小課題1も個別でプログラム書いて通しました(15:30:24)。

C++にてこずってちょっと時間かかってます。

 

とりあえずここまでで目標の100点は達成しました。

問題3

小課題1は通せました(15:59:59)。

あとは無理です。

問題4

無理です。

問題5

無理です。

 

というわけでここから1時間は虚無の時間でした。ちゃんちゃん♪

結果

85-24-7-0-0の116点でした。Cランクです☆

でも本選のDiscord見てて楽しかったしC++にも少し慣れることができたので参加できてよかったです。

 

最後に

今年1年間頑張ります。

次はBランク行きたい!

 

 

データベーススペシャリストに合格しました

 

R5秋の試験でデータベーススペシャリストに合格しました。

14歳で最年少でした。

自分用の記録という意味もかねて一通り書いておきたいと思います。

受験の参考になれば幸いです。

データベーススペシャリストとは?

情報系の国家資格「情報処理技術者試験」の最難関試験「高度試験」の1つです。

午前1,午前2,午後1,午後2の4つの試験科目があります。

合格率は15%前後で、合格者平均年齢は30歳くらいです。

詳しくはこちらのIPAのページをご覧ください。

データベーススペシャリスト試験 | 試験情報 | IPA 独立行政法人 情報処理推進機構

契機・受験時のスペック

ただのプログラミングが好きな中学生です。

競プロやゲーム制作などを少しやっています。

申し込み期限ぎりぎりにこの試験の存在を知って、最年少が前年の14歳だったのでなんとなく受けたくなって申し込みました。高度試験の中でも挑戦しやすそうだったのもあります。

応用情報技術者などの下位資格は持っていませんでした。

応用情報技術者に出てくるような知識もほとんどありませんでした。

データベースは触ったことありませんでした。

今思えばかなり無謀だったと思います。

なぜ応用情報から受けなかったのか?

申し込む時には応用情報のこと知りませんでした((

対策

勉強方針

午前1を受けなければならず、知識もほとんどなかったのでまず応用情報技術者の勉強からする必要がありました。

また、時間が限られているので勉強範囲を絞り午後1は概念設計とSQLを、午後2は概念設計を選択しようと思っていました。

夏休みが学校の行事とかで忙しかったのでほとんど9月からの勉強になりました。

9月上旬

9月上旬はずっと午前1の対策としてこの本を使って応用情報技術者の勉強をしていました。初めて知ることばかりでとても勉強になりました。

 

www.ap-siken.com

このサイトを使ってスマホやパソコンで暇なときにやっていました。

過去問を効率的に回していくことができるのでオススメです。

9月中旬

そろそろデータベースの勉強に入ったほうがいいと思い、応用情報技術者の勉強と並行してデータベーススペシャリストの勉強を始めました。勉強には応用情報技術者の教科書と同じシリーズのものを使いました。

1通り読んだら、午前2の過去問を解き始めました。午前2も過去問道場をつかって過去問を回していきました。

www.db-siken.com

9月下旬

この時点ではまだやっと2つの教科書の勉強が終わったところで過去問道場は応用情報技術者が6%、データベーススペシャリストが15%くらいしか解いていませんでした。午後問題は全く手を付けていませんでした。

9月中旬にあった文化祭が終わったのでここからギアを上げていきました。

まず、過去問道場のペースを上げました。特にノルマなどは決めていませんでしたが、暇さえあればやってました。

また、放課後に午後1の問1(概念データベース設計)を過去3年間分くらい解きながら概念データベースを理解していきました。

 

10月(試験1週間前)

試験一週間前の時点でデータベーススペシャリストの過去問道場がすべて埋まりました。これは結構自信になったと思います。

過去問道場の網羅度100%の画像

応用情報技術者の過去問道場はまだ12%くらいだったと思います。

ここで初めて午後2の問題を解きました(遅すぎ)。全然わからなかったので解説を見ながらゆっくり解きました。

直前1週間は部活も休んでほとんどデータベーススペシャリストの勉強に費やしていました。

主に過去問道場と午後1の問1、午後2を解いていました。

 

前日

令和4年の過去問を一通りやってみました。午前は2つとも8割ほどとれていたので安心でした。

午後の概念設計の問題はある程度解けるようになっていたのですが、SQLと物理設計をほとんど解いていなかったので、前日はそれらを4年分くらい解いて理解を深めておきました。

当日

会場まで電車で1時間くらいあったので、電車の中では応用情報技術者の過去問道場を回していました。このときの正答率は75%くらいでした。

最終的な過去問道場の網羅度です↓


行きにコンビニでお昼ご飯とおやつ(ブラックサンダー3つとラムネ)を買っていきました。試験会場には大体8:40くらいに着きました。

 

午前1

30問中9問が見たことある問題で、確実に取れたと思ったのが14問くらいだったので、とりあえず午前1は受かったと思いました。午前1で受からなかったら今後の午前1免除が取れないし午前2からが採点されないので絶対に落ちてはいけないと思っていたので良かったです。

帰ってから自己採点したら71.4点でした。

 

午前2

25問中9問が見たことある問題でした。確実に取れたと思ったのが16問くらいだったので、とりあえず午前は突破できたようで良かったです。過去問からの流用や過去問で身につけた知識を使える問題が多かったので過去問道場で100%網羅しておいてよかったと思いました。

帰ってから自己採点したら80点でした。

 

お昼

サンドイッチを食べながら不安だったSQLの部分を教科書で復習していました。

午後1が始まる前にブラックサンダーを1個食べて気合を入れました。

 

午後1

解答用紙を配られたときに、問1を見ると正規形の問題のような解答欄が見えました。

ここ数年出題がなかったのであまり対策をしていなかったので不安になりました。

試験が始まって中を見てみると、なんと概念設計が2問ありました。こんなこと過去問ではなかったのですこし驚きましたが、その2問を選択することにしました。

案の定正規形のところで沼にはまり、15分くらい使ってしまいました。そして部分関数従属性と推移的関数従属性が混ざって部分的関数従属性とか書いてしまいました。

あとの概念データモデル・関係スキーマはそれほど問題なく埋まり、時間内に問2の設問3(2)までは終わりました。(3)で「消込み」という知らない単語が出てきて適当なことを書いておきましたが多分×です。

正直あんまり点数は取れていない気がしましたが6割はいけたんじゃないかなって感じでした。

あとすごい肩が凝りました。

午後2

始まる前にブラックサンダー2つとラムネを食べました。

予定通り概念設計の問2を選択しました。今回は概念データベースと関係スキーマの問題のみでした。

マスタ系はいい感じにできたのですが、トランザクション系がどのように解釈すればよいのか判断がうまくできずいまいちでした。

時間いっぱい使って全部埋めました。

概念設計の問題は手ごたえがあまりわからないのですが、5割はとれた感じがしました。6割とれたかは不安でした。

 

試験後

iTECとTACの解答速報で午後の自己採点をしたところ、午後1が60点、午後2が58点で超ギリギリな感じでした。祈りながら合格発表の日を待ちました。

前日にSQLをめっちゃ勉強したのに午後問題で解かずに終わってしまったので、せっかくだから何か実用サービスを作ろうと思い、phpmySQLを使って簡単な会員制ポイントサイトを作りました。今は30人くらいの同級生が使ってくれています。

合格発表

平日の正午発表だったので4時間目が終わった後にすぐ学校のタブレットで確認しました笑。

合格していてよかったです。

午後1が自己採点60点に対して90点になっていたので多分調整が結構入ったんだと思います。

午後2が不安でしたが61点でギリギリ合格することができました。

結果

まとめ

応用情報の内容からの1ヶ月の勉強でなんとか合格することができましたが、ギリギリで危なかったです。まだ実務で使えるような力はついていないと思うのでこれから開発なども頑張っていきたいです。

午前1が2年間免除になるので、これからも情報技術者試験は受けていきたいと思います。

データベーススペシャリストは思考力で知識量をある程度カバーできる試験だと思うので、実務経験のない人や中学生もぜひ挑戦してみてはいかがでしょうか。これから受ける人は1ヶ月ではなくちゃんと勉強時間を確保することをオススメします。