2013-01-01から1年間の記事一覧

CodeChef October Challenge 2013を頑張ってみた

October Challenge 2013に参加しました。 初めて7問(正確には6.143問)解けたので参加記書きます。以下は解いた人が多い順です。 Helping Lira N個の三角形が与えられる。最大の面積と最小の面積を求めよ。 ライブラリがあったのでやるだけ。ソースコード M…

[図形][C++] 多角形クラスを作ってみた

多角形の面積を簡単に出す方法を@hirokazu1020さんに教わったので多角形クラスPolygonを実装してみました。ほとんど蟻本のコピーです。 //二次元座標(from 蟻本) typedef struct _PT{ double x, y; _PT() {} _PT(double x, double y) : x(x), y(y){ } _PT op…

ミラー・ラビン素数判定法を使ってみた

CodeChefのMay Challenge 2013に挑んだ時に解けなかったWitua and Mathを解いてみました。 Witua and Math 整数Nが与えられる(2 オイラーのtotient関数をφとするとき、φ(i)/iを最大とするi(2 totient関数のWikipediaを見ると、この問題は「N以下で最大の素…

Vimのpegjs用シンタックスファイルを改造してみた

研究でPEG(解析表現文法)を扱っており、パーザージェネレータにPEG.jsを使っています。 pegjs形式のファイルはJavaScriptとPEGの文法規則を並べたものから構成されているので、上手いカラーシンタックスが出来ません。一番近いのはJavaScriptのシンタック…

分数の話

Equations整数Nが与えられる。 (1/x) + (1/y) = 1/N! を満たす正数(x, y)の組の数(mod 1000007)を求めよ。 1000000!なので数え上げ系は無理。 変形すると (x + y)*N! = xy なのでこの式と組み合わせを上手く使って解くのかと思ったけどどうも上手くいかない…

切断点や橋を求めるTarjanのアルゴリズム

グラフ理論において、切断点(cut vertex, articulation point)とは無くす事でグラフの連結成分の数が増える頂点のことをいい、橋(bridge)とは無くす事でグラフの連結成分の数が増える辺のことをいいます。 グラフの頂点集合に対してDFSを行うと森(木の集ま…

コピー先に連番が扱えるようにcpの拡張を作ってみた

今までプログラミングコンテストに望む際に、template.cppをA.cpp, B.cpp, ... , E.cppにコピーする必要があり、これが非常に面倒でした。 先日zmvコマンドの記事(http://mollifier.hatenablog.com/entry/20101227/p1)を読んで、もしかして簡単に連番のcpが…

二部マッチング

前から最大流問題を解いてみたいなーを思っており、蟻本を購入したのをきっかけに、この前参加したFacebook Hacker Cup 2013 Round 1の2問目「Security」が二部マッチングの問題だったので解いてみました。 Security {a, b, c, d, e, f}からなるキー k があ…

March Challenge 2013, TCO 2013, Codeforces #172

いくつかコンテストに出たので記録しておきます。 March Challenge 2013 http://www.codechef.com/MARCH13CodeChefのLong Contest。 Tourist Translations やるだけ。 Scalaでやってみました。 やっぱり関数型言語のmap関数は便利です。 ちなみにInt型をChar…

最強のシェル zsh

今までシェルはbash一筋だったのですが、最強のシェルと聞いてzshを使ってみました。Macには標準でもzshが入っていましたが、せっかくなので最新版をインストール。 インストールはHomebrewで brew install zsh で一発で出来ます。 デフォルトシェルの変え方…

BITを使ってみた

前に出たCodeChefのコンテストで解けなかった問題を解いてみました。Magic Board http://www.codechef.com/problems/MBOARDN*NのフィールドとQ個のクエリが与えられる。 クエリは RowSet i x: i行目をx(=0 or 1)にする。 ColSet i x: i列目をx(=0 or 1)にす…

Codeforces Round #166, CodeChefとか

EclipseのC++プラグインCDTがすごい使いやすいんですが、最近デバッグすると飛んだりします。しかも恐ろしいことに頻度が上がってきているような気がする・・・。 February 2013 Challenge http://www.codechef.com/FEB13CodeChefのロングランコンテストに出…

ARC12とZOJ

最近ようやくEclipseのテンプレート機能を有効活用し始めました。for文とか早く入力出来て便利ですねー。もっと早くScannerとPrintWriterをテンプレート化しておけば良かった。 AtCoder Regular Contest #012 http://arc012.contest.atcoder.jp/ A - 週末 英…

コンテストラッシュ2

ここ(http://wikiwiki.jp/kyopro/?FrontPage)を見て面白そうなOnline Judgeがあったのでいくつか登録してみました。あとFacebook Hacker Cupの結果を。 Facebook Hacker Cup 2013 Round 1 https://www.facebook.com/hackercup/problems.php?round=18989011…

コンテストラッシュ

最近プログラミングコンテストがやけに集中して開催されていたので、いくつか出てみました。 Facebook Hacker Cup 2013 Qualification Round 就活のためにと思って登録したFacebookでしたけど、コンテストなんてやっているとは。 1.Beautiful strings https:…

Codeforces Round #162 (Div. 2)に参加してみた!

http://codeforces.com/contest/265登録したもののなかなか参加出来なかったCodeforcesについに参加しました。 Codeforcesは形式がTopCoderに似ていて、得点は時間依存で、hackというTopCoderの撃墜があります。ただし、hackはコーディング中に行うという点…

AtCoder Regular Contest #011に参加してみた

久々のプロコン! A - 鉛筆リサイクルの新技術 そのまま実装すればOK。10分くらい。 ソースコード B - ルイス・キャロルの記憶術 Bにはめずらしくこれも基本的に実装するだけ。終わった時点で30分くらい経過。 ソースコード C - ダブレット ある単語first、l…

JavaScript Engine

研究でJavaScriptを使うことになり、JavaScriptを簡単に実行出来る環境が必要になりました。 Google Chromeを使ってやるのも無理ではないのですが、やはり毎回ブラウザを立ち上げたくないです。RubyのirbとかPythonのREPLみたいな対話式環境と、jsファイルを…

Scalaを使ってみた

前々からScalaを使ってみたいと思っており、Competitive Programming Advent Calendar Div2012でlizanさんのScalaで競技プログラミングしてみるの記事を見てちょっとやってみようかと使ってみました。Scalaは最近ちょっと熱い(らしい)、オブジェクト指向と…