C-merのブログ

ザ・雑記

遠泳・OWS中級者用tips

はじめに

これは遠泳・OWS中級者に向けたtips集です。
といいつつ、私の現役時代の泳ぎ方をまとめただけのものです。つまり、老害記事です。
特に体系的な内容ではないと思いますが、一部役立てられる方もいると思われる。
わかりやすい図解などもないです。 文の推敲すらしてないです。
今更感を一番感じているのは私です。

あと、このブログにでてくる”一般”の方々が本当に一般の方々なのかは知りません。

想定する読者

  • 遠泳・OWS中級者
    • 上級者の方はブラウザバックして今まで通りの方針で進めるのをお勧めします
    • 初級者の方もここに書いてある内容を参考にする前に基礎を固めたほうがいいです

さっそくいくぞい

クロール編

まず、上半身に関しては何も述べることもない。
普通にやればいいと思う。
ハイエルボーとか意識すれば良いんじゃないんですか?(テキトー

ここでは、主にキックを中心とした体の動かし方を書いていきます。
概要として、私は {2, 4, 6} ビートのキックを状況によって使い分けます。 この n ビートというやつは、簡単にいうと、2ストローク(クロール2掻き)の間に何回キックを打つかということです。
そもそも、特に競泳では、ビートを状況によって変えるということは一般的なことではないはずです。長距離泳者の一部がたまにするようなかんじです。
参考にならない人は多いはず

2ビート

2ビートは遠泳泳者がよくする手法です。私自身遠泳中にもっとも使っていたキック方法はこれでした。
一般的な、2ビートでは手の掻きに(フィニッシュ)にあわせて、反対側の足でキックをすることによって、推進力の増強と上半身に対する負担を軽減しています。
(ここでの右手・左手というのはフィニッシュのタイミングを示しています)

上半身: 右手→→→左手
下半身: 左足→→→右足

私は、この手と足のタイミングを逆にしてました。つまり、手をかくのに合わせて、同じ側の足でキックしていました。

上半身: 右手→→→左手
下半身: 右足→→→左足

イメージとしては、[1×2] ビートといった感じでしょうでしょう。私はその中で足を大きくしならせて水を押すような形のキックをしてました。
この手法は、キックの力を手の力と直接的に結び付けられるため、効率的に推進力増強と上半身の負担軽減を実現できますが、力点が身体の軸に対して片側に偏ってしまうために、身体のポジション自体もブレやすい というデメリットがあります。
このデメリットは結構大きいと思います。軸はブラさず、回転させるだけにとどめるような注意が必要です。

4ビート

4ビートはかなりまれな手法です。*1
原理的には、2ビートを補強した形のものです。まず、フィニッシュに合わせて、大きなキックをうち、連続して同じ足で小さくキックをする感じです。

上半身: 右手→→→→→→→→→→左手→→→→→→→→→
下半身: 右足(大)右足(小)左足(大)左足(小)

前述の2ビートの場合はリカバリー(手を戻す)部分で推進力や浮力が減ってしまう(もちろん、反対側の手のキャッチ(掻き始め)はありますが)のでそこを補うといったイメージです。
もちろん、フィニッシュ・キック(大)後はその半身が沈む方向へ軸が回転するのでそれを和らげる役割もあります。

6ビート

いわゆるがむしゃらに近いです。しかし、フィニッシュとキックを合わせるというのは意識してました。

上半身: 右手→→→→→→→→左手→→→→→→→
下半身: 右足*左足右足左足*右足左足

気持ちフィニッシュに合わせて強くキックしました。

実践における2xビート

強度としては、2ビート<4ビート<6ビート です。
2ビートは主に安定的に遠泳を泳ぐときに使い、4ビートはOWS試合中盤や遠泳で速度を上げる場合に使っていました。 6ビートは短距離はもちろん、OWSの序盤終盤接戦時、遠泳追い抜き時に使いました。

また、これらのキックは後方へ比較的大きな波を作ることとなり、これをうまく使うことが重要となります。
遠泳中であれば、後方(すぐ後ろ)の泳者がスリップを使える人ならキックを多く打ち、そうでなければ、キックを減らすという配慮が必要です。
OWSにおいても、後方泳者を有利にされかねないので、キックを減らす・6ビートで視界を撹乱させながら6ビートで離すといった工夫が重要になります。

他に、私は遠泳の際、プルの強度は基本的に変えず、キックの強度を変化させることでペース配分を行っていました。そっちのほうが、手にかかる負担を大きく減らせたきがします(遠泳においては足が動かせなくなるよりも手が動かせないほうがリスクはでかいので合理的だと考えています)。

また、2-4ビートはその性質上、ビーチ板や壁で上半身を固定したまま練習するのが困難なので、スイムでしか練習できないかもね

呼吸

基本的に両側で呼吸できるようになるのが良いです。フォーム改善にも役立ちます。大抵のフォームの問題点は呼吸を変えた時により顕著になります。
顔を低い角度で一瞬だけあげる競泳的な呼吸を自分はしていましたが、数十km級となると少し効率悪くても首の負担が減るような機械的な呼吸が良いのかもしれません。

他泳法の応用

遠泳やOWSにおいて、クロール以外の泳法を応用していました。

バタフライ

ドルフィンスルーをはじめとして、OWSの序盤に使えます。ただ、体力の消費が激しかったり、スリップをつくりやすかったりと、弱点も。

背泳ぎ

そもそも、私はクロールが得意ではないので、背泳ぎを多用してました。
背泳ぎの主な効用は肩の疲労緩和と後方確認です。

OWSでは疲労緩和よりもスピードを優先させるべきなのは間違いないですが、他選手と競っていない状況で泳ぎを止めずに後方確認できる最良手段です。これはペース配分に大いに役立ちます。

遠泳においても後方泳者をケアるのに役立ちます。
さらに、有効なのが疲労軽減です。背泳ぎは他の泳法と異なり肩の回転方向がクロールと逆なので、遠泳中盤以降の肩の痛みを軽減できます。団体遠泳においては最終泳者で試すのがおすすめされます。
まじめに練習していれば、ペースについていくことは余裕だとは思いますが、まっすぐ/前方泳者の波をうまく感じられなければ、隊伍が外れてしまい逆に大幅な体力ロスになる可能性もあるので注意が必要です。

平泳ぎ

平泳ぎは人気なので使ってる人も多いと思います。体勢安定、前方確認、疲労確認などに使えます。特に、OWSにおけるブイ周りの方向転換では1回のキックで大きな推進力を得られ、方向転換後の進路確認も可能な平泳ぎは有用です。

ただし、平泳ぎのキックはあたりどころによっては後方泳者に対してケガを負わせてしまう可能性があるため、後方に泳者がいないことを事前に確認するのが重要です。

日本泳法

流派を特に定めませんが、日本泳法に含まれるあおり足も方向転換に有効だと思います。個人的には、クロールからの導入のしやすさから、こちらをOWSでは使ってました。

メンタル系?

アドレナリンチェッキング

そんな言葉ないです。

OWSではバチバチに力を出し切りたい、遠泳で踏ん張りたい時に確実にアドレナリンを出しましょう。
そのためには、普段の練習でそのための練習をするといいですね。
私は、long-hard始めとした限界突破系メニューでは、ラップ間・終了時に壁を殴った結果の痛みの感じなさでアドレナリン放出を実感してました。もちろん、殴ったからアドレナリンが出るという側面もある。
遠泳中は他の物質に触れないので、自分で自分殴るしかないですね()

ドーパミン前借り

そんな言葉ないです。

主に遠泳用。

これは先に成功した状態(完泳)を想像して、幸せになっておくものです。
私はこれだけでリタイアギリギリの状態から6-7時間泳ぎ続けたことがあります。結構、馬鹿にできない
デメリットとしては、成功時の感想が薄まる(ほぼ消える)ことですが、結果の方が重要なのは確かなので感動体験は諦めましょう。

OWSにおけるレース戦略

事前準備?

カーボローディングしましょう。
やり方は自分で調べてください。

レース中

なんとなくレースについて意識してた(本当に?)ことをdumpしていきます。

まず、可能な限り集団で泳ぐことを意識します。しかし、参加人数が少ない場合は無理に集団で泳ぐことを意識しないほうが結果的に良い結果を導くこともあるので慎重に。あくまで、平均的なペースを落とさずに、競りやスリップによってより速く泳ぐための戦略でしかありません。
事前に自分と同程度の泳力の選手について複数リストアップしておき、それらの選手の特徴(選手番号・水着・体格・その他)を記憶しておきます。これらの人たちについていくことです*2。個人的には100mあたり1-2秒速い人がおすすめです。3-5秒ぐらい速い人についていってもいいのですが、案外この数秒の差は大きいので無理して体力を消耗しないことが大切です。
また、OWS経験の少ない短距離の選手が序盤からとばす場合がありますが適切に無視をすることが重要です。

スタート序盤、もしも地面に足がつく、かつ規定上砂浜足の接触が許可されている場合はドルフィンスルーを行います。ここは普段の練習が大きく出る部分です。ここで前にしっかり出て、自分のついていく集団(あるいは単独行動)にスムーズに接続できるようにします。

保進(進路を保つこと)に関しても、適切にヘッドアップをすることです。OWS中級者における最重要スキルは保進です。ここで数パーセント距離によるロスを減らすことで、数パーセント速い選手に勝つ余地が生まれます。前方泳者が信頼に足る場合はその人を保進基準にし、体力の温存をすることもできます。

給水に関して、私は可能な限り水分補給は取るようにしていました。時間のロスよりも、体力的・精神的な回復の方が効果が高いからです。もちろん、競り合い中であったり、給水ポイントが進路から大きく外れている場合はしません。飲む場合も、水をすべて飲もうとせずコップ内の水を口に投げ入れるような感じで高速に飲むようにしましょう。もちろん、こぼれます。

遠泳における戦略(選手)

ここもダラダラ書いていきます

練習・事前準備

まず、普段の練習に関しては、遠泳で「どんな事態」があっても泳ぎ続けられるように準備をしてくという前提です。
まわしに関してはEN1.5〜2の100mあたり5秒以上は余裕を持って半永久的に泳げるようにするべきでしょう*3。どんなに眠くても、調子が悪くても、身体のどこかが痛くても、実際の遠泳のペースより確実に速く泳げるようにしておくべきです。
その際に、他泳法や四肢の一部が機能しない場合を想定しておくと吉です。 また、呼吸に関しても完全に慣れるには時間がかかりますが、両側で呼吸できるようにすると良いでしょう。これは太陽の眩しさや波を顔にもろに喰らうといったことを軽減できます。もちろん、OWSでも使えますね。

直前編

普段通りに過ごせば良いと思います。音楽などを聞いて落ち着きましょう。瞑想がお勧めです。

遠泳中

  • ルールの範囲内で最大限の力を出すことが重要です。

基本的に普通に泳げば問題ないと思います。精神系は前述の方法などを使えばいいかと。

ここでは例えば、あなたの参加する遠泳が団体遠泳で全体が最も遅れている泳者を切り捨てずに考慮するものであると仮定します。あなたがその泳者でない場合、あなたが限界に近いのであれば、その泳者に追い抜かれることのないように力を抜くことも選択肢として持っておくべきです。極限状態では、使える武器は全て使うべきです。

また、痛み止めも現実的なアプローチです。実際のところ、痛み止めの最も大きな効用はプラシーボ効果によるところになると思いますが、信じれば確実に痛みを和らげてくれる存在となります。

体づくり(筋肉の意義)

OWSに関しては、セオリー通りに鍛えてください。

遠泳において最も重要なのはエネルギーの確保とそれをうまく消費することです(圧倒的個人の感想)
エネルギーは推進力と体温に変換しなければジエンド。でも、無くなってもジエンド。
エネルギーの消費だけでなく、エネルギーの供給源としても筋肉に注目する必要があります。
デブは才能があります。さらに、筋肉をつけましょう。
ガリでも問題はなし。やっぱり、筋肉をつけましょう。
脂肪がなくなった時、最後に頼れるのは筋肉です。もちろん、多量の筋肉は多量の筋グリコーゲンももたらします。これは、OWSや遠泳序盤で大きな助けになります。しかし、それ以上に、遠泳終盤最後は自らの筋肉を分解して*4、エネルギーにしていくしかありません。そして、全身全霊で泳ぎ続ければ完泳は確実です。

終わりに

飽きた。
頭をちゃんと使うと良いです。
追記するかも(指摘・訂正どしどし待ってます)

*1:一般に [2×奇数] ビートでしか、対称的なキックはできません。私含めこれを崩す人はまれにいますが、体の特性にあわせてすることであって、最初から目指すものではないです

*2:もちろん、OWSにおける紳士協定(集団で泳ぐ際にスリップによって有利不利が偏らないように先頭集団を変更していくこと)に関しても、注意を払うことが重要です。特に大人数・長距離(1㎞以上)の並泳ではこれらを意識しした方がよいでしょう。

*3:まさか、遠泳本番で想定ペースより5s/100以上速くなるなんてことはないですよね!?

*4:カタボリックというらしい(今日知った)

旧型のHHKB(BT)を静音化改造したら衝撃の結果に!?

(追記) シリコンスプレー・使用感について追記しました

これはC-merが思い立った 1人アドベントカレンダー の2日目です。今日も日付が変わってしまいました。4月2日を開始日ということにしといたほうが平和かもしれないのでそうするかもしれません。

今回はHHKBの新作を発売 (3ヶ月以上前) 記念!旧型のHHKB Professional-BT を静音化してみました (1ヶ月以上前)。

主にこちらの投稿を参考にさせていただいています。
HHKBを静音化する・その1(Silence-X装着レビュー編)
HHKBを静音化する・その2(シリコンスプレー編)

注意

この改造は一部行うとメーカーの保証(?)などが受けられなくなる可能性があります。やる場合は自己責任でお願いします。ちなみにこの記事のみでは正確な手順を把握するのは困難です。

HHKBとは / そもそも買った理由

Happy Hacking Keyboard は最もイケているインプットデバイスです。

もともと興味がありました。自分は (にわかには信じられないとは思いますが) 物理的なescキーが存在しないラップトップを使っていて、その不便さのおかげで決心がついて書いました。

HHKBを改造するモチベ

新しいHHKBが発売されて、静音の無線いいなーと思いつつ、それを買うためのお金はあるわけないのでこの機会に自分で静音化しよう!という気持ちでした。
最悪失敗しても最新のやつ買えばいいし(?)

手順

必要な道具、詳しい手順については参考にさせていただいたブログに書いてありますので詳細はだいぶ削ります。
(それではこのブログの目的は?)

ブログ書くことを想定して写真を撮ってないので素材も少ないです。
(じゃあ、なんでブログ書いた?)

f:id:C-mer:20200403022331j:plain

これはキートップを取る部分です。一部力入れないといけないところがあるので半分強引にやると良いです。

ちなみにマイナスドライバーを隙間に入れて、てこの原理みたいにしてもいけます。キートップを傷つけることなくやるのは不可能なのでおすすめしません。

f:id:C-mer:20200403023604j:plain

全部とったやつ。汚ねー

外したキートップは食器用洗剤で薄めた水につけておきました。HHKBは印字にもこだわっているので印字が消えるみたいなことはないです。

f:id:C-mer:20200403023741j:plain

色々やると上下で分離します。この"色々"が本質情報でした。残念。。。

f:id:C-mer:20200403024247j:plain

これをさらに外したとことにこのリングをはめれば終わりです。
ただ、このリングはあまりHHKBと相性が良くなかったです。リングの厚すぎるため空間的にギリギリな部分があります。

要するに、リングの厚さだけ押し込める深さが減ります。
(リングの役割の一部は一番下まで押し込んだ時の反動を吸収するみたいなところがあると思います)

そのため、リングが厚すぎたり、しっかりはめていないと静電容量の変化が起きず、入力が認識されないという事態が起こりかねないので注意が必要です。

f:id:C-mer:20200403025722j:plain

こっちは分離した基板側です。静電容量式のキーボードの実態は円錐型のバネだったみたいですね。

ちなみに、このグレーのぷにぷにと中のバネは絶対に動かしてはいけないらしいです。気をつけましょう。

ここまでで自分は1時間半かからないぐらいでした。

問題はここからです。グレーのぷにぷにと中のバネを動かしてしまった結果、入力ができなくなったり、逆に無限に入力されるみたいなことが起きてしまいました。
そのため、キーボードを開けてはぷにぷにとバネの場所を修正し、閉じてはテストをし、、、、これを繰り返すこと3, 4時間、なんとか全てのキーが反応しました。

(追記)
最後にキートップを外した面からシリコンスプレーをぶっかけたりしました。静音処理を同時に行なったのでこれがどれくらい効いてるのかはわかりません。

使用感 (追記)

打感音(?)は大体元の3分の1にぐらいになりました。他の方の静音キーボードを触らせてもらいましたがほぼ変わらないかより静かだと思います。
また、押し心地はさらに変化していました。静音化リングが厚いこともあり、だいぶ浅くなりました(正規の静音版よりも浅いです)。HHKBユーザからしたら若干物足りないです(打っている感じがしない。慣れの問題そう)。前が「カタッ」ならこれは「シュコッ..」

その後

なんとか全てのキーは1押ししたら、1回分入力されるようになりました。
ただし、1回分についてのみです。
「i」、「u」、「. (ピリオド)」のキーに関しては短時間の間に複数回押すと一時的に無限に入力するというバグが出てしまいました。 「i」、「u」に関してはローマ字入力で多用しますので、日本語入力はほぼ不可能になりました。しかも、この2つに関しては隣り合うキーということもあって互いに押しても無限入力に突入します。「きつい」と打とうとしても「きついiiiiiiiiiiiiiiiiiiiiiiiiii...」みたいになります。

ピリオドはcin>>みたいなやつやシフト演算したいとき以外は問題ないです。意外とピリオドとか読点、ダイナリって連続で入力すること少ないですよね。。。。。。。。

せめて、「z」とか「q」とか「~ (チルダ)」でこの症状出てくれれば問題なかったんですけどね~~~

結果的にはプログラミングするときにはHHKB、それ以外はMac欠陥内蔵キーボードを使用しています。

新しいHHKBに関しては経済的な事情で購入困難なので代わりにNintendo Switch Liteを購入いたしました。
だって、HHKBより1万以上安いんだもん。。

結論

Nintendo Switch Lite はお買い得。

大学4年間競技プログラムを続けると水色(AtCoder)になれたよって話

これはC-merが4月にやろうと思いたった1人アドベントカレンダーの1日目です。もし続かなかったらエイプリルフールだったということで嘘だったということにします。 1日目と言いつつもう4月2日じゃんというツッコミは承ります。 入水してから期間空きすぎというクレームは受け付けません。

そして、「大学4年間」と言っておきながら、ちょうど今日から大学生ではなくなってたりします。細かいことは気にしないようにしてください。

自分は特に競プロのプロではないので、この記事はライト競プロerに向けたものになると思います。

ここまでの道のり

変色ブログ定番のレート更新模様はこんな感じです。

f:id:C-mer:20200402022033p:plain

えー、見ていただくと分かる通り、入水してから一度もコンテスト出てません。。

非常に悪い例なので、真似しないようにしてください。

ちなみに大学入学は2016年で入学直後に友人の誘いで競技プログラミングを始めたので、このグラフよりも前からコンテストには出ています。

なぜこうなっちゃったのかはわからないですが、アカウントを作り直した記憶があります。よくわからなくなったからアカウントを作り直したので当然でしょうか(?)

最初はICPCを目標にやっていて地味に4年間で続けました。有志の勉強会も基本大学周りの人との関わりでしたが、そこそこの数参加しました。そこでAOJはもちろんtopcoderを使ったり。codeforceにも出ましたが、初めて出た回がunratedで萎えてからは出てません。

やってきたこと・やってこなかったこと

競プロができるようになるためのアレコレは、他の人のブログを参照してください。 自分がどんなに頑張って絞り出しても他のブログの部分集合になってしますので。

4年間でゆっくり競プロをやっていると後から始めた人に抜かされたり、追いつかれたりしますが、ー とは言っても自分のレートはそこまで低いというわけではないので抜かされるということは案外少なかったように感じます ー 空いた口が塞がらないタイプの天才は置いておいて、彼らは確実に自分と同等かそれ以上の数の問題を解いてます。

要は、レートをあげるにおいて問題演習数こそが正義というのは紛れもない事実だと思います。

レートを上げるための方法

「レート上げるためだけに競プロをやるというのはおかしい!」というのは自分も正しいと思いますが、

自分のレートを最大化するのだって立派なアルゴリズムではないでしょうか(?)

パフォーマンスを安定化する方法

これは苦手問題を作らないということになると思います。自分はAtCoder Problemsで自分が最低限取りたいパフォーマンスのdifficultyを意地でも解くということをやってました。何解けばわからない人もこれで安心ですね。

あと、早解きの練習

ライブラリの用意も重要だと思います。これで早解きできたり、ライブラリがあれば簡単だった問題が、レートの分け目みたいなことは往々にしてあります。

(abcが4問の時代は3問早解きor全完で水パフォが出てたので楽しかった記憶がある。問題の難易度も人口も違うので一概には比べられないが)

爆死しない方法

これは本質情報ですが、競技プログラミングとは爆死を避ける競技です。(とはいえ、AtCoderは爆死に優しい会社です)

といっても、やることは基本的に前項と同じですが、、

まず、日本語(あるいは任意の自然言語)を読解することだと思います。これに関しては、アドバイスはありません。小学生時代の自分を恨みましょう。

あとは、データ構造に対する理解を深めることだと思います。 多くの爆死は"アルゴリズムそのもの"と離れた部分に原因があると思います。読解ミスもそうですが、データ構造の使用上、計算値が想定していたものと異なることが多くの爆死を生んでいると思います(少なくとも自分はそうでした)。 具体的には、浮動小数の精度やオーバーフローですが、こうゆう初歩的な爆死ほどダメージがでかいです。


競技プログラミング力を上げるのに競プロだけをする必要もないと思います。数学とか研究とかインターンとか他の開発とかCTFとか色々な部分で論理的に考える力を鍛えればそれは結構簡単に競プロに還元できると思います。知らんけど。

水色になった感想

客観的に見て、成長速度はかなり遅い方だと思います(自分的にはもっと前から水色の実力はある自信がありましたが、それこそ主観的なものです。レーティングこそ正義なのです)。自分に競プロ的な才能があるとしたら、なんだかんだで競プロを続けたという部分だと思います。自分を見て時間かければ水色ぐらいにはなれると自信を持って欲しいです。

ここまで来たというと大袈裟ですが、友人たちと楽しく競プロできる日々に感謝します。

(このブログはどの立場の人がどのような立場の人に向けて発信しているのかがよくわかりません。)

明日から、競技longest steak始めようかな〜〜

【今更】ICPC 国内予選に参加しました (2019)

C-merです. ICPC 国内予選からもう3ヶ月以上が経ってしまいましたが,参戦記書きたいなとは思っていたので書きました.

1. 参加チーム / メンバー

今回は LionKOder というチームで参加しました.去年の CatKOder よりさらに飛躍するといったこと以外に特に意味はないです.メンバーは@AlbicillaT(4年間同じチーム), @hagyu_aya(強い1年生).

2. 準備編

特に変わったことはしていない.

  • 言語は多数決で一貫して C++ (一応GCC14前提)

  • OS は多数決でMac

  • キーボードに関しては多数決で JIS 配列(泣

  • エディタは多数決 Clion

といった次第.

偶然3コマあった授業のうち,2コマが休講になったのでラッキーであった

3. 戦略編

昨年は4完でアジア地区予選に進めたので4完早解き目指す.問題セットによっては3完早解き

4. 本番編

A問題
  • あるびんがやってくれる
    素晴らしい
B問題
  • 自分が担当(あまり記憶にない)

  • やったことあるなと思い,普通に差分の絶対値で求めましたが,これはマンハッタン距離って一般的には言うらしいです.こういう自明なやつにかっこつけた名前つけるの冗長だし,いらなくね?(しゃくとりとか),と思いつつ,こういう問題の解放の概要を数バイトで表現できるのはそれはそれで便利だなと思い,出すとまさかの WA.
    かなり焦りつつ,直して(特にペナルティはなく?)AC.
    思えば4年間同じ感じで WA してて辛いなと思いました.

  • こういうところで個性を発揮する人間にはならないようにしてください

C問題
  • はぎあがやってくれる
    素晴らしい
D問題
  • みんなで頑張る

  • 自分は,「差分の配列みたいな感じで見る〜」「どの山を生かすかどうかで場合分け〜」といった次第で良い感じに問題を分解できたかと思われる(個人の感想かつ記憶が曖昧なため不正確な内容の可能性があります)
    しかしながら,そこからナンタラ DP とかいうやつを使うのがポイントらしかったのですが,そんなの知らん〜〜

E問題
  • コーディング筋力を求められて辛い

  • あるびんが頑張ってくれたりした

5. 結果と感想

f:id:C-mer:20191021182509p:plain A,B,Cで3完でした.もう少し早ければアジア地区ということもあり残念ではある.もっとBを早く解いていれば,,,Dに固執せずにEにもっと時間を割けば,,,など改善できる点はあったと思われる.
弊学の強いチームも思ったより解けていないので難しい問題セットだと思われる(こんな情報今更誰も求めていないと思われる)
Lesages, chmod rw-rw—x, choKOdaiは頑張ってください

6. 今後

本当は入水してからブログ書きたいなあとか思ってたら,レートがどんどん下がる呪いにかかってしまったので,一生入水できないのだろうかと思って落ち込んでいます.
これで ICPC は4年目ですが,楽しかったのでよかったです.特に誘ってくれたあるびんには感謝を.
改めて,去年アジア地区行けたのはよかった. 良い経験でした
地味に現役で大学に入ったので来年も出れるという噂がありますが,あくまで噂です.

ICPCアジア地区横浜大会に参加しました(2018年まとめ)

こんにちは.C-merです.
今更なのですが,12月8,9日に行われたICPCアジア地区横浜大会について振り返りたいと思います.

実に3週間も経ってしまいまいしたし(なんか申し訳ございません),一部誇張,誤解,記憶違いあるかもしれないですが,そうゆう場合はぜひご指摘ください.

チームはCatKOder(KO大学)でAlbicilla, tokuminiと出ました.

 

1. 事前準備編
本番と同じ環境に慣れるということでCLionでコーディングしたりしなかったり,,
実行方法などに癖がある(?)ので,チームメンバー全員がそこでつまづかないというのは,良いと思った

あとは,キーボードをちょうどUS配列にしたので,その点も戸惑わずにできてよかったかと..

 

2. 8日リハーサル編
諸事情あり,朝は4時半に起き,横浜某所で5kmほど泳ぎ,そのあと図書館で少し問題を解いたりしていた
パソコンについては起動が少し遅い&初めに画面が乱れるという謎トラブルがあったりしたが特に問題なしという感じ.リハーサル用問題が普通に難しくて萎えた.

 

3. 9日 本番編
前日のabcではキャスト忘れというしょうもない理由で全完を逃してしまった(アホ)ため,テンション低め&少し寝不足といったところ.前日にコンテストは出なくても良いかも(実際,出た人が少なかったとか?(JOIもかぶっていたようです)).

〜開始〜
着実な4完を目指し,みんなでA問題を読む.自分が数字はそのまま,文字にはASCIIコードに大きな定数に足して数列として,比較する解放を思いつき(この日1番の活躍?),実装はtokuminiさんに任せて次の問題へ.そんなに遅くなく,幸先の良い滑り出しとなった.

そこからはBとCを交互に見たり見なかったり.

Cについては逆に入れるといいんじゃねとなり,自分が実装を始める.
焦って,座標という概念がわからなくなる←
サンプルケースや自分たちで考えたケースについても,通るので提出するもWAで絶望,,
そこから時間が経つ
2人に解放そのものが間違ってる可能性もあると言われ凹む.
Albicillaにループ内の実際には処理を行わないときは,continueしたら?とのことなので,とりあえずそれで提出.tokuminiさんにも助けを求めようとしたら,通った.

Bについてはtokuminiさんが通してくださる.

その後,Gについてもtokuminiさんが通してくださる.

D問題で解法を出せば即座に反例を返すごっこをしたり,K問題を読んだりして,終了.

 

4. 9日 コンテスト後の色々編
コンテスト後には,講評や表彰式みたいなものや,懇親会的なやつをやって楽しむことができた.(なんかしらの企業賞が欲しかったりもした..)
悪名高き情◯工学実験のために10日の企業見学ができなかったので,ここで色々な企業を見て回れたのは大変よかった.

 

5. 総括
結構tokuminiさん頼りになってしまったので,精進していきたいと思った.
楽しかったので来年も是非参加したい.
あと,風邪には気をつけましょう.

AtCoder Regular Contest 061 D - すぬけ君の塗り絵 / Snuke's Coloring

問題
AtCoder Regular Contest 061 D - すぬけ君の塗り絵 / Snuke's Coloring
beta.atcoder.jp

使用言語
C++

要点
・ある塗られたマスを含む9つの各3*3の正方形にスコアを設けてそこの数だけをカウントする
・mapで管理して,キーはpairにする
 要素へのアクセスは{,} でも make_pairでも出来るっぽい
・マスの番号が1〜Nなのに注意
・0のものについては,一つ以上塗られたマスを含んだ時に全体から引いた
・ans[0]でキャストし忘れてバグりました

所感
・Dにしては難しいと思ったのですが,どうなのでしょうか
・解説雑ですみません

コード

ull ans[10];
map<pair<int, int>, int> mp;

int main()
{
  int h, w, n;
  cin>>h>>w>>n;
  ans[0] = (ull)(h-2) * (w-2);

  REP(i,n) {
    int a, b;
    cin>>a>>b;
    FOR(dx,-1,2) {
      FOR(dy,-1,2) {
        if (a+dx<2 || a+dx>h-1 || b+dy<2 || b+dy>w-1)
          continue;

        //cout<<a<<" "<<b<<" "<<a+dx<<" "<<b+dy<<endl;
        pair<int, int> tmpp = {a+dx,b+dy};//make_pair(a+dx,b+dy);
        //ここの入力形式はどちらでも問題がないようです
        if (mp.find(tmpp) == mp.end()) {
          mp[tmpp] = 1;
          ans[0]--;
        } else {
          mp[tmpp]++;
        }
      }
    }
  }

  for (auto itr : mp) {
    ans[itr.second]++;
  }

  REP(i,10) {
    cout<<ans[i]<<endl;
  }

  return 0;
}

SRM 519 Div 1 - Problem 250 BinaryCards

問題
SRM 519 Div 1 - Problem 250 BinaryCards
TopCoder Statistics - Problem Statement

使用言語
C++

問題概要
0から63までの数字のカード(全て1枚ずつ)を使う.数字xのカードには2ˆxのドットが描かれている.
最初全てのカードは伏せられている.AからBまでの連続する整数について,カードを表にして,カードに描かれるドットの数で表す.表になったカードのドットの合計を求める.

方針
表のカード(のドットの数)について考えると,
 6: 2 4
 7: 1 2 4
 8: 8
となる.表になったドットは 1+2+4+8=15
→各数字のビット和でわかりそう

しかし,O(N)で最大10ˆ18になるので連続する整数のビット和を全て取るのは現実的でない.

ここで単純化して考える.
A = 2ˆ30 + 1, B = 2ˆ30 + 24とする.
答え(Cとする)にはもちろんA, Bが含まれる(C|A==A, C|B==B)
差分について考えると,23 = 16 + 4 + 2 + 1 = 0x10111
これの最上位ビット以下のは全て1になりそう(例 20ˆ3+8)
なのでそれ以下を1にする.

所感
・わかりにくすぎる問題文に反して,楽しい問題
・コード短すぎ問題

コード

class BinaryCards {
    public:
    long long largestNumber(long long A, long long B) {
      ll ans = A | B;
      //差分の最上位ビット以下のビットが1になるようにOR
      //どうせ最上位以下のビットは全て1になるので,最上位1つずつ左シフトしてforループ
      for (ll i = B - A; i > 0; i = i>>1) ans |= i;
      return ans;
    }
};