19
Editorial

Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

Editorial

Tổng quan

Bagravei First AC AC Editorialist

A 4 HCMUS-Intimidate amp HCMIU

172 Nguyễn Khaacutenh

B 10 hashset

95 Phạm Tuấn Nghĩa

C 206 bitset

3 Nguyễn Thagravenh Vinh

D 36 THREE

86 Lecirc Minh Quang

E 22 HCMUS-Intimidate amp CHYKB

126 Hoagraveng Xuacircn Nhật

F 64 FPTU Team1

43 Nguyễn Diệp Xuacircn Quang

G 45 THREE

25 Vương Hoagraveng Long

H 92 vector

3 Lăng Trung Hiếu

I 199 HCMUS-Ascension

2 Nguyễn E Rocirc

J 12 map

180 Nguyễn Diệp Xuacircn Quang

K 0 Lăng Trung Hiếu amp Nguyễn Ngọc Trung

L 137 THREE

5 Lecirc Anh Đức

Bảng xếp hạng chung cuộc

A Lời giải Nguyễn Khaacutenh (map) Ta sẽ sử dụng một đẳng thức quen thuộc để giải quyết bagravei nagravey đoacute lagrave

|a| + |b| = max( a b)plusmn plusmn Do đoacute

| - | + |i - j| = max( ( - ) (i-j))xi xj plusmn xi xj plusmn Hay

| - | + |i - j| = max ( + i) - ( + j)xi xj xi xj ( - i) - ( - j)xi xj -( + i) + ( + j)xi xj -( - i) + ( - j) xi xj

Từ đoacute ta coacute thể thấy rằng kết quả bagravei toaacuten sẽ la max của 2 trường hợp đầu với mọi i j Với mỗi trường hợp bagravei toaacuten trở thagravenh cho một mảng tiacutenh hiệu của phần tử lớn nhất vagrave phần tử beacute nhất Ta dễ dagraveng giải quyết bagravei toaacuten bằng caacutech duyệt qua cả mảng tigravem hai phần tử lớn nhất vagrave nhỏ nhất xong lấy hiệu ĐPT O(n)

B Lời giải Phạm Tuấn Nghĩa (bitset)

Thuật toaacuten Ta nhận thấy chỉ cần duyệt vị triacute bắt đầu của caacutec substring vagrave queacutet(N )O 3 từ traacutei qua phải duy trigrave ldquorichnessrdquo của caacutec substring bằng caacutech đaacutenh dấu caacutec kyacute tự đatilde xuất hiện Qua đoacute ta coacute thể so saacutenh caacutec substring với kết quả đatilde tigravem được vagrave chọn xacircu tối ưu hơn Thuật toaacuten trecircn yecircu cầu chuacuteng ta phải so saacutenh xacircu kết quả với tất cả substring necircn sẽ khocircng đaacutep ứng time limit

Thuật toaacuten Từ yacute tưởng trecircn thay vigrave mỗi lần so saacutenh 1 substring với kết quả thigrave(N )O 2 ta coacute thể so saacutenh caacutec substring với nhau trước rồi mới cập nhật kết quả Dễ dagraveng nhận thấy với caacutec substring bắt đầu ở một vị triacute P ta chỉ cần chọn substring ngắn nhất coacute ldquorichnessrdquo lớn nhất do prefix của một xacircu luocircn coacute thứ tự từ điển nhỏ hơn xacircu đoacute

C Lời giải Nguyễn Thagravenh Vinh (bitset) Hiển nhiecircn trong bagravei toaacuten nagravey đaacutep aacuten nhỏ nhất coacute thể lagrave 0 (khi tập đỉnh ta chọn lagrave tập rỗng) Giả sử kết quả khocircng phải lagrave 0 (phải chọn iacutet nhất một đỉnh) ta sẽ chọn một đỉnh thuộc tập sẽ chọn (gọi lagrave root) Như vậy bagravei toaacuten đưa về chọn một subgraph coacute chứa đigravenh root ở cả hai cacircy sao cho tổng trọng số score[i] lagrave lớn nhất Sau đoacute DFS lại hai cacircy sao cho gốc của cả hai cacircy lagrave root Xeacutet test đề nếu gốc lagrave 0 ta coacute hai cacircy sau

Cacircy 1 Cacircy 2

Theo giả thuyết của chuacuteng ta 0 đatilde được chọn bacircy giờ nếu muốn chọn thecircm nuacutet 2 thigrave Trong cacircy 1 ta phải chọn thecircm nuacutet 1 vigrave nếu khocircng chọn nuacutet 1 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 2 Trong cacircy 2 ta phải chọn thecircm nuacutet 3 vigrave nếu khocircng chọn nuacutet 3 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 3 Như vậy với hai cacircy đatilde cho vagrave đỉnh root ta sẽ coacute một số ragraveng buộc nếu chọn u thigrave phải chọn v cụ thể lagrave nếu chọn một đỉnh khaacutec gốc thigrave ta cũng phải chọn cả cha của noacute vagrave yecircu cầu đề bagravei sẽ lagrave chọn tập đỉnh coacute trọng số score[i] lagrave lớn nhất Đacircy chiacutenh lagrave bagravei luồng tập đoacuteng coacute xuất hiện trong VOI 2014 (httpvnoiinfoproblemsJOBSET)

Lời giải cụ thể của bagravei JOBSET caacutec bạn coacute thể đọc ở httpvnoiinfoproblemslist_solutionsJOBSET hoặc coacute thể tham khảo ở link Tiếng Anh (về Project Selection Problem) httpwww14intumdelehre2015WSeasplitsub-Project-Selectionpdf

D Lời giải Lecirc Minh Quang (amazingbamboo_with_coccoc) Gọi lagrave tổng cộng dồn của caacutec giaacute trị với Gọi lagrave số caacutech để xếp quả boacuteng với magraveu đầu tiecircn thỏa matilden điều kiện quả cuối của magraveu

đứng trước quả cuối của magraveu với Ta coacute

Với lagrave số caacutech để xếp quả boacuteng magraveu trong tổng số vị triacute Để điều kiện thỏa matilden quả cuối cugraveng trong số quả phải lagrave magraveu Cograven lại quả ta coacute thể tự do xếp chuacuteng vagraveo

vị triacute trống với số caacutech xếp lagrave Như vậy

Để yacute rằng vậy necircn ta hoagraven toagraven coacute thể chuẩn bị giaacute trị của caacutec tổ hợp theo cocircng thức

Kết quả bagravei toaacuten lagrave Độ phức tạp thuật toaacuten

E Lời giải Hoagraveng Xuacircn Nhật (HCMUS-Ascension) Chuacuteng ta cần tigravem một tập lớn nhất caacutec higravenh trograven sao cho khoảng caacutech giữa hai higravenh trograven bất kigrave lớn hơn tổng baacuten kiacutenh của chuacuteng Tuy nhiecircn trong bagravei nagravey caacutec higravenh trograven nằm trecircn một đường thẳng necircn ta coacute thể coi mỗi higravenh trograven như một đoạn thẳng từ [ Khi đoacute bagravei toaacutenw x w ]xi minus i i + i chuyển thagravenh tigravem một tập caacutec đoạn thẳng sao cho hai đoạn bất kigrave thigrave khocircng giao nhau (coacute thể chạm nhau tại hai đầu muacutet) Bagravei toaacuten nagravey coacute thể giải quyết dễ dagraveng bằng caacutech rời rạc hoacutea caacutec điểm đầu muacutet lại sau đoacute quy hoạch động với lagrave kết quả của bagravei toaacuten cho i điểm đầu tiecircndpi Độ phức tạp lagrave O( n log n)

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 2: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

Tổng quan

Bagravei First AC AC Editorialist

A 4 HCMUS-Intimidate amp HCMIU

172 Nguyễn Khaacutenh

B 10 hashset

95 Phạm Tuấn Nghĩa

C 206 bitset

3 Nguyễn Thagravenh Vinh

D 36 THREE

86 Lecirc Minh Quang

E 22 HCMUS-Intimidate amp CHYKB

126 Hoagraveng Xuacircn Nhật

F 64 FPTU Team1

43 Nguyễn Diệp Xuacircn Quang

G 45 THREE

25 Vương Hoagraveng Long

H 92 vector

3 Lăng Trung Hiếu

I 199 HCMUS-Ascension

2 Nguyễn E Rocirc

J 12 map

180 Nguyễn Diệp Xuacircn Quang

K 0 Lăng Trung Hiếu amp Nguyễn Ngọc Trung

L 137 THREE

5 Lecirc Anh Đức

Bảng xếp hạng chung cuộc

A Lời giải Nguyễn Khaacutenh (map) Ta sẽ sử dụng một đẳng thức quen thuộc để giải quyết bagravei nagravey đoacute lagrave

|a| + |b| = max( a b)plusmn plusmn Do đoacute

| - | + |i - j| = max( ( - ) (i-j))xi xj plusmn xi xj plusmn Hay

| - | + |i - j| = max ( + i) - ( + j)xi xj xi xj ( - i) - ( - j)xi xj -( + i) + ( + j)xi xj -( - i) + ( - j) xi xj

Từ đoacute ta coacute thể thấy rằng kết quả bagravei toaacuten sẽ la max của 2 trường hợp đầu với mọi i j Với mỗi trường hợp bagravei toaacuten trở thagravenh cho một mảng tiacutenh hiệu của phần tử lớn nhất vagrave phần tử beacute nhất Ta dễ dagraveng giải quyết bagravei toaacuten bằng caacutech duyệt qua cả mảng tigravem hai phần tử lớn nhất vagrave nhỏ nhất xong lấy hiệu ĐPT O(n)

B Lời giải Phạm Tuấn Nghĩa (bitset)

Thuật toaacuten Ta nhận thấy chỉ cần duyệt vị triacute bắt đầu của caacutec substring vagrave queacutet(N )O 3 từ traacutei qua phải duy trigrave ldquorichnessrdquo của caacutec substring bằng caacutech đaacutenh dấu caacutec kyacute tự đatilde xuất hiện Qua đoacute ta coacute thể so saacutenh caacutec substring với kết quả đatilde tigravem được vagrave chọn xacircu tối ưu hơn Thuật toaacuten trecircn yecircu cầu chuacuteng ta phải so saacutenh xacircu kết quả với tất cả substring necircn sẽ khocircng đaacutep ứng time limit

Thuật toaacuten Từ yacute tưởng trecircn thay vigrave mỗi lần so saacutenh 1 substring với kết quả thigrave(N )O 2 ta coacute thể so saacutenh caacutec substring với nhau trước rồi mới cập nhật kết quả Dễ dagraveng nhận thấy với caacutec substring bắt đầu ở một vị triacute P ta chỉ cần chọn substring ngắn nhất coacute ldquorichnessrdquo lớn nhất do prefix của một xacircu luocircn coacute thứ tự từ điển nhỏ hơn xacircu đoacute

C Lời giải Nguyễn Thagravenh Vinh (bitset) Hiển nhiecircn trong bagravei toaacuten nagravey đaacutep aacuten nhỏ nhất coacute thể lagrave 0 (khi tập đỉnh ta chọn lagrave tập rỗng) Giả sử kết quả khocircng phải lagrave 0 (phải chọn iacutet nhất một đỉnh) ta sẽ chọn một đỉnh thuộc tập sẽ chọn (gọi lagrave root) Như vậy bagravei toaacuten đưa về chọn một subgraph coacute chứa đigravenh root ở cả hai cacircy sao cho tổng trọng số score[i] lagrave lớn nhất Sau đoacute DFS lại hai cacircy sao cho gốc của cả hai cacircy lagrave root Xeacutet test đề nếu gốc lagrave 0 ta coacute hai cacircy sau

Cacircy 1 Cacircy 2

Theo giả thuyết của chuacuteng ta 0 đatilde được chọn bacircy giờ nếu muốn chọn thecircm nuacutet 2 thigrave Trong cacircy 1 ta phải chọn thecircm nuacutet 1 vigrave nếu khocircng chọn nuacutet 1 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 2 Trong cacircy 2 ta phải chọn thecircm nuacutet 3 vigrave nếu khocircng chọn nuacutet 3 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 3 Như vậy với hai cacircy đatilde cho vagrave đỉnh root ta sẽ coacute một số ragraveng buộc nếu chọn u thigrave phải chọn v cụ thể lagrave nếu chọn một đỉnh khaacutec gốc thigrave ta cũng phải chọn cả cha của noacute vagrave yecircu cầu đề bagravei sẽ lagrave chọn tập đỉnh coacute trọng số score[i] lagrave lớn nhất Đacircy chiacutenh lagrave bagravei luồng tập đoacuteng coacute xuất hiện trong VOI 2014 (httpvnoiinfoproblemsJOBSET)

Lời giải cụ thể của bagravei JOBSET caacutec bạn coacute thể đọc ở httpvnoiinfoproblemslist_solutionsJOBSET hoặc coacute thể tham khảo ở link Tiếng Anh (về Project Selection Problem) httpwww14intumdelehre2015WSeasplitsub-Project-Selectionpdf

D Lời giải Lecirc Minh Quang (amazingbamboo_with_coccoc) Gọi lagrave tổng cộng dồn của caacutec giaacute trị với Gọi lagrave số caacutech để xếp quả boacuteng với magraveu đầu tiecircn thỏa matilden điều kiện quả cuối của magraveu

đứng trước quả cuối của magraveu với Ta coacute

Với lagrave số caacutech để xếp quả boacuteng magraveu trong tổng số vị triacute Để điều kiện thỏa matilden quả cuối cugraveng trong số quả phải lagrave magraveu Cograven lại quả ta coacute thể tự do xếp chuacuteng vagraveo

vị triacute trống với số caacutech xếp lagrave Như vậy

Để yacute rằng vậy necircn ta hoagraven toagraven coacute thể chuẩn bị giaacute trị của caacutec tổ hợp theo cocircng thức

Kết quả bagravei toaacuten lagrave Độ phức tạp thuật toaacuten

E Lời giải Hoagraveng Xuacircn Nhật (HCMUS-Ascension) Chuacuteng ta cần tigravem một tập lớn nhất caacutec higravenh trograven sao cho khoảng caacutech giữa hai higravenh trograven bất kigrave lớn hơn tổng baacuten kiacutenh của chuacuteng Tuy nhiecircn trong bagravei nagravey caacutec higravenh trograven nằm trecircn một đường thẳng necircn ta coacute thể coi mỗi higravenh trograven như một đoạn thẳng từ [ Khi đoacute bagravei toaacutenw x w ]xi minus i i + i chuyển thagravenh tigravem một tập caacutec đoạn thẳng sao cho hai đoạn bất kigrave thigrave khocircng giao nhau (coacute thể chạm nhau tại hai đầu muacutet) Bagravei toaacuten nagravey coacute thể giải quyết dễ dagraveng bằng caacutech rời rạc hoacutea caacutec điểm đầu muacutet lại sau đoacute quy hoạch động với lagrave kết quả của bagravei toaacuten cho i điểm đầu tiecircndpi Độ phức tạp lagrave O( n log n)

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 3: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

Bảng xếp hạng chung cuộc

A Lời giải Nguyễn Khaacutenh (map) Ta sẽ sử dụng một đẳng thức quen thuộc để giải quyết bagravei nagravey đoacute lagrave

|a| + |b| = max( a b)plusmn plusmn Do đoacute

| - | + |i - j| = max( ( - ) (i-j))xi xj plusmn xi xj plusmn Hay

| - | + |i - j| = max ( + i) - ( + j)xi xj xi xj ( - i) - ( - j)xi xj -( + i) + ( + j)xi xj -( - i) + ( - j) xi xj

Từ đoacute ta coacute thể thấy rằng kết quả bagravei toaacuten sẽ la max của 2 trường hợp đầu với mọi i j Với mỗi trường hợp bagravei toaacuten trở thagravenh cho một mảng tiacutenh hiệu của phần tử lớn nhất vagrave phần tử beacute nhất Ta dễ dagraveng giải quyết bagravei toaacuten bằng caacutech duyệt qua cả mảng tigravem hai phần tử lớn nhất vagrave nhỏ nhất xong lấy hiệu ĐPT O(n)

B Lời giải Phạm Tuấn Nghĩa (bitset)

Thuật toaacuten Ta nhận thấy chỉ cần duyệt vị triacute bắt đầu của caacutec substring vagrave queacutet(N )O 3 từ traacutei qua phải duy trigrave ldquorichnessrdquo của caacutec substring bằng caacutech đaacutenh dấu caacutec kyacute tự đatilde xuất hiện Qua đoacute ta coacute thể so saacutenh caacutec substring với kết quả đatilde tigravem được vagrave chọn xacircu tối ưu hơn Thuật toaacuten trecircn yecircu cầu chuacuteng ta phải so saacutenh xacircu kết quả với tất cả substring necircn sẽ khocircng đaacutep ứng time limit

Thuật toaacuten Từ yacute tưởng trecircn thay vigrave mỗi lần so saacutenh 1 substring với kết quả thigrave(N )O 2 ta coacute thể so saacutenh caacutec substring với nhau trước rồi mới cập nhật kết quả Dễ dagraveng nhận thấy với caacutec substring bắt đầu ở một vị triacute P ta chỉ cần chọn substring ngắn nhất coacute ldquorichnessrdquo lớn nhất do prefix của một xacircu luocircn coacute thứ tự từ điển nhỏ hơn xacircu đoacute

C Lời giải Nguyễn Thagravenh Vinh (bitset) Hiển nhiecircn trong bagravei toaacuten nagravey đaacutep aacuten nhỏ nhất coacute thể lagrave 0 (khi tập đỉnh ta chọn lagrave tập rỗng) Giả sử kết quả khocircng phải lagrave 0 (phải chọn iacutet nhất một đỉnh) ta sẽ chọn một đỉnh thuộc tập sẽ chọn (gọi lagrave root) Như vậy bagravei toaacuten đưa về chọn một subgraph coacute chứa đigravenh root ở cả hai cacircy sao cho tổng trọng số score[i] lagrave lớn nhất Sau đoacute DFS lại hai cacircy sao cho gốc của cả hai cacircy lagrave root Xeacutet test đề nếu gốc lagrave 0 ta coacute hai cacircy sau

Cacircy 1 Cacircy 2

Theo giả thuyết của chuacuteng ta 0 đatilde được chọn bacircy giờ nếu muốn chọn thecircm nuacutet 2 thigrave Trong cacircy 1 ta phải chọn thecircm nuacutet 1 vigrave nếu khocircng chọn nuacutet 1 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 2 Trong cacircy 2 ta phải chọn thecircm nuacutet 3 vigrave nếu khocircng chọn nuacutet 3 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 3 Như vậy với hai cacircy đatilde cho vagrave đỉnh root ta sẽ coacute một số ragraveng buộc nếu chọn u thigrave phải chọn v cụ thể lagrave nếu chọn một đỉnh khaacutec gốc thigrave ta cũng phải chọn cả cha của noacute vagrave yecircu cầu đề bagravei sẽ lagrave chọn tập đỉnh coacute trọng số score[i] lagrave lớn nhất Đacircy chiacutenh lagrave bagravei luồng tập đoacuteng coacute xuất hiện trong VOI 2014 (httpvnoiinfoproblemsJOBSET)

Lời giải cụ thể của bagravei JOBSET caacutec bạn coacute thể đọc ở httpvnoiinfoproblemslist_solutionsJOBSET hoặc coacute thể tham khảo ở link Tiếng Anh (về Project Selection Problem) httpwww14intumdelehre2015WSeasplitsub-Project-Selectionpdf

D Lời giải Lecirc Minh Quang (amazingbamboo_with_coccoc) Gọi lagrave tổng cộng dồn của caacutec giaacute trị với Gọi lagrave số caacutech để xếp quả boacuteng với magraveu đầu tiecircn thỏa matilden điều kiện quả cuối của magraveu

đứng trước quả cuối của magraveu với Ta coacute

Với lagrave số caacutech để xếp quả boacuteng magraveu trong tổng số vị triacute Để điều kiện thỏa matilden quả cuối cugraveng trong số quả phải lagrave magraveu Cograven lại quả ta coacute thể tự do xếp chuacuteng vagraveo

vị triacute trống với số caacutech xếp lagrave Như vậy

Để yacute rằng vậy necircn ta hoagraven toagraven coacute thể chuẩn bị giaacute trị của caacutec tổ hợp theo cocircng thức

Kết quả bagravei toaacuten lagrave Độ phức tạp thuật toaacuten

E Lời giải Hoagraveng Xuacircn Nhật (HCMUS-Ascension) Chuacuteng ta cần tigravem một tập lớn nhất caacutec higravenh trograven sao cho khoảng caacutech giữa hai higravenh trograven bất kigrave lớn hơn tổng baacuten kiacutenh của chuacuteng Tuy nhiecircn trong bagravei nagravey caacutec higravenh trograven nằm trecircn một đường thẳng necircn ta coacute thể coi mỗi higravenh trograven như một đoạn thẳng từ [ Khi đoacute bagravei toaacutenw x w ]xi minus i i + i chuyển thagravenh tigravem một tập caacutec đoạn thẳng sao cho hai đoạn bất kigrave thigrave khocircng giao nhau (coacute thể chạm nhau tại hai đầu muacutet) Bagravei toaacuten nagravey coacute thể giải quyết dễ dagraveng bằng caacutech rời rạc hoacutea caacutec điểm đầu muacutet lại sau đoacute quy hoạch động với lagrave kết quả của bagravei toaacuten cho i điểm đầu tiecircndpi Độ phức tạp lagrave O( n log n)

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 4: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

A Lời giải Nguyễn Khaacutenh (map) Ta sẽ sử dụng một đẳng thức quen thuộc để giải quyết bagravei nagravey đoacute lagrave

|a| + |b| = max( a b)plusmn plusmn Do đoacute

| - | + |i - j| = max( ( - ) (i-j))xi xj plusmn xi xj plusmn Hay

| - | + |i - j| = max ( + i) - ( + j)xi xj xi xj ( - i) - ( - j)xi xj -( + i) + ( + j)xi xj -( - i) + ( - j) xi xj

Từ đoacute ta coacute thể thấy rằng kết quả bagravei toaacuten sẽ la max của 2 trường hợp đầu với mọi i j Với mỗi trường hợp bagravei toaacuten trở thagravenh cho một mảng tiacutenh hiệu của phần tử lớn nhất vagrave phần tử beacute nhất Ta dễ dagraveng giải quyết bagravei toaacuten bằng caacutech duyệt qua cả mảng tigravem hai phần tử lớn nhất vagrave nhỏ nhất xong lấy hiệu ĐPT O(n)

B Lời giải Phạm Tuấn Nghĩa (bitset)

Thuật toaacuten Ta nhận thấy chỉ cần duyệt vị triacute bắt đầu của caacutec substring vagrave queacutet(N )O 3 từ traacutei qua phải duy trigrave ldquorichnessrdquo của caacutec substring bằng caacutech đaacutenh dấu caacutec kyacute tự đatilde xuất hiện Qua đoacute ta coacute thể so saacutenh caacutec substring với kết quả đatilde tigravem được vagrave chọn xacircu tối ưu hơn Thuật toaacuten trecircn yecircu cầu chuacuteng ta phải so saacutenh xacircu kết quả với tất cả substring necircn sẽ khocircng đaacutep ứng time limit

Thuật toaacuten Từ yacute tưởng trecircn thay vigrave mỗi lần so saacutenh 1 substring với kết quả thigrave(N )O 2 ta coacute thể so saacutenh caacutec substring với nhau trước rồi mới cập nhật kết quả Dễ dagraveng nhận thấy với caacutec substring bắt đầu ở một vị triacute P ta chỉ cần chọn substring ngắn nhất coacute ldquorichnessrdquo lớn nhất do prefix của một xacircu luocircn coacute thứ tự từ điển nhỏ hơn xacircu đoacute

C Lời giải Nguyễn Thagravenh Vinh (bitset) Hiển nhiecircn trong bagravei toaacuten nagravey đaacutep aacuten nhỏ nhất coacute thể lagrave 0 (khi tập đỉnh ta chọn lagrave tập rỗng) Giả sử kết quả khocircng phải lagrave 0 (phải chọn iacutet nhất một đỉnh) ta sẽ chọn một đỉnh thuộc tập sẽ chọn (gọi lagrave root) Như vậy bagravei toaacuten đưa về chọn một subgraph coacute chứa đigravenh root ở cả hai cacircy sao cho tổng trọng số score[i] lagrave lớn nhất Sau đoacute DFS lại hai cacircy sao cho gốc của cả hai cacircy lagrave root Xeacutet test đề nếu gốc lagrave 0 ta coacute hai cacircy sau

Cacircy 1 Cacircy 2

Theo giả thuyết của chuacuteng ta 0 đatilde được chọn bacircy giờ nếu muốn chọn thecircm nuacutet 2 thigrave Trong cacircy 1 ta phải chọn thecircm nuacutet 1 vigrave nếu khocircng chọn nuacutet 1 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 2 Trong cacircy 2 ta phải chọn thecircm nuacutet 3 vigrave nếu khocircng chọn nuacutet 3 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 3 Như vậy với hai cacircy đatilde cho vagrave đỉnh root ta sẽ coacute một số ragraveng buộc nếu chọn u thigrave phải chọn v cụ thể lagrave nếu chọn một đỉnh khaacutec gốc thigrave ta cũng phải chọn cả cha của noacute vagrave yecircu cầu đề bagravei sẽ lagrave chọn tập đỉnh coacute trọng số score[i] lagrave lớn nhất Đacircy chiacutenh lagrave bagravei luồng tập đoacuteng coacute xuất hiện trong VOI 2014 (httpvnoiinfoproblemsJOBSET)

Lời giải cụ thể của bagravei JOBSET caacutec bạn coacute thể đọc ở httpvnoiinfoproblemslist_solutionsJOBSET hoặc coacute thể tham khảo ở link Tiếng Anh (về Project Selection Problem) httpwww14intumdelehre2015WSeasplitsub-Project-Selectionpdf

D Lời giải Lecirc Minh Quang (amazingbamboo_with_coccoc) Gọi lagrave tổng cộng dồn của caacutec giaacute trị với Gọi lagrave số caacutech để xếp quả boacuteng với magraveu đầu tiecircn thỏa matilden điều kiện quả cuối của magraveu

đứng trước quả cuối của magraveu với Ta coacute

Với lagrave số caacutech để xếp quả boacuteng magraveu trong tổng số vị triacute Để điều kiện thỏa matilden quả cuối cugraveng trong số quả phải lagrave magraveu Cograven lại quả ta coacute thể tự do xếp chuacuteng vagraveo

vị triacute trống với số caacutech xếp lagrave Như vậy

Để yacute rằng vậy necircn ta hoagraven toagraven coacute thể chuẩn bị giaacute trị của caacutec tổ hợp theo cocircng thức

Kết quả bagravei toaacuten lagrave Độ phức tạp thuật toaacuten

E Lời giải Hoagraveng Xuacircn Nhật (HCMUS-Ascension) Chuacuteng ta cần tigravem một tập lớn nhất caacutec higravenh trograven sao cho khoảng caacutech giữa hai higravenh trograven bất kigrave lớn hơn tổng baacuten kiacutenh của chuacuteng Tuy nhiecircn trong bagravei nagravey caacutec higravenh trograven nằm trecircn một đường thẳng necircn ta coacute thể coi mỗi higravenh trograven như một đoạn thẳng từ [ Khi đoacute bagravei toaacutenw x w ]xi minus i i + i chuyển thagravenh tigravem một tập caacutec đoạn thẳng sao cho hai đoạn bất kigrave thigrave khocircng giao nhau (coacute thể chạm nhau tại hai đầu muacutet) Bagravei toaacuten nagravey coacute thể giải quyết dễ dagraveng bằng caacutech rời rạc hoacutea caacutec điểm đầu muacutet lại sau đoacute quy hoạch động với lagrave kết quả của bagravei toaacuten cho i điểm đầu tiecircndpi Độ phức tạp lagrave O( n log n)

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 5: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

B Lời giải Phạm Tuấn Nghĩa (bitset)

Thuật toaacuten Ta nhận thấy chỉ cần duyệt vị triacute bắt đầu của caacutec substring vagrave queacutet(N )O 3 từ traacutei qua phải duy trigrave ldquorichnessrdquo của caacutec substring bằng caacutech đaacutenh dấu caacutec kyacute tự đatilde xuất hiện Qua đoacute ta coacute thể so saacutenh caacutec substring với kết quả đatilde tigravem được vagrave chọn xacircu tối ưu hơn Thuật toaacuten trecircn yecircu cầu chuacuteng ta phải so saacutenh xacircu kết quả với tất cả substring necircn sẽ khocircng đaacutep ứng time limit

Thuật toaacuten Từ yacute tưởng trecircn thay vigrave mỗi lần so saacutenh 1 substring với kết quả thigrave(N )O 2 ta coacute thể so saacutenh caacutec substring với nhau trước rồi mới cập nhật kết quả Dễ dagraveng nhận thấy với caacutec substring bắt đầu ở một vị triacute P ta chỉ cần chọn substring ngắn nhất coacute ldquorichnessrdquo lớn nhất do prefix của một xacircu luocircn coacute thứ tự từ điển nhỏ hơn xacircu đoacute

C Lời giải Nguyễn Thagravenh Vinh (bitset) Hiển nhiecircn trong bagravei toaacuten nagravey đaacutep aacuten nhỏ nhất coacute thể lagrave 0 (khi tập đỉnh ta chọn lagrave tập rỗng) Giả sử kết quả khocircng phải lagrave 0 (phải chọn iacutet nhất một đỉnh) ta sẽ chọn một đỉnh thuộc tập sẽ chọn (gọi lagrave root) Như vậy bagravei toaacuten đưa về chọn một subgraph coacute chứa đigravenh root ở cả hai cacircy sao cho tổng trọng số score[i] lagrave lớn nhất Sau đoacute DFS lại hai cacircy sao cho gốc của cả hai cacircy lagrave root Xeacutet test đề nếu gốc lagrave 0 ta coacute hai cacircy sau

Cacircy 1 Cacircy 2

Theo giả thuyết của chuacuteng ta 0 đatilde được chọn bacircy giờ nếu muốn chọn thecircm nuacutet 2 thigrave Trong cacircy 1 ta phải chọn thecircm nuacutet 1 vigrave nếu khocircng chọn nuacutet 1 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 2 Trong cacircy 2 ta phải chọn thecircm nuacutet 3 vigrave nếu khocircng chọn nuacutet 3 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 3 Như vậy với hai cacircy đatilde cho vagrave đỉnh root ta sẽ coacute một số ragraveng buộc nếu chọn u thigrave phải chọn v cụ thể lagrave nếu chọn một đỉnh khaacutec gốc thigrave ta cũng phải chọn cả cha của noacute vagrave yecircu cầu đề bagravei sẽ lagrave chọn tập đỉnh coacute trọng số score[i] lagrave lớn nhất Đacircy chiacutenh lagrave bagravei luồng tập đoacuteng coacute xuất hiện trong VOI 2014 (httpvnoiinfoproblemsJOBSET)

Lời giải cụ thể của bagravei JOBSET caacutec bạn coacute thể đọc ở httpvnoiinfoproblemslist_solutionsJOBSET hoặc coacute thể tham khảo ở link Tiếng Anh (về Project Selection Problem) httpwww14intumdelehre2015WSeasplitsub-Project-Selectionpdf

D Lời giải Lecirc Minh Quang (amazingbamboo_with_coccoc) Gọi lagrave tổng cộng dồn của caacutec giaacute trị với Gọi lagrave số caacutech để xếp quả boacuteng với magraveu đầu tiecircn thỏa matilden điều kiện quả cuối của magraveu

đứng trước quả cuối của magraveu với Ta coacute

Với lagrave số caacutech để xếp quả boacuteng magraveu trong tổng số vị triacute Để điều kiện thỏa matilden quả cuối cugraveng trong số quả phải lagrave magraveu Cograven lại quả ta coacute thể tự do xếp chuacuteng vagraveo

vị triacute trống với số caacutech xếp lagrave Như vậy

Để yacute rằng vậy necircn ta hoagraven toagraven coacute thể chuẩn bị giaacute trị của caacutec tổ hợp theo cocircng thức

Kết quả bagravei toaacuten lagrave Độ phức tạp thuật toaacuten

E Lời giải Hoagraveng Xuacircn Nhật (HCMUS-Ascension) Chuacuteng ta cần tigravem một tập lớn nhất caacutec higravenh trograven sao cho khoảng caacutech giữa hai higravenh trograven bất kigrave lớn hơn tổng baacuten kiacutenh của chuacuteng Tuy nhiecircn trong bagravei nagravey caacutec higravenh trograven nằm trecircn một đường thẳng necircn ta coacute thể coi mỗi higravenh trograven như một đoạn thẳng từ [ Khi đoacute bagravei toaacutenw x w ]xi minus i i + i chuyển thagravenh tigravem một tập caacutec đoạn thẳng sao cho hai đoạn bất kigrave thigrave khocircng giao nhau (coacute thể chạm nhau tại hai đầu muacutet) Bagravei toaacuten nagravey coacute thể giải quyết dễ dagraveng bằng caacutech rời rạc hoacutea caacutec điểm đầu muacutet lại sau đoacute quy hoạch động với lagrave kết quả của bagravei toaacuten cho i điểm đầu tiecircndpi Độ phức tạp lagrave O( n log n)

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 6: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

C Lời giải Nguyễn Thagravenh Vinh (bitset) Hiển nhiecircn trong bagravei toaacuten nagravey đaacutep aacuten nhỏ nhất coacute thể lagrave 0 (khi tập đỉnh ta chọn lagrave tập rỗng) Giả sử kết quả khocircng phải lagrave 0 (phải chọn iacutet nhất một đỉnh) ta sẽ chọn một đỉnh thuộc tập sẽ chọn (gọi lagrave root) Như vậy bagravei toaacuten đưa về chọn một subgraph coacute chứa đigravenh root ở cả hai cacircy sao cho tổng trọng số score[i] lagrave lớn nhất Sau đoacute DFS lại hai cacircy sao cho gốc của cả hai cacircy lagrave root Xeacutet test đề nếu gốc lagrave 0 ta coacute hai cacircy sau

Cacircy 1 Cacircy 2

Theo giả thuyết của chuacuteng ta 0 đatilde được chọn bacircy giờ nếu muốn chọn thecircm nuacutet 2 thigrave Trong cacircy 1 ta phải chọn thecircm nuacutet 1 vigrave nếu khocircng chọn nuacutet 1 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 2 Trong cacircy 2 ta phải chọn thecircm nuacutet 3 vigrave nếu khocircng chọn nuacutet 3 thigrave sẽ mất liecircn thocircng của

nuacutet gốc vagrave nuacutet 3 Như vậy với hai cacircy đatilde cho vagrave đỉnh root ta sẽ coacute một số ragraveng buộc nếu chọn u thigrave phải chọn v cụ thể lagrave nếu chọn một đỉnh khaacutec gốc thigrave ta cũng phải chọn cả cha của noacute vagrave yecircu cầu đề bagravei sẽ lagrave chọn tập đỉnh coacute trọng số score[i] lagrave lớn nhất Đacircy chiacutenh lagrave bagravei luồng tập đoacuteng coacute xuất hiện trong VOI 2014 (httpvnoiinfoproblemsJOBSET)

Lời giải cụ thể của bagravei JOBSET caacutec bạn coacute thể đọc ở httpvnoiinfoproblemslist_solutionsJOBSET hoặc coacute thể tham khảo ở link Tiếng Anh (về Project Selection Problem) httpwww14intumdelehre2015WSeasplitsub-Project-Selectionpdf

D Lời giải Lecirc Minh Quang (amazingbamboo_with_coccoc) Gọi lagrave tổng cộng dồn của caacutec giaacute trị với Gọi lagrave số caacutech để xếp quả boacuteng với magraveu đầu tiecircn thỏa matilden điều kiện quả cuối của magraveu

đứng trước quả cuối của magraveu với Ta coacute

Với lagrave số caacutech để xếp quả boacuteng magraveu trong tổng số vị triacute Để điều kiện thỏa matilden quả cuối cugraveng trong số quả phải lagrave magraveu Cograven lại quả ta coacute thể tự do xếp chuacuteng vagraveo

vị triacute trống với số caacutech xếp lagrave Như vậy

Để yacute rằng vậy necircn ta hoagraven toagraven coacute thể chuẩn bị giaacute trị của caacutec tổ hợp theo cocircng thức

Kết quả bagravei toaacuten lagrave Độ phức tạp thuật toaacuten

E Lời giải Hoagraveng Xuacircn Nhật (HCMUS-Ascension) Chuacuteng ta cần tigravem một tập lớn nhất caacutec higravenh trograven sao cho khoảng caacutech giữa hai higravenh trograven bất kigrave lớn hơn tổng baacuten kiacutenh của chuacuteng Tuy nhiecircn trong bagravei nagravey caacutec higravenh trograven nằm trecircn một đường thẳng necircn ta coacute thể coi mỗi higravenh trograven như một đoạn thẳng từ [ Khi đoacute bagravei toaacutenw x w ]xi minus i i + i chuyển thagravenh tigravem một tập caacutec đoạn thẳng sao cho hai đoạn bất kigrave thigrave khocircng giao nhau (coacute thể chạm nhau tại hai đầu muacutet) Bagravei toaacuten nagravey coacute thể giải quyết dễ dagraveng bằng caacutech rời rạc hoacutea caacutec điểm đầu muacutet lại sau đoacute quy hoạch động với lagrave kết quả của bagravei toaacuten cho i điểm đầu tiecircndpi Độ phức tạp lagrave O( n log n)

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 7: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

Lời giải cụ thể của bagravei JOBSET caacutec bạn coacute thể đọc ở httpvnoiinfoproblemslist_solutionsJOBSET hoặc coacute thể tham khảo ở link Tiếng Anh (về Project Selection Problem) httpwww14intumdelehre2015WSeasplitsub-Project-Selectionpdf

D Lời giải Lecirc Minh Quang (amazingbamboo_with_coccoc) Gọi lagrave tổng cộng dồn của caacutec giaacute trị với Gọi lagrave số caacutech để xếp quả boacuteng với magraveu đầu tiecircn thỏa matilden điều kiện quả cuối của magraveu

đứng trước quả cuối của magraveu với Ta coacute

Với lagrave số caacutech để xếp quả boacuteng magraveu trong tổng số vị triacute Để điều kiện thỏa matilden quả cuối cugraveng trong số quả phải lagrave magraveu Cograven lại quả ta coacute thể tự do xếp chuacuteng vagraveo

vị triacute trống với số caacutech xếp lagrave Như vậy

Để yacute rằng vậy necircn ta hoagraven toagraven coacute thể chuẩn bị giaacute trị của caacutec tổ hợp theo cocircng thức

Kết quả bagravei toaacuten lagrave Độ phức tạp thuật toaacuten

E Lời giải Hoagraveng Xuacircn Nhật (HCMUS-Ascension) Chuacuteng ta cần tigravem một tập lớn nhất caacutec higravenh trograven sao cho khoảng caacutech giữa hai higravenh trograven bất kigrave lớn hơn tổng baacuten kiacutenh của chuacuteng Tuy nhiecircn trong bagravei nagravey caacutec higravenh trograven nằm trecircn một đường thẳng necircn ta coacute thể coi mỗi higravenh trograven như một đoạn thẳng từ [ Khi đoacute bagravei toaacutenw x w ]xi minus i i + i chuyển thagravenh tigravem một tập caacutec đoạn thẳng sao cho hai đoạn bất kigrave thigrave khocircng giao nhau (coacute thể chạm nhau tại hai đầu muacutet) Bagravei toaacuten nagravey coacute thể giải quyết dễ dagraveng bằng caacutech rời rạc hoacutea caacutec điểm đầu muacutet lại sau đoacute quy hoạch động với lagrave kết quả của bagravei toaacuten cho i điểm đầu tiecircndpi Độ phức tạp lagrave O( n log n)

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 8: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

D Lời giải Lecirc Minh Quang (amazingbamboo_with_coccoc) Gọi lagrave tổng cộng dồn của caacutec giaacute trị với Gọi lagrave số caacutech để xếp quả boacuteng với magraveu đầu tiecircn thỏa matilden điều kiện quả cuối của magraveu

đứng trước quả cuối của magraveu với Ta coacute

Với lagrave số caacutech để xếp quả boacuteng magraveu trong tổng số vị triacute Để điều kiện thỏa matilden quả cuối cugraveng trong số quả phải lagrave magraveu Cograven lại quả ta coacute thể tự do xếp chuacuteng vagraveo

vị triacute trống với số caacutech xếp lagrave Như vậy

Để yacute rằng vậy necircn ta hoagraven toagraven coacute thể chuẩn bị giaacute trị của caacutec tổ hợp theo cocircng thức

Kết quả bagravei toaacuten lagrave Độ phức tạp thuật toaacuten

E Lời giải Hoagraveng Xuacircn Nhật (HCMUS-Ascension) Chuacuteng ta cần tigravem một tập lớn nhất caacutec higravenh trograven sao cho khoảng caacutech giữa hai higravenh trograven bất kigrave lớn hơn tổng baacuten kiacutenh của chuacuteng Tuy nhiecircn trong bagravei nagravey caacutec higravenh trograven nằm trecircn một đường thẳng necircn ta coacute thể coi mỗi higravenh trograven như một đoạn thẳng từ [ Khi đoacute bagravei toaacutenw x w ]xi minus i i + i chuyển thagravenh tigravem một tập caacutec đoạn thẳng sao cho hai đoạn bất kigrave thigrave khocircng giao nhau (coacute thể chạm nhau tại hai đầu muacutet) Bagravei toaacuten nagravey coacute thể giải quyết dễ dagraveng bằng caacutech rời rạc hoacutea caacutec điểm đầu muacutet lại sau đoacute quy hoạch động với lagrave kết quả của bagravei toaacuten cho i điểm đầu tiecircndpi Độ phức tạp lagrave O( n log n)

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 9: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

E Lời giải Hoagraveng Xuacircn Nhật (HCMUS-Ascension) Chuacuteng ta cần tigravem một tập lớn nhất caacutec higravenh trograven sao cho khoảng caacutech giữa hai higravenh trograven bất kigrave lớn hơn tổng baacuten kiacutenh của chuacuteng Tuy nhiecircn trong bagravei nagravey caacutec higravenh trograven nằm trecircn một đường thẳng necircn ta coacute thể coi mỗi higravenh trograven như một đoạn thẳng từ [ Khi đoacute bagravei toaacutenw x w ]xi minus i i + i chuyển thagravenh tigravem một tập caacutec đoạn thẳng sao cho hai đoạn bất kigrave thigrave khocircng giao nhau (coacute thể chạm nhau tại hai đầu muacutet) Bagravei toaacuten nagravey coacute thể giải quyết dễ dagraveng bằng caacutech rời rạc hoacutea caacutec điểm đầu muacutet lại sau đoacute quy hoạch động với lagrave kết quả của bagravei toaacuten cho i điểm đầu tiecircndpi Độ phức tạp lagrave O( n log n)

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 10: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

F Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Nhận xeacutet rằng khi hai con kiến gặp nhau thay vigrave cho chuacuteng quay đầu lại ta coacute thể xem như chuacuteng nhảy qua nhau vagrave trao đổi số thứ tự cho nhau Noacutei caacutech khaacutec gọi

xi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta xeacutet sự tương taacutec giữa caacutec con kiến

yi lagrave thời điểm magrave con kiến thứ i rời khỏi đoạn dacircy nếu ta khocircng xeacutet sự tương taacutec giữa caacutec con kiến

Thigrave sẽ tồn tại một hoaacuten vị p sao cho Do đoacute max(x1 x2 hellip xN) = max(y1 y2 hellip yN) Taxpi = yi dễ dagraveng tiacutenh được giaacute trị y i như sau

Nếu con kiến thứ i bograve về hướng becircn traacutei thigrave y i = ai Nếu con kiến thứ i bograve về hướng becircn phải thigrave y i = L - ai

Bagravei toaacuten ban đầu trở thagravenh Cho một datildey số a i gồm N phần tử vagrave số L Ta xacircy dựng datildey số b bằng caacutech với mỗi phần tử b i ta sẽ gaacuten ngẫu nhiecircn giaacute trị a i hoặc L - a i với xaacutec suất như nhau Tiacutenh giaacute trị kigrave vọng của phần tử lớn nhất trong datildey b Để tiacutenh giaacute trị kigrave vọng trecircn với mỗi giaacute trị x ta tiacutenh prob x lagrave xaacutec suất để x trở thagravenh phần tử lớn nhất trong datildey b Khi đoacute đaacutep số lagrave tổng của caacutec tiacutech x prob x Trước hết ta sẽ ruacutet gọn datildey a bằng caacutech xeacutet phần tử a i coacute giaacute trị lớn hơn L2

Nếu tồn tại p sao cho a p = L - ai thigrave ta xem như bi được gaacuten giaacute trị a i với xaacutec xuất 25 vagrave L - ai với xaacutec suất 75(vagrave bỏ qua phần tử b p khi tiacutenh giaacute trị lớn nhất)

Ngược lại ta gaacuten a i = L - ai vagrave điều nagravey sẽ khocircng lagravem thay đổi đaacutep aacuten Sau đoacute ta sắp xếp datildey a theo thứ tự tăng dần Gọi p i lagrave xaacutec suất để b i được gaacuten giaacute trị a i Ta nhận xeacutet phần tử lớn nhất trong datildey b chỉ coacute thể lagrave a N hoặc L - a i với 1 le i le N Để L - a i trở thagravenh phần tử lớn nhất datildey b thigrave

Với 1 le j lt i thigrave b j phải được gaacuten giaacute trị a j Bản thacircn b i phải được gaacuten giaacute trị L - a i

Do đoacute rob p p 1 )p L minus ai= p1 2 iminus1 ( minus pi

Để a N trở thagravenh phần tử lớn nhất datildey b thigrave tất cả caacutec phần tử b i đều phải được gaacuten giaacute trị a i Do đoacute rob p pp aN = p1 2 N Ta coacute thể dễ dagraveng tiacutenh caacutec giaacute trị trecircn bằng một vograveng lặp for trong O(N) Do chi phiacute sắp xếp necircn độ phức tạp lagrave O(N log A i)

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 11: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

G Lời giải Vương Hoagraveng Long (map) Bagravei nagravey thực ra lagrave một bagravei khaacute đơn giản nhưng lại coacute thể lagravem bối rối caacutec team khocircng biết chia trong base khaacutec 10 Trước tiecircn ta sẽ viết lại caacutech biểu diễn 1 số ở base khaacutec dưới dạng như sau X = x ase ase ase1 b n + x2 b nminus1 + + xn b 0

Y = y ase ase ase1 b n + y2 b nminus1 + + yn b 0

Vậy nếu muốn chia X cho Y trong base khaacutec 10 ta chỉ cần chia 2 số trong base 10 như bigravenh thường vagrave sau đoacute chuyển kết quả sang base tương ứng (Giống hệt như chia đa thức) Nhacircn 2 số trong base khaacutec 10 chuacuteng ta cũng lagravem như vậy Trước tiecircn ta sẽ giải bagravei toaacuten ở base 10 Ở đacircy migravenh sẽ viacute dụ việc tigravem chữ số thứ 5 sau dấu ldquordquo của pheacutep chia 519 trong base 10 Ta coacute 519 = 0 51019 = 2 =gt 121019 = 6 =gt 61019 = 3 =gt 31019 = 1 =gt 111019 = 5 Vậy 519 = 026315 =gt chữ số thứ 5 lagrave 5 Ta nhận xeacutet thấy để tigravem chữ số thứ k sau dấu ldquordquo ta coacute thể nhacircn 10^(k-1) số bị chia lecircn vagrave chuyển bagravei toaacuten thagravenh tigravem chữ số thứ 1 sau dấu ldquordquo Gọi số bị chia lagrave A số chia lagrave B Để giải được bagravei toaacuten tigravem chữ số thứ 1 sau dấu ldquordquo ta sẽ tigravem dư của A10^(k-1) B sau đoacute kết quả của bagravei toaacuten sẽ lagrave thương của (số dư 10 B) Để tigravem được số dư của pheacutep A10^(k-1) B ta coacute thể sử dụng kĩ thuật nhacircn ấn độ do A vagrave B đều lagrave 10^18 Tham khảo httpscowboycodertecharticlephep-nhan-an-do-va-phep-tinh-luy-thua Để tigravem được thương của (số dư 10 B) ta sẽ phải sử dụng Bignum chia Vậy nếu muốn giải bagravei toaacuten ở base khaacutec thigrave sao Rất đơn giản caacutec bạn coacute thể nhigraven vagraveo caacutech đặt pheacutep chia 519 ở trecircn vagrave nhận ra thay vigrave nhacircn số dư với 10 ta nhacircn số dư với BASE Vậy solution của bagravei toaacuten chuyển thagravenh nhacircn BASE^(k-1) số A lecircn tigravem số dư của pheacutep chia (BASE^(k-1)) cho B vagrave kết quả bagravei toaacuten sẽ lagrave thương của (số dư base)B Phương phaacutep giải vẫn sử dụng nhacircn Ấn Độ kết hợp Bignum chia Chuacute yacute vigrave mọi tiacutenh toaacuten của migravenh đều được thực hiện ở base 10 necircn kết quả cũng đatilde lagrave base 10 khocircng cần chuyển sang base 10 khi in ra nữa Coacute rất nhiều đội sử dụng Python để giải bagravei toaacuten nagravey đoacute lagrave một caacutech rất hiệu quả để traacutenh phải cagravei đặt nhacircn Ấn Độ vagrave Bignum chia trong C++ hơn nữa code cũng ngắn hơn rất nhiều

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 12: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

H Lời giải Lăng Trung Hiếu Với n = 2 chiacutenh lagrave bagravei game nagravey Wythoffs game Coacute thể dễ dagraveng tigravem được caacutec cặp người 2 thắng (12) (35) (47) (610) bằng caacutech tigravem số nguyecircn dương đầu tiecircn chưa xuất hiện X vagrave cặp ở vị triacute thứ i sẽ lagrave (X X + i) Với n gt 2 coacute một đoạn khaacute nhỏ trong input ldquoprime tức n lagrave số nguyecircn tố hay n lẻ Coacute thể dugraveng dp trạng thaacutei để tigravem ra quy luật đặt S = xor(a[i]) (i = 12n) thigrave nếu S khaacutec 0 người 1 thắng S = 0 người 2 thắng Chứng minh Theo như bagravei toaacuten bốc sỏi thocircng thường thigrave người coacute S khaacutec 0 luocircn coacute caacutech để bốc về S = 0 vagrave người coacute S = 0 khocircng thể bốc từ 1 đống để về S = 0 (magrave trạng thaacutei cuối cugraveng của trograve chơi lagrave S = 0) Vậy để người coacute S = 0 bốc về một trạng thaacutei S = 0 thigrave phải bốc tất cả caacutec đống sỏi một lượng lagrave x viecircn Giả sử bit = 1 nhỏ nhất của x lagrave u thigrave khi đoacute ở vị triacute bit u của a[i] vagrave a[i] - x (i = 12n) sẽ khaacutec nhau vigrave vậy bit u của S = xor(a[i] - u) (i = 12n) sẽ = 1 do n lẻ Vậy tức lagrave người coacute trạng thaacutei S = 0 khocircng thể bốc về một trạng thaacutei S = 0 hay với n lẻ chiacutenh lagrave bagravei toaacuten bốc sỏi thocircng thường

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 13: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

I Lời giải Nguyễn E Rocirc (HCMUS-Ascension) Chuacuteng ta coacute 1 bảng 3 t x 3t

Nhận xeacutet Caacutec dograveng coacute chứa iacutet nhất 1 ocirc magraveu đen thigrave giống nhau vagrave caacutec cột cũng vậy Với higravenh chữ nhật cần kiểm tra đầu tiecircn ta kiểm tra điều kiện trecircn (caacutec hagraveng coacute iacutet nhất 1 ocirc magraveu đen thigrave giống nhau caacutec cột coacute iacutet nhất 1 ocirc magraveu đen cũng giống nhau) Nếu higravenh chữ nhật kiểm tra khocircng thoả matilden điều kiện nagravey thigrave kết quả bằng 0 Coi mỗi cột coacute iacutet nhất một ocirc magraveu đen lagrave số 0 vagrave caacutec cột chỉ toagraven magraveu trắng lagrave số 1 chuacuteng ta coacute một datildey số nhị nhacircn vagrave gọi đacircy lagrave mảng Column Tương tự ta cũng coacute một mảng tương tự lagrave mảng Row (nhưng thực chất 2 mảng nagravey hoagraven toagraven giống nhau chỉ gọi 2 caacutei tecircn khaacutec nhau cho dễ phacircn biệt) Với higravenh chữ nhật cần kiểm tra chuacuteng ta cũng tạo ra 2 datildey Col2 vagrave Row2 tương tự như trecircn Tới đacircy chuacuteng ta coacute thể chứng minh được rằng higravenh chữ nhật đoacute nằm trong higravenh vuocircng đề bagravei cho khi vagrave chỉ khi datildey Col2 kia lagrave 1 datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Column vagrave datildey Row2 cũng phải lagrave datildey con gồm caacutec phần tử liecircn tiếp nhau của datildey Row Đến đacircy thigrave cocircng việc rất đơn giản đếm xem datildey Col2 xuất hiện bao nhiecircu lần trong datildey Column vagrave datildey Row2 xuất hiện bao nhiecircu lần trong datildey Row vagrave gọi chuacuteng lần lượt lagrave cntCol vagrave cntRow Việc đếm coacute thể sử dụng KMP Z Algorithm Hash hellip Đaacutep số của chuacuteng ta cần tigravem chiacutenh lagrave cntCol cntRow Trường hợp higravenh chữ nhật cần kiểm tra chỉ chứa toagraven ocirc magraveu trắng thigrave cocircng thức trecircn sẽ khocircng đuacuteng vigrave sẽ coacute thể tồn tại higravenh chữ nhật được kẹp giữa caacutec ocirc magraveu đen nhưng vẫn thotildea matilden Vigrave vậy chuacuteng ta coacute thể tiacutenh bằng caacutech tiacutenh tổng số lượng higravenh chữ nhật thotildea matilden ở caacutec hagraveng chỉ toagraven magraveu trắng vagrave số lượng higravenh chữ nhật thotildea matilden ở caacutec cột chỉ toagraven magraveu trắng vagrave trừ đi phần giao của chuacuteng để traacutenh lặp vagrave sẽ coacute cocircng thức tiacutenh lagrave cntCol (3 t ndash h + 1) + cntRow (3t ndash w + 1) ndash cntCol cntRow Độ phức tạp lagrave O(3 t) Coacute thể tối ưu bagravei toaacuten lagrave co caacutec đoạn coacute số 0 liecircn tiếp lại với nhau khi đoacute số phần tử trong mảng ban đầu tối đa lagrave 2 t + 1 - 1 phần tử (2 t số 0 đại diện cho caacutec ocirc coacute magraveu đen vagrave 2 t ndash 1 ocirc coacute giaacute trị lagrave số lượng ocirc magraveu trắng liecircn tiếp đặt giữa 2 ocirc magraveu đen liecircn tiếp) thigrave ĐPT bagravei toaacuten lagrave O(2 t + 1) nhưng cagravei đặt phức tạp hơn một chuacutet

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 14: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

J Lời giải Nguyễn Diệp Xuacircn Quang (HCMUS-Intimidate) Trước hết ta sắp xếp tọa độ của caacutec bụi cỏ tăng dần Nếu gọi x min vagrave xmax lần lượt lagrave tọa độ nhỏ nhất vagrave lớn nhất trong caacutec bụi cỏ magrave ta cắt thigrave để đi đến x min vagrave xmax từ tọa độ 0 ta cần phải đi qua tất cả caacutec bụi cỏ coacute tọa độ nằm giữa x min vagrave xmax Do đoacute ta hoagraven toagraven coacute thể cắt đi tất cả caacutec bụi cỏ nằm giữa x min vagrave xmax Noacutei caacutech khaacutec K bụi cỏ được cắt sẽ nằm liecircn tiếp nhau Ta duyệt i từ 1 đến N - K + 1 tigravem quatildeng đường nhỏ nhất để cắt caacutec bụi cỏ từ i đến i+K-1 vagrave đaacutep aacuten sẽ lagrave min của caacutec quatildeng đường tigravem được Để cắt caacutec bụi cỏ từ i đến i+K-1 coacute hai caacutech di chuyển sau

0 rarr xi rarr xi+K-1 Quatildeng đường lagrave |x i| + |xi+K-1 - xi| 0 rarr xi+K-1 rarr xi Quatildeng đường lagrave |x i+K-1| + |xi+K-1 - xi|

Do đoacute quatildeng đường nhỏ nhất lagrave min(|x i| |xi+K-1|) + |xi+K-1 - xi| Độ phức tạp O(N log N) do chi phiacute sắp xếp

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 15: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

K Lời giải Lăng Trung Hiếu Để lagravem được bagravei nagravey cần coacute những kiến thức cơ bản vagrave nacircng cao của hagravem sinh số euler số phức tổ hợp aacutenh xạ Dễ thấy với k = 1 ta coacute cocircng thức m^n ta coacute thể dugraveng hagravem sinh như sau - Với một số lượng cố định a1 số 1 a2 số 2 am số m thigrave sẽ coacute n ((a1) (a2) (am)) caacutech chọn datildey =gt số caacutech chọn tổng quaacutet sẽ lagrave hệ số của x^n trong khai triển F = (1 + x1 + x^22 + x^33 + ) ^ m (n) (giả sử với m = 3 n = 11 ai lần lượt lagrave 245 thigrave ta coacute hệ số của x^11 coacute chứa x^2 2 x^4 4 x^5 5 11) Dugraveng Euler Formula thigrave sẽ coacute e^x = (1 + x1 + x^2 2 + ) =gt F = (e^x)^m n hay = n e^(xm) magrave dugraveng taylor lần nữa coacute e^(xm) = 1 + (xm) 1 + (xm)^2 2 + + (xm)^k k + =gt hệ số của x^n trong F lagrave m^n n n = m^n - Với k = 2 thigrave ta thấy số lượng caacutec số lagrave chia hết cho 2 necircn kết quả chiacutenh lagrave hệ số của n trong khai triển F = n (1 + x^22 + x^44 + + x^(2k)(2k)) ^ m theo biến đổi datildey taylor thigrave e^(-x) = (1 - x1 + x^22 - x^33 + + (-1)^k x^k k + ) =gt F = n ((e^x + e^-x) 2)^m = n (e^x + e^-x)^m 2^m Để tiacutenh (e^x + e^-x) ^m thigrave coacute thể for số lượng e^x lagrave a số lượng e^-x lagrave m - a =gt số mũ lagrave xa + -x(m - a) = x(2a - m) vagrave hệ số lagrave tổ hợp chập a của m phần tử = C(ma) Tiếp tục tiacutenh hệ số của n trong e^(kx) = k^nn (n coacute thể triệt tiecircu với n đầu tiecircn trong F necircn khaacute dễ dagraveng để tiacutenh) - Khoan nếu vậy để tiacutenh k = 3 thigrave rất khoacute necircn ta đi tigravem đặc điểm tại sao k = 2 thigrave ta lại coacute (e^x + e^-x) 2Từ khai triển taylor e^(kx) = 1 + (kx)1 + (kx)^22 + + (kx)^tt + từ đacircy ta thấy ta coacute thể giải một phương trigravenh với k1 k2 sao cho (k1 + k2) = 0 vagrave (k1^2 + k2^2) = 2 khi đoacute sẽ coacute e^(k1x) + e^(k2x) = 2 + 0 + 2x^22 + 0 + 2x^44 + + 2x^(2k)(2k) + = 2 (1 + x^22 + x^44 + + x^(2k) (2k) + ) Từ hệ trecircn ta thấy k1 k2 lagrave nghiệm của phương trigravenh (x^2 - 1) (bạn đọc tự chứng minh) =gt k1k2 lagrave 1 vagrave -1 Tương tự như vậy cho k = 3 Nếu ta đặt (k1 + k2 + k3) = 0 (k1^2 + k2^2 + k3^2) = 0 (k1^3 + k2^3 + k3^3) = 3 thigrave ta sẽ coacute k1k2k3 lagrave nghiệm của phương trigravenh (x^3 - 1) = 0 (caacutei nagravey phải khai triển ra sẽ thấy) hay k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Với k = 4 ta đi giải nghiệm của phương trigravenh x^4 - 1 = 0 thigrave sẽ được 4 nghiệm 1 -1 i -i - Với k = 3 bagravei toaacuten đặt ra lagrave đi tigravem hệ số của x^n trong khai triển của (e^(k1x) + e^(k2x) + e^(k3x)) ^ m với k1 = 1 k2 = (sqrt(-3) - 1) 2 k3 = (-sqrt(-3) - 1) 2 Ta thấy nếu đặt số lượng thằng e^(k1x) = a e^(k2x) = b thigrave số lượng thằng e^(k3x) = m - a - b vagrave hệ số lagrave m (a b (m - a - b)) vagrave số mũ lagrave e^(k1a + k2b + k3 (m - a - b)) Theo khai triển taylor số mũ của x^n trong (e^(dx)) lagrave d^n n necircn ta cần tiacutenh (k1a + k2b + k3 (m - a - b))^n Coacute thể đặt (k1a + k2b + k3 (m - a - b)) dưới dạng u + vsqrt(3)i ta cần tigravem (u + vsqrt(3)i)^n Ta coacute (a +

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 16: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

bsqrt(3)i) (c + dsqrt(3)i) = (ac + 3bd + (ad + bc)sqrt(3)i) = (A + Bsqrt(3)i) từ đacircy ta thấy coacute thể dễ dagraveng tiacutenh (u + vsqrt(3)i)^n bằng caacutech mũ hoaacute thocircng thường mỗi lần lưu lại hai giaacute trị uv trong biểu thức (u lagrave hệ số thực cograven v sqrt(3) lagrave hệ số phức) - Tương tự với k = 4 ta coacute khai triển (e^x + e^(-x) + e^(i) + e^(-i))^m ta coacute thể lựa chọn a thằng e^x b thằng e^(-x) c thằng e^(i) vagrave d thằng e^(-i) với a + b + c + d = m khi đoacute hệ số lagrave m(a b c d) vagrave số mũ lagrave e^(a - b + (c - d) i) Nếu lagravem như vậy thigrave ta sẽ mất độ phức tạp lagrave khoảng C(3m) log2(10^9) xấp xỉ 3 tỷ (chọn abc sau đoacute tiacutenh d = m - a - b - c vagrave nhacircn với caacutei mũ hoaacute số phức) sẽ bị TLE - Vậy phải lagravem sao với k = 4 Ta thấy khi mũ số phức ta chỉ cần quan tacircm đến a - b vagrave c - d Nếu ta đặt a + c = u vagrave a + d = v vigrave a + b + c + d = m =gt a - b = (u + v - m) vagrave c - d = u - v với 0 lt= u lt= m vagrave 0 lt= v lt= m Vậy thay vigrave for 3 vograveng abc ta chỉ cần for 2 vograveng uv vagrave hệ số mỗi lần lựa chọn lagrave tổ hợp chập u của m nhacircn với tổ hợp chập v của m Để dễ hiểu ta gọi tập ABCD lần lượt lagrave tập gồm abcd phần tử thuộc m với A hợp B hợp C hợp D = S chứa m phần tử vagrave ABC D đocirci một khocircng coacute phần tử chung gọi U = A hợp C V = A hợp D thigrave với mỗi ABCD sẽ xaacutec định duy nhất một UV vagrave với mỗi UV sẽ xaacutec định duy nhất một ABCD (A = U giao V B = S - U - V C = U - V D = V - U) Như vậy coacute một song aacutenh từ ABCD sang UV hay số caacutech tiacutenh số tập ABCD chiacutenh lagrave số caacutech tiacutenh số tập UV Lời giải Nguyễn Ngọc Trung Bagravei toaacuten coacute thể phaacutet biểu lại dưới dạng đơn giản như sau ldquoĐếm số datildey (coacute thứ tự) gồm n phần tử magrave mỗi phần tử coacute thể từ 1 đến m vagrave số lượng mỗi số từ 1 đến m xuất hiện trong datildey lagrave một bội của krdquo Giả sử ta đatilde xaacutec định được số lượng xuất hiện của i lagrave a i thigrave số datildey sinh ra lagrave n a 1 a2 hellip am Do đoacute số lượng datildey cần tigravem lagrave hệ số của x n của hagravem sinh n(1 + xk k + x2k (2k) + x3k (3k) + hellip)m () Chuỗi nagravey rất giống với chuỗi của hagravem số e x = 1 + x 1 + x2 2 + x3 3 + hellip nhưng bị lượt bỏ đi số hạng coacute số mũ khocircng chia hết cho k Để giải quyết vấn đề nagravey ta phải sử dụng đến số phức (Bạn nagraveo học số phức lớp 12 coacute thể đatilde gặp bagravei tiacutenh C(0 n) + C(k n) + C(2k n) + hellip yacute tưởng hoagraven toagraven tương tự như thế) Gọi u lagrave k-th root của đơn vị ta coacute tiacutenh chất sau đacircy

1 u0i + u1i + u2i + + u(k - 1)i = k với i k = 0 2 u0i + u1i + u2i + + u(k - 1)i = 0 với i k = 1 2 k - 1

Chuacute yacute thecircm lagrave ecx = 1 + cx 1 + c2x2 2 + c3x3 3 + hellip necircn coacute thể dễ dagraveng thấy được hagravem sinh () trở thagravenh n(e x + eux + eu^2x + + eu^(k - 1)x)^m k^m Với k cụ thể từ 2 đến 4 ta sẽ cần phải xử lyacute caacutec hagravem sinh sau

1 k = 2 n(ex + e-x)m 2^m 2 k = 3 n(ex + eux + eu^2x)m 3^m trong đoacute u lagrave 2th root của đơn vị u = (sqrt(-3) - 1) 2

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 17: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

3 k = 4 n(ex + e-x + eix + e-ix)m 4^m Ta sẽ khai triển hagravem sinh để lấy tất cả số hạng dạng e d sau đoacute việc cograven lại lagrave tiacutenh hệ số của x n của e d vagrave noacute chiacutenh lagrave dn n (hiển nhiecircn n sẽ bị triệu tiecircu necircn ta khocircng cần quan tacircm)

1 Trường hợp k = 2 khaacute đơn giản dugraveng khai triển Newton ta cograven coacute thể giải cho m lecircn tới 10^6

2 Trường hợp k = 3 ta cũng coacute thể dugraveng khai triển Newton cho 3 số trong O(m^2) nhưng rắc rối ở đacircy lagrave dạng của số d trong số hạng e d tigravem được Noacute sẽ coacute dạng a + bsqrt(-3) Để vượt qua ta coacute thể định nghĩa thecircm một kiểu số Z[sqrt(-3)] (tập hợp tất cả caacutec số coacute dang a + bsqrt(-3) a b lagrave số nguyecircn) vagrave caacutec pheacutep toaacuten như + - coacute thể thực hiện trecircn Z[sqrt(-3)] Khi đoacute (a + bsqrt(3))n coacute thể tiacutenh tương tự như tiacutenh lũy thừa cho số nguyecircn vagrave sẽ coacute dạng c + dsqrt(-3)

3 Trường hợp k = 4 dugraveng khai triển Newton cho 4 số sẽ coacute độ phức tạp lagrave O(m^3) Nhưng d coacute dạng a + bi với -m lt= a b lt= m necircn sẽ coacute O(m^2) số d phacircn biệt Ta coacute thể chạy O(m^3) khai triển Newton (với hệ số khaacute nhỏ) để tigravem số lượng thằng a + bi Một caacutech khaacutec lagrave biến đổi (e x + e-x + eix + e-ix)m = (ex + eix)m(1 + e-x - ix)m Dugraveng khai triển Newton cho 2 số cho từng vế ta sẽ liệt kecirc được tất cả caacutec số hạng của hagravem sinh trong O(m^2) Cũng giống như trường hợp k = 3 ta định nghĩa thecircm kiểu số Z[i] (tập hợp tất cả caacutec số coacute dạng a + bi a b lagrave số nguyecircn)

Độ phức tạp O(m^2log(n))

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 18: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

L Lời giải Lecirc Anh Đức (amazingbamboo_with_coccoc) Gọi lagrave độ dời của vị triacute sau bước so với Khi đoacute lagrave caacutec biến ngẫu nhiecircn xaacutec định trong đoạn Đề bagravei yecircu cầu tiacutenh

Sử dụng tiacutenh chất linearity of expectation ta coacute

Nhận thấy tiacutenh độc lập của caacutec chiều vagrave ta tiếp tục với chiều chiều hoagraven toagraven biến đổi tương tự

Đến đacircy chỉ cần tiacutenh được vagrave lagrave bagravei toaacuten giải xong chuacute yacute lagrave đề bagravei yecircu cầu in ra giaacute trị chiacutenh xaacutec của kỳ vọng necircn ta khocircng thể tiacutenh toaacuten xấp xỉ Đi tiacutenh caacutec giaacute trị kỳ vọng trecircn đối với biến chiacutenh lagrave đi giải bagravei toaacuten một chiều Trecircn trục số bắt đầu từ điểm 0 ta di chuyển bước tại mỗi bước sang traacutei với xaacutec suất

sang phải với xaacutec suất giữ nguyecircn vị triacute với xaacutec suất Như vậy lagrave tổng của N biến ngẫu nhiecircn độc lập cugraveng phacircn phối

Ta coacute

Lại coacute

Necircn

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo

Page 19: Editorial - acmicpc-vietnam.github.ioacmicpc-vietnam.github.io/2018/central/Editorial.pdf · trường hợp đầu với mọi i j. Với mỗi trường hợp, bài toán trở

Vậy

Đề bagravei yecircu cầu tiacutenh kết quả theo modulo necircn caacutec số vagrave cũng cần biểu diễn theo modulo Chuacute yacute lagrave caacutec xaacutec suất đều lagrave số hữu tỉ vagrave pheacutep chia coacute thể tiacutenh bằng caacutech nhacircn với nghịch đảo modulo