程式隨筆

Never give up!


  • Home

  • Categories

  • Archives

  • Tags

UVA429

Posted on 2017-05-04 | In Competitive Programming , UVa

Word Transformation

Abridge problem statement

給你一個字典,請你將給定的字串 $A$ ,利用字典中的字,在最少次數下,轉換成字串 $B$。其中,轉換過程中,連續兩字串只能差一個字母,且長度需相同。

輸出最少次數為多少。

Solution sketch

利用 BFS。一定要記得,從queue中移除的點,不能再被加入queue中,不然會TLE

可以加速的一個方法,是先把可以轉換的連續兩字加上一條邊。之後在圖上做 BFS 會快很多,畢竟不用每次都做字串比對。

Read more »

ITSA 2016 桂冠賽 挑戰組 第五題

Posted on 2017-05-03 | In Competitive Programming , ITSA 桂冠賽 , 2016

Quotient Harmonic Series 商調和級數

其實我覺得這題有個觀察是說,$m$ 所除上的除數可以看成 $index$,然後 $\frac{m}{除數} = 商$ 且 $\frac{m}{商} = 除數$。

這題有點得從操作中感覺一下,所以拿 $m = 9$ 來示範一下吧。

我們倒著找回來,先設定除數為 $b = 9$,$q = \frac{m}{b} = 1$,這個商也就是要拿來加總的數值。個數的話,利用文章一開始所說的觀察,我們可以知道 $b\prime = \frac{m}{(q + 1)} = 4$ 就會是下一個非此 $q$ 的位置,也就是除數。所以 $b\prime - b$ 就是重複次數,且下一回合的 $b$ 就是 $b\prime$。

Read more »

(Template) Connected component

Posted on 2017-05-03 | In Competitive Programming , Template , Graph

BCC and SCC,使用 Tarjan 來求取。

Read more »

(Template) Articulation point and Bridge

Posted on 2017-05-02 | In Competitive Programming , Template , Graph

割點 與 割邊 模板

基本思維就是找一點把圖吊起來(利用DFS),並利用 back edge 來更新 low 值。

Read more »

上系統程式課程所用的 Docker Image

Posted on 2017-05-01 | In Docker

系統程式需要使用到 Ubuntu 環境,但是手頭上的電腦是 Unix-based 的 MacOS。實在是不想裝設虛擬機畢竟太佔空間,所以就來玩個 docker,效果真的奇佳!

感謝光宇大大的神支援!讓這個 dockerfile 可以這麼完美。

目前已經 deploy 到 DockerHub 上,可以直接 pull 下來,不用自己 build 囉!

Read more »

N 皇后,回味大一程式作業

Posted on 2017-05-01 | In Random code

N 皇后

純粹懷舊。

Read more »

ITSA 2016 桂冠賽 闖關組

Posted on 2017-05-01 | In Competitive Programming , ITSA 桂冠賽 , 2016

ITSA 2016 桂冠賽 闖關組

只寫了第一到第六題,希望學弟妹們看得懂哈哈。

Read more »

Google CodeJam 2017 Round 1C Problem B

Posted on 2017-05-01 | In Competitive Programming , Google CodeJam

Parenting Partnering

Abridge problem statement

有 A, B 兩人,每人一天都必須花 720 分鐘顧小孩,給定一些 A, B 各自不能顧小孩的時間,請你安排最少換手次數的顧小孩時間表。

Solution sketch

核心想法,如果 gap(就是 A 或是 B 有空的所有區間)兩端的事件都屬於 A 或是 B,那就看看能不能把區間的時間全部給 A 或是 B來顧,這樣可以少掉換手的次數。如果不行,那一定是 ABA 或是 BAB 了,所以一定會換手兩次。

如果 gap 兩端事件不同,那就一定換手一次。至於何時換手,不管。 (ABABA…AB 或是 BABABA…BA 都是沒有意義的分配,因為你一定可以 reduce 成 AB 或是 BA 就好)。

Read more »

Codeforces Round 410 Div2 Problem C

Posted on 2017-04-27 | In Competitive Programming , Codeforces

Mike and gcd problem

Solution sketch

這個講解比官方解析棒很多!

大體而言,全部都是偶數,一定ok。其餘,觀察兩奇數需要一次操作即可變成偶數偶數,一奇數一偶數需要兩次操作。

注意 gcd(all number) != 1 這個特判不能省下 (Wrong answer on test 40)。

Read more »

Codeforces Round 408 Div2 Problem D

Posted on 2017-04-16 | In Competitive Programming , Codeforces

Police Station

Solution sketch

直接從每個警察局直接 DFS 到距離 $d$ 後拔邊會GG。(可以試試看:第一筆 test case 在 $city\ 5$ 加一條邊到 $city\ 7$ ,跑跑看就懂了)

AC 解利用的性質是題解說的,$k - 1$條路會被拔掉,變成 $k$ 個 forests。做法是利用 BFS 從所有警局出發(注意多警局在一城市的問題),走到已經走訪過的城市的話,那條邊就可以拔掉。

P.S. $step > d$ 的理由,可以用下面的測資思考。概念上是說,在沒距離可用後的邊,也要檢查看看能不能拔掉。

1
2
3
4
5
6
7
6 6 0
1 2 3 4 5 6
1 2
2 3
3 4
4 5
5 6

Read more »
123…7
Henry Tseng

Henry Tseng

64 posts
18 categories
57 tags
© 2017 Henry Tseng
Powered by Hexo
Theme - NexT.Pisces