惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
雷峰网
雷峰网
The Register - Security
The Register - Security
The Cloudflare Blog
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
I
InfoQ
博客园 - 三生石上(FineUI控件)
H
Help Net Security
博客园 - 司徒正美
Vercel News
Vercel News
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
云风的 BLOG
云风的 BLOG
B
Blog
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
L
LangChain Blog
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Recorded Future
Recorded Future
小众软件
小众软件
Martin Fowler
Martin Fowler
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Apple Machine Learning Research
Apple Machine Learning Research
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
Y
Y Combinator Blog
V
Visual Studio Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
V
V2EX
Blog — PlanetScale
Blog — PlanetScale

hayato

Chromium's DOM Deep Dive: Understanding Shadow DOM and Tree Structures - hayato Introducing the Task Scheduler in Chromium's Network Stack: A 0.3% Improvement in Loading Speed - hayato 出版のお知らせ 「普通の人が資産運用で99点をとる方法とその考え方」 - hayato Resource loading with Content Addressable Bundles - hayato 普通の人が資産運用で99点をとる方法とその考え方 - hayato Imperative Shadow DOM Distribution API - hayato Google にソフトウェアエンジニアとして入社して 10 年と 10 日がたちました - hayato Web のつくりかた: ソフトウェアエンジニアリングと雰囲気で理解する Web 標準とブラウザのつくりかた - hayato ブラウザのしくみ: データ構造とアルゴリズムと雰囲気で理解する DOM と Shadow DOM - hayato Rust が最強のプログラミング言語である証明 - hayato 六本木ではたらくソフトウェアエンジニアへのよくある質問とその答え (FAQ) (2015 - 2017) - hayato What's New in Shadow DOM v1 (by examples) - hayato Simple timer application for the pomodoro technique - hayato Google の面接試験で出る (はずがない)「海賊と金貨」問題を空気を読まないでプログラムで解いてみる - hayato hayato.io (4topcoder) - hayato SRM432 - hayato SRM405 - hayato SRM386 - hayato SRM385 - hayato SRM384 - ゲーム - hayato SRM369 - hayato SRM368 - hayato SRM366 - typo 2 連発 - hayato Python - generator で素数生成 - hayato New Launguage - 新言語追加の予定? - hayato lxml で HTML スクレーピング - hayato SRM358 - Today is a Bad Day (-50). - hayato SRM349 FizzBuzz 問題が簡単すぎるそんなあなたへ。「赤いマーブル問題」。 - hayato Suffix Array - hayato google-code-prettify を導入してみる - hayato Subset の生成 - hayato 2006 年のまとめ - SRM332 - hayato Google Code Jam 2006 - Championship Round - hayato Blogger Beta に移行 - hayato Google Code Jam 2006 - Round1 に挑戦 - Generics と AutoBoxing - hayato Google Code Jam 2006 - Qualification Round 通過 - hayato Google Code Jam 2006 - Qualification Round に挑戦 - hayato Google Code Jam 2006 - Practice1 - hayato Google Code Jam 2006 - 開催決定 - hayato Stay tuned... Global Google Code Jam 2006 - 秋に開催? - hayato SRM308 - Hard DP - hayato SRM304 - 条件付確率 - hayato JavaWorld に寄稿しました - hayato 2006 TopCoder Open Final Round - hayato IBM Rational Software Development Forum Tokyo で講演します - hayato SRM298 - ひとふで書き - hayato SRM293 - ビンゴ - hayato 2006 TopCoder Open - Round1 撃墜 - hayato 2006 TopCoder Open - Odds 発表 - hayato 2006 TopCoder Open Qualification Round - hayato SRM291 - OutOfMemory - hayato デブサミ 2006 で講演します - hayato SRM287 - 気分は中学生?連立2元方程式 - hayato SRM281 - 2006 年はポイントゼロスタート - hayato SRM280 - Challenge 祭り - hayato SRM277 - 初賞金げっと - hayato マラソン・マッチ - hayato reStructuredText で blogger - hayato 2006 TopCoder Open - NSA がスポンサーに - hayato SRM276 - お買い物は楽しく DP で - hayato SRM273 - bit 演算は int で行われるのね - hayato SRM272 - Division1 - 4 度目の正直 - hayato JavaOne Tokyo で講演します - hayato SRM270 - Integer == Integer - hayato SRM268 - Division2 脱出 - hayato SRM266 - NASA, we have a problem... - hayato SRM265 - Division2 落ち... - hayato SRM262 - 初 Division1 は Typo に終わる - hayato
SRM260 - TopCoder への挑戦のはじまり - hayato
2005-08-27 · via hayato

TopCoder とは,世界中のトッププログラマが集まり,プログラミングスキルを競いあっているサイトです.毎週のようにオンラインでプログラミングコンテストが行われています.面白そうなので参加してみました. SRM260 に挑戦です.SRM とは Single Round Match のことです.定期的に(週に 1 回ほど)開催されています.

先日開催された Google Code Jam 2005 でこのサイトを知った人が多いのかいつもより参加者が多いらしく(私もその一人),驚いている様子が伺えます(800 名オーバー).

Chat Area

レーティングが 1200 以上の人は Division1,それ以下の人は Division2 になります. Division1 の方が問題が比較的易しくなっています.初参加の自分は,Devision2.

簡単に SRM の流れをおさらいしておくと

  • 開始時間の 5 分前までに Registration を行う
  • 参加者は約 20 名づつ,Room にアサインされる
  • 問題は 3 問.制限時間は 75 分.言語は Java, C++, C#, VB から選択できます.
  • 5 分休憩
  • 15 分のチャレンジタイム.この時間では,同じルームの参加者が提出したコードを見ることができます.バグを発見し「チャレンジ」に成功すると 50 ポイントもらえます.

ということです.この 4 つから選ぶなら(無難に?)Java でいきます.以下のような問題が出題されました.(code) は私が提出したコードです.

250 点問題.特に難しいところはないです.軽くこなしたいところ.

500 点問題.中心(0,0),半径 r の円上に座標が(整数, 整数)の形式を満たす点はいくつ存在する?って問題です. ちょっと,なやむ.単に (x, y) ( 0 <= x, y <= r) を全部調べていたらタイムオーバするってのが目に見えてるので,なんらかのちょっとした工夫が必要.

1000 点問題. サイズが rows x cols の盤上を 1 x 1 x 3 のブロックがごろんごろんと動くとき,ある地点からゴールの地点まで最短,何 Move で到達できるか?という問題です.条件として,

rows and cols will be between 1 and 100, inclusive.

とあるので,状態空間はたかだか 100 x 100 x 3 くらいです. BFS (Breadth First Search) で問題ない(はず).不正な状態(盤からはみだす)をちゃんとチェックしてやれば,なんとかなるか..

結果

制限時間つきでコーディングするなんていう経験が普段ないもんだから,あせるあせる.で,なんとか 3 問とも Submit しました.問題を Open してから,Submit するまでの時間が早ければ早いほどポイントが高くなります.

SUBMIT_RESULT__

75 分のコーディングタイムが終了すると,5 分の休憩があります.その後,15 分間の Challenge Time が始まりました.

自分の 500 点コードが撃墜された瞬間..

CHALLENGE__

Challenge で使用されたパラメータ(円の半径)は入力条件の最大値である 2000000000 です.その結果は

"The code execution time exceeded the 2 second time limit."

2 秒以上実行時間がかかるのは認められないってことですね..なるほど..このように,あらかじめ,必要な上限のみに制限しておけば 2 秒以内だったか..

long r = (long) Math.sqrt(rSquare) + 1;
long y = r;
for (long x = 0; x < r; x++) {

自分もどきどきしながらひとつ Challenge してみました.結果は成功(+50 点).

Challenge Time が終わると,ひとまず終了です.全員の Submit されたコードに対して System Test が走ります. System Test に落ちると,どんなに早くその問題を Submit していてもゼロ点です.

System Test の結果です. ( Room Statistics )

Room Statistics

250 点問題と 1000 点問題は無事 System Test に通りました. 1000 点問題は 2 回チャレンジをうけています.そんなに「間違えてる」ふうに見えたのかなー.

レーティングはこうなりました.

Rating

今日の教訓

  • 2 秒以内という時間制限を忘れないように
  • いちばん時間がかかるケースをちゃんと考慮しておくように

なかなか普段は味わえない緊張感があって,面白かったです. レーティングシステムというのがいいですね.また挑戦してみたいです.