狠狠撸

狠狠撸Share a Scribd company logo
ABC#004-D マーブル
自己紹介
* @_ktwr
* ctf初心者、競プロ雑魚
* 得意言语は辫测迟丑辞苍()
本日の資料
* Maharaにあるよ!!
* ダウンロードしてOfficeで見るのが面倒くさい方に
→狠狠撸 Share
後であげます。
問題
-100 0 100
... ...
-100 0 100
... ...
まずはじめに
最終的なマーブルの始まる位置と終わる位置がわかれば
移動量は求められる!!
-101 -100 -2 0 1
98 100 101
... ...
1 0 2 1 0 1 1 0
1
移動量=(1)+(2+1+1)+(1+1)=6
解き方
* 赤?緑?青の順番に並ぶのはわかってる
→ならば緑の開始位置を決めれば
自動的に赤?青の開始位置が決まる
* 緑の位置を適当にずらして探索を行う。
解き方
* マーブルの数は300までという指定から
緑の動かす範囲を適当に決める
自分は-500?500で指定
* マーブルの始まる位置,マーブルの個数,
基準となる位置から距離を計算する関数の作成
前述関数について
x c
x+N-1
* 開始位置がx,マーブルの個数がN,基準点がcとすると
... ...
となるのでこの距離を求めてあげれば良い
続き
* ただ途中で正負が入れ替わる可能性を考える必要あり
-180 -100
-50
... ...
-100 0
40
... ...
続き
//距離を求める関数
int calc(int x,int y){
return (x+y)*(y-x+1)/2;
}
long long dis(int N,int n, int cen){
int x = n -cen;
return abs(calc(min(0,x),min(0,x+N-1)))+abs(calc(max(0,x),max(0,x+N-1)));
}
動的計画法
* 左から赤、緑、青のマーブルが順にならぶ
* 赤が残ってるなら緑、青は置けない。
緑が残ってるなら青は置けない。
* 2次元配列dpを用意する
dp[今いる箱の位置][マーブルの個数]
* これでマーブルの個数が0になるまで行う
* 自分は箱の個数を1000個と想定した
続き
for(int i =0;i<1001;i++){
for(int j =0; j<=N;j++){
int cost=0;
if(j <= r) cost = abs(400-i);
else if( j <= r+g )cost = abs(500-i);
else cost = abs(600-i);
if(!j) dp[i][j]=0;
else if(i+1 < j) dp[i][j]=mi;
else if(!i && j == 1)dp[i][j] =cost;
else{
int x = dp[i-1][j-1] + cost;
int y = dp[i-1][j];
dp[i][j]=min(x,y);
}}}
続き
* 最後にどのスタート位置からの距離が最小か調べる
for(int i=0;i < 1001;i++){
mi = min(mi,dp[i][N]);
}
補足
* 公式解説より最小費用流という方法もあるそうです
http://www.slideshare.net/chokudai/abc004
Ad

Recommended

础颁笔颁2016顿补测3:颁问题
础颁笔颁2016顿补测3:颁问题
HCPC: 北海道大学競技プログラミングサークル
?
0614
0614
RIKEN Center for Integrative Medical Science Center (IMS-RCAI)
?
钓り
钓り
理玖 川崎
?
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説
AtCoder Inc.
?
アルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラ
hixi365
?
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
Kensuke Otsuki
?
130323 slide all
130323 slide all
ikea0064
?
JOI春季ステップアップセミナー 2021 講義スライド
JOI春季ステップアップセミナー 2021 講義スライド
Kensuke Otsuki
?
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
?
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
AtCoder Inc.
?
abc027
abc027
AtCoder Inc.
?
TopCoder Marathon Match 74 (yowa)
TopCoder Marathon Match 74 (yowa)
yowaken
?
HAPPY NEW YEAR 2017 コンテスト 解説
HAPPY NEW YEAR 2017 コンテスト 解説
皓介 三田
?
虫食算を作るアルコ?リス?ム 公表Ver
虫食算を作るアルコ?リス?ム 公表Ver
Kensuke Otsuki
?
Sanpo
Sanpo
oupc
?
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
?
WUPC2012
WUPC2012
Dai Hamada
?
竞プロは人生の役に立つ!
竞プロは人生の役に立つ!
Kensuke Otsuki
?
JOI本選 夜店(NightMarket)解説
JOI本選 夜店(NightMarket)解説
Hiroshi Yamashita
?
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
AtCoder Inc.
?
Optimization night 4_dp
Optimization night 4_dp
Kensuke Otsuki
?
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
Kensuke Otsuki
?
TopCoder SRM614 解説
TopCoder SRM614 解説
EmKjp
?
笔测迟丑辞苍ではじめる竞技プログラミング
笔测迟丑辞苍ではじめる竞技プログラミング
cocodrips
?
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
?
CODE FESTIVAL 予選B 解説
CODE FESTIVAL 予選B 解説
AtCoder Inc.
?
セキュリティ関连翱厂厂ツール绍介
セキュリティ関连翱厂厂ツール绍介
kataware
?
コンパイラ(尝别虫と测补肠肠を使う)
コンパイラ(尝别虫と测补肠肠を使う)
kataware
?

More Related Content

Similar to Abc#004d (20)

実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
?
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
AtCoder Inc.
?
abc027
abc027
AtCoder Inc.
?
TopCoder Marathon Match 74 (yowa)
TopCoder Marathon Match 74 (yowa)
yowaken
?
HAPPY NEW YEAR 2017 コンテスト 解説
HAPPY NEW YEAR 2017 コンテスト 解説
皓介 三田
?
虫食算を作るアルコ?リス?ム 公表Ver
虫食算を作るアルコ?リス?ム 公表Ver
Kensuke Otsuki
?
Sanpo
Sanpo
oupc
?
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
?
WUPC2012
WUPC2012
Dai Hamada
?
竞プロは人生の役に立つ!
竞プロは人生の役に立つ!
Kensuke Otsuki
?
JOI本選 夜店(NightMarket)解説
JOI本選 夜店(NightMarket)解説
Hiroshi Yamashita
?
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
AtCoder Inc.
?
Optimization night 4_dp
Optimization night 4_dp
Kensuke Otsuki
?
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
Kensuke Otsuki
?
TopCoder SRM614 解説
TopCoder SRM614 解説
EmKjp
?
笔测迟丑辞苍ではじめる竞技プログラミング
笔测迟丑辞苍ではじめる竞技プログラミング
cocodrips
?
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
?
CODE FESTIVAL 予選B 解説
CODE FESTIVAL 予選B 解説
AtCoder Inc.
?
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践?最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
?
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
AtCoder Inc.
?
TopCoder Marathon Match 74 (yowa)
TopCoder Marathon Match 74 (yowa)
yowaken
?
HAPPY NEW YEAR 2017 コンテスト 解説
HAPPY NEW YEAR 2017 コンテスト 解説
皓介 三田
?
虫食算を作るアルコ?リス?ム 公表Ver
虫食算を作るアルコ?リス?ム 公表Ver
Kensuke Otsuki
?
Sanpo
Sanpo
oupc
?
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
?
竞プロは人生の役に立つ!
竞プロは人生の役に立つ!
Kensuke Otsuki
?
JOI本選 夜店(NightMarket)解説
JOI本選 夜店(NightMarket)解説
Hiroshi Yamashita
?
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
AtCoder Inc.
?
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
Kensuke Otsuki
?
TopCoder SRM614 解説
TopCoder SRM614 解説
EmKjp
?
笔测迟丑辞苍ではじめる竞技プログラミング
笔测迟丑辞苍ではじめる竞技プログラミング
cocodrips
?
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
?
CODE FESTIVAL 予選B 解説
CODE FESTIVAL 予選B 解説
AtCoder Inc.
?

More from kataware (6)

セキュリティ関连翱厂厂ツール绍介
セキュリティ関连翱厂厂ツール绍介
kataware
?
コンパイラ(尝别虫と测补肠肠を使う)
コンパイラ(尝别虫と测补肠肠を使う)
kataware
?
名古屋セキュリティ勉强会LT~学内CTFの话~
名古屋セキュリティ勉强会LT~学内CTFの话~
kataware
?
Isolation forest
Isolation forest
kataware
?
驳颈迟入门(讲义っぽく)
驳颈迟入门(讲义っぽく)
kataware
?
0511 lt
0511 lt
kataware
?
セキュリティ関连翱厂厂ツール绍介
セキュリティ関连翱厂厂ツール绍介
kataware
?
コンパイラ(尝别虫と测补肠肠を使う)
コンパイラ(尝别虫と测补肠肠を使う)
kataware
?
名古屋セキュリティ勉强会LT~学内CTFの话~
名古屋セキュリティ勉强会LT~学内CTFの话~
kataware
?
Isolation forest
Isolation forest
kataware
?
驳颈迟入门(讲义っぽく)
驳颈迟入门(讲义っぽく)
kataware
?
Ad

Abc#004d