Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
About累積和
Search
Catupper
August 22, 2013
How-to & DIY
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
About累積和
ぷろ
しゅみ
るいせいき
わ
Catupper
August 22, 2013
Transcript
29 slides
なつやすみは突然に ひとなつの 競技プログラミング講座
ぱちぱちー 累積和
問題 • 長さ100,000の数列があります • いろいろな区間についてそこの合計を聞くので答えて – 100,000くらい聞く • 例: {1,
4, -1, 2, 5, 9, 10, -4, 5, 0} – 0〜7は? → 26 – 2〜4は? → 6 – 3〜9は? → 27 – …
愚直にやると? • 聞かれるたびにいちいち足して計算する – 最悪100,000 * 100,000で 10^10 – 遅い
そこまでの和をもつの • 累積和という概念をつかうとうまく行く – どこかからどこかまでの和のこと – 今回は一番左からそこまでの和 • 要素A[i]以左の要素の総和をS[i]とする •
A[l] + A[l + 1] + A[l + 2]... A[r] = S[r] – S[l – 1] • S[i]をすべて保存しておけば一回引き算するだけ – 計算は100,000回だけになる
これこそが 累積和
基本概念 • 連続した範囲の総和を持つこと • それを使うことで計算量を減らす • どう使うかはあなたが考える
たったの これだけ
演習問題 • AOJ0549 • 一直線上に宿屋がたくさんならんでいる • 旅人がその宿屋をある順番でめぐる • そのときの総移動距離を求めよ •
簡単なので考えてみて
Thinking Time • 3分で答えを考えてください • コードは実装しなくていいです
例題 • 最初は全部0の数列があります – サイズは10,000くらい • 連続した範囲に1足す操作をたくさんします – 10,000回くらい •
操作を全部し終わった後の数列の状態を教えて
わかりやすい図
ためされる頭脳 どうやってとくのか
逆転の発想 • さっきまでは、状態の累積和をとっていた • 今度はなにかの累積和が状態になるように考える • 元の状態を変えると累積和がどう変わるか考えてみる
+1してみる • 累積和する前のもの • 累積和をとった後
考察 • 累積和前の数列に1を足すとそれ以降全てが一様にたさ れる • 連続した範囲に一様に値を足すことの代わりになる – だけど余計なところまでたされてしまう • 余計なところは-1して帳尻をあわせる
-1でちょうじりあわせ • 累積和する前のもの • 累積和をとった後
これが港でゆうめいな いもす法
演習問題 • AOJ0231 • 重量制限がある崩れそうなヤバイ橋(ヤ橋)がある • その橋を何人かが渡ります – それぞれの渡り始め、渡り終わりの時刻 –
それぞれの体重 – が与えられる • 崩れるか崩れないか判断してください • 崩れるならいつ崩れるか教えてください
Thinking Time • 5分で答えを考えてください • コードは実装しなくていいです – ちょっとむずいです • わかった人は前に出て発表
– 先着1名
次元をこえて 2次元への応用
考え方はいっしょ • 累積和のつよみ – 1次元配列よりも2次元配列で本領を発揮する • 考え方は変わらないのでとりあえず例題
応用問題 • AOJ0560 • Jangle, Ocean, Iceの3種類の地形からなる地図が与えら れる – 2次元 1000
* 1000のマス目状 • ある長方形の範囲の中のJ,O,Iの数を教えてください – ということを100,000回します • うまく処理して
参考までに愚直解 • 聞かれるたびにいちいち答えるとクソおそいです – 1,000 * 1,000 * 100,000 =
10^11 – 数分かかる • 今回の問題はO(10^6)でとけます – がんばって考えよう
Thinking Time • 5分で答えを考えてください • コードは実装してもいいです – 時間かかるのでせんでもいいです • わかった人は前に出て発表
– 先着1名
答え • (0,0)を頂点にする全ての長方形の結果を持っておく – 1,000 * 1,000個 → O(10^6) –
A[i][j]を長方形(0,0) (i, j)の結果とする • 長方形(a,b) (c,d)の結果は – A[c, d] - A[a, d] – A[c, b] + A[a, b] – 一回の計算で出せる – O(100,000)
ちなみに 日本情報オリンピック 2010 本選第一問
宣伝 • 夏休みおわった直後くらいに申し込み始まります • 応募してちょ – 無料 – 参加は家から可能 –
予選を通れば東京にタダでいける – 代表に選ばれれば台湾にタダでいける – 来年はカザフスタン
その他応用問題たち • AOJ0509 – Sheets – メモリの工夫が必要 • AOJ0574 –
Nails – DPでもとけます • AOJ0580 – Fish – 座標圧縮が必要
More Decks by Catupper
See All by Catupper
ants' roots
catupper
1
2.7k
Trianguler
catupper
0
220
sort conference
catupper
2
130
計算量の話
catupper
0
1.2k
Graph is Fun
catupper
0
180
For You
catupper
1
180
Other Decks in How-to & DIY
See All in How-to & DIY
JAWS-UG/AWS Community Update 彩の国埼玉支部1周年記念
awsjcpm
1
230
エッジで動くNode-REDを作る実験 #noderedjp #noderedcon
n0bisuke2
0
690
AWS Community Builders Update - JAWS-UG Tokyo and Sainokuni
awsjcpm
3
360
おっきなガジェットの回線事情
2bo
1
260
同僚を社外コミュニティに誘うのは 楽しいからだけじゃないよね。 あなたは、なぜ同僚と社外コミュニティに参加するのですか?私は組織を良くしたかったからです。 そんな私が同僚と社外コミュニティに参加するときに気をつけていることを話すよ。/ Tips to onboard colleagues into communities
camel_404
0
160
放っておくと怖い睡眠負債について/fjordbootcamp-251122
yuukago
3
420
OpenClawハンズオンでのトラブルとデバイス向けなんちゃらクロー #IoTLT vol133
n0bisuke2
1
330
Linuxが動く自作SBCを作る話.pdf
daimiya
1
1k
ときメモは 運営が30年かけて “実プレイ”していた
mzryuka
1
190
EjecTea 2026 / 20260228-osc26tk-ejectea
akkiesoft
0
1.1k
画面の向こうから「気づき」を得る 画面の向こうを「物差し」として捉える
subroh0508
1
500
餃子コミュニティの活性化/TechGYOZA
nishiuma
2
440
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.6k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
60k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
4
1.2k
Designing for Timeless Needs
cassininazir
1
560
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
The Limits of Empathy - UXLibs8
cassininazir
2
780
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
990
Paper Plane
katiecoart
PRO
6
55k
How Software Deployment tools have changed in the past 20 years
geshan
3
35k
Building a Scalable Design System with Sketch
lauravandoore
464
34k