はじめに 最近,よくPythonを使って競技プログラミングに参加しています.そこで競プロの問題を解くときに書くことの多い単純な処理について,Python3のコードを基本的なところからまとめてみます.文字列操作やデータ操作に慣れると,本質的なアルゴリズムに専念できてより楽しくなると思います.競プロやってみたいなと思っている人の参考になればうれしいです.(もちろん競プロ以外でも参考になると思います) まずは基本 まずは基本的な入出力からです.ここで躓くと面白くないのでしっかりと押さえておきたいところです. 基本的な入出力 最近自分がはじめたAtCoderや2018年のGoogle Code Jamは入力データを標準入力で受け取り,回答を標準出力に出して結果を判定してもらいます.Pythonでは入力はstdin.readline(),出力はprint()を使うとうまくいきます. 入力データの末尾
okumuraです。前回の記事で異様にいいねがついて少々驚きました。その記事の最後に「余力があればよく使うライブラリー集とかも出すかもしれません」とかいってて何もしてなかったので、まとめました。 0. はじめに この記事は半分自分用のために作りました。私自身あんまりライブラリを使わない方なので、結構抜けているかもしれません。「推しライブラリがないぞ!」などなどはコメントに記入していただけると幸いです。また説明が雑な箇所や個人的見解、ミスなど多々見られるかもしれません。これは私の理解力不足と経験不足などなどからくるものです、申し訳ございません。 一応各項目の後には私のAtCoder,Codeforcesでの使用例も載せておきました。問題のネタバレも含むので読むときには注意してください。参考になればいいと思います。 1. sys sys.exit プログラムを終了させます。私がsysモジュール
はじめに 競技プログラミングに関連する、以下の記事が話題にあがりました。 nuc氏1つ目の記事 nuc.hatenadiary.org chokudai氏の記事 chokudai.hatenablog.com nuc氏2つ目の記事 nuc.hatenadiary.org nuc氏は、元Googleのエンジニアで面接も担当されていました。現在は某医大の特別特命准教授の方で、2007年頃に東大で競技プログラミングをされていた方のようです(氏名も役職も上記の記事のリンク先で公表されています)。nuc氏の記事は、競技プログラミングに対して「我々の目的の一つは、我々が始めてしまった競技プログラミングを我々が終わらせることです。」といった強い主張が多く、これらの記事の反応をみたのですが、 競技プログラミングをしている方々が、nuc氏の主張で不安になり、特に若い世代で、競技プログラミングをやめようとして
nuc.hatenadiary.org 競技プログラミングについての言及があったのですが、バズってる+競技プログラミングについて、納得がいかない記述がかなり多く見受けられたので、反論記事を書きました。 自己紹介 競技プログラミングの日本最大企業「AtCoder」の社長を9年間続けています。競技プログラマとして、2010年から毎年1つは世界大会で入賞しています。 完全に競技プログラミング支持側の意見なので、ポジショントークを出来るだけ排除しようと心がけているものの、完全に排除することは多分出来ていないため、多数の意見と比較してもらえると幸いです。 競技プログラミングとGoogle まずは肯定的な所から。 Googleに入るためには、競技プログラミングではなく、Googleに入るための勉強をするべき、という点に関しては、間違いなく正しいです。特にAtCoderの競技プログラミングは、常日頃から
前回の記事からだいぶ時間があいてしまいましたが、平成最後ということでひとつ書かせてください。 はじめに 先日登壇した勉強会で「データサイエンティストはエンジニアリングスキルを高めるべき」という趣旨の主張を展開した上で、「エンジニアリングスキルを高めるために競技プログラミングをやっている」と言ったところ、参加者から以下の質問を頂きました。 「競技プログラミングと実務のエンジニアリングはどのように関係があるのですか?」 本記事では上記の疑問に対する自分なりの考えをまとめていこうと思います。 アルゴリズム重視や可読性の低いコードばかりで実務に役立たないと思われがちな競技プログラミングですが、実はいろんな側面で業務に役立つことを学ぶことができます。 今回の記事はエンジニア全般を対象とした話をするので、データサイエンティストでない方にも読んでいただきたい内容になっています。 以下に当てはまる読者には
こんにちは。3/17のABC091で無事水色になる事ができたので、今までにやってきた事と水色になるために必要だと感じた事をまとめようと思います。 この記事に載っている内容はあくまで個人の意見なので、あくまで参考程度にお願いします。 また、私自身が水色最底辺の人間なので知識が浅く、いくつか間違っている点があるかもしれません。ご容赦ください。 自分語り 塚本@shibh308です。執筆時点でのレートは1215で、今までのレート推移はこんな感じ(下画像参照)です。 競技プログラミングを本格的にやり始めたきっかけは去年の12月ごろ、JOI予選で300点爆死をキメたのがきっかけでした。当時はアルゴリズムについての知識が全くなかったので、200点問題ですら解けるか怪しいようなレベルだったと記憶しています。 当時のコードはこんな感じですね。この時はB問題を時間いっぱい使ってやっと解けたみたいな状態でした
0 はじめに プログラミングコンテストチャレンジブック (通称、蟻本) は日本の競技プログラミングの普及に多大な貢献を果たしています。多くの競技プログラマたちが蟻本を手に取りながらコンテストの世界に没入して行きます。しかしながら発売から 6 年以上経過する間に競技プログラミング界隈には大きな変化がありました。蟻本的に影響が大きいのは以下の点です: POJ が国内ではあまり使用されなくなった (計算速度が遅いなど) AtCoder 上で問題を解くことが盛んになった 今回はこの完全解決を試みます。具体的には、蟻本に載っている例題たち (ほとんどすべて POJ 上の問題です) を AtCoder 上でジャッジできる問題に対応付けようという試みです。今回は初級編を扱い、中級編、上級編は別記事に続きます。AtCoder 上で見つからなかったものは AOJ, yukicoder 上の問題も載せています
「典型問題」という言葉。競技プログラミングにおいて、皆さん絶対聞いたことがある単語だと思います。少し長くやっている人であれば「典型とか言われているけど全然わからない」みたいなことも、よくあるんじゃないでしょうか? そこで、今回は、「典型問題って何なのか?」みたいな話を、ちょっとしっかり書いていこうかな、と思います。 誰もが「典型問題」と疑わない問題について 例えば、こんな問題が出たら、誰もが「典型問題」という言うでしょう。 N個の地点があり、M本の道路で結ばれている。各道路には、反対側の地点に行くためにかかる時間が与えられている。 A地点からB地点に行くまでの時間を出力しなさい。 これは、最短経路問題そのままですし、ダイクストラ法などのアルゴリズムをそのまま適用して解くことのできる問題です。これが、一番分かりやすい典型問題です。 まとめ:「名前をついているアルゴリズムをそのまま実装」が、一
要望 nCk mod 10^9+7を高速に計算したい n,k≦10^5 追記:llはlong longのことです 使ってるテンプレートはこんな感じです。 #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<b;i++) using namespace std; typedef long long ll; 高校で習うやり方でやると… ll mod = 1000000007; //--------------------------------------------------------------------------------------------------- ll C(int n, int k) { ll res = 1; rep(i, 0, k) res = (res * (n - i)) % mod; rep(
naoppyです。4/21にAtCoderで水色になることが出来ました。 一つの節目として、やってきたこととかをまとめます。 レート変移 水色時点での自分 使えるアルゴリズムとテク Twitterがやめられない 精進方法 AtCoderProblemsで過去問を解く TwitterのDMで優しい人に聞きまくる チーター本を読む スライドやQiitaの記事を読む 解くときのテク まとめ レート変移 これを見てわかるのは、まあ僕に特別な才能や強い考察力がないことぐらいでしょう。 31回も参加してます。 水色時点での自分 実力と言っても色々パラメーターがあるので、難しいですが、僕のスペックを並べます。 プログラミング歴1年、Java使い 競プロ歴は始めたのが去年(2017)の7月中旬、それなりに本気でやり始めたのが12月ぐらいです 1月ごろに300点問題は完全に安定、水色になった時点で400点が
<a href="https://atcoder.jp/contests/abc331">大和証券プログラミングコンテスト2023(AtCoder Beginner Contest 331)</a> が開催されます。 - コンテストページ: https://atcoder.jp/contests/abc331 - 開始時刻: <a href='http://www.timeanddate.com/worldclock/fixedtime.html?iso=20231202T2100&p1=248' target='blank'><time class='fixtime fixtime-full'>2023-12-02 21:00:00+0900</time></a> - コンテスト時間: 100 分 - Writer: <a href="/users/kyopro_friends" cla
この記事は Competitive Programming Advent Calendar の18日目の記事です。 はじめに アルゴリズムやその他の何らかのダイレクトに役に立つコンテンツは、 おそらく他の多くの方によって充実していることであろうかと思いますので、 私は大して役に立たないことを取り留めもなく書き綴ることにします。 なぜ私のような普通のプログラマが、 当時競技プログラミングの世界のトップに立つことになったのか。 競技プログラミングを考える 「競技プログラミング」という単語がにわかにWeb界隈を賑わせはじめたのは 私が知るかぎりではそんなに歴史のあるものではないと思います。 おそらく「競技プログラマ」という単語及びそれが指し示す人たちの出現と同時期に 適切な語を探す形で生まれたのでしょう。 しかし、プログラミングの技能を競うという試みは新しいものではありません。 それはICPCが
競技プログラミング特有の変な実装テク 15/Dec 2014 初めに この記事はCompetitive Programming Advent Calendar 2014の15日目の記事です. 競技プログラミングでは,アルゴリズムをひらめく力や,数学やアルゴリズムの知識量などが強さを決める大きな要素ではありますが, もちろん,プログラミングを使った競技である以上は,コードの実装力が勝敗を分けることもあります. 例えば,ICPC系のコンテストでは,アルゴリズムを考える能力よりも,実装量の多いプログラムをいかにバグなく高速に実装するかが重要な 問題セットが与えられることが時々あります. 競技プログラミングと無縁なプログラマーは,実装力と聞くと, クラスの構造をうまく設計したり,変更に強い美しいコードを実装する能力だと想像する人がいるかもしれません. ですが,プログラミングコンテストに必要な実装力
みなさんは何のためにプログラミングをしていますか? 仕事のため、何かをつくるため。 それも良いけれど、「強くなる」ためにプログラミングしてみませんか。 様々なジャンルのプログラミングコンテストとまだ見ぬライバルたちがあなたを待っています。 今回はアルゴリズム/AI/機械学習/セキュリティ等の様々なジャンルのコンテストとその始め方について紹介したいと思います。 ※これはPyConJPでの発表を文字におこしたものです。が、Pythonの話は殆どないです。 プログラミングコンテストとは? すべてのコンテストに共通する、「コンテストに参加する利点」 1. 自分と同じ問題を解いた、他の人の解法を知ることができる 2. 同じコンテストに出ていた、たくさんのライバルと知り合える アルゴリズムのコンテスト 問題1 問題2 TopCoder Single Round Match CodeForces AtC
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く