You are on page 1of 15

2006National School of Information Winter Camp Lecture

Xem xét các trường hợp đặc biệt

Fudan attached Li Tianyi

Trường hợp đặc biệt trong các kì thi tin học

(Sơ lược)
Đó là một tư tưởng toán học quan trọng từ những trường hợp đặc
biệt. Các trường hợp đặc biệt chủ yếu được chia thành các trường
hợp đơn giản và cực đoan.
Thông qua một số ví dụ, bài luận sau đây giải thích việc áp dụng ý
tưởng này trong cuộc thi tin học từ những trường hợp đặc biệt,
đồng thời chắt lọc những điểm chung của chúng và tiết lộ hàm ý
quan trọng của tư tưởng này.

第 1 页 共 15 页
2006National School of Information Winter Camp Lecture

(Mục lục)
Ví dụ 1 Bra
§1 Mô tả vấn đề
§2 Giải pháp
§3 tóm lược
Ví dụ 2 Sko
§1 Đặt câu hỏi
§1.1 Mô tả vấn đề
§1.2 Ý tưởng ban đầu
§2 Hai thuật toán sơ bộ
§2.1 Thuật toán Euclid
§2.2 Giải pháp của phương trình tuyến tính mô-đun
§3 Giải quyết vấn đề
§3.1 Chứng minh phỏng đoán
§3.2 Triển khai thuật toán
§4 Tóm lược
Ví dụ 3 Polygon
§1 Mô tả vấn đề
§2 Giải quyết vấn đề
§2.1 Một ý tưởng đơn giản
§2.2 Xem xét các trường hợp đặc biệt

Tóm tắt

(Phần thân bài)


 ví dụ 1
 1. Mô tả vấn đề (phỏng theo POI 2003-2004 Bra)
 Xét một đoạn mạch có n cửa. Những cánh cửa này được đánh số 0,1,2 、 ......
第 2 页 共 15 页
2006National School of Information Winter Camp Lecture

、 n-1. Mỗi cửa có một số lượng đầu vào và đầu ra cố định. Các đầu vào và đầu
ra có thể không phải là một trong ba trạng thái 0,1,1 / 2. Mỗi đầu vào kết nối một
đầu ra của một cửa. Trạng thái của đầu vào giống như trạng thái đầu ra mà nó
được kết nối. Mỗi đầu ra có thể được kết nối với một số đầu vào. Các cửa được
đánh 0 và 1 là đặc biệt, chúng không có đầu vào, tổng đầu ra của các cửa được
đánh 0 là 0 và tổng đầu ra của các cửa được đánh 1 là 1. Chúng ta nói rằng trạng
thái đầu ra của cửa là "hợp lệ" khi và chỉ khi một trong các điều kiện sau được
đáp ứng.
 a) Nó bằng 0 và 0 lớn hơn 1 ở đầu vào của cửa này.
 b) Nó bằng 1/2 và đầu vào của cửa này bằng 0 và 1.
 c) Nó bằng 1 và đầu vào của cửa này lớn hơn 1 đến 0.
 d) Bằng số cửa, số cửa bằng 0 hoặc số 1.
 Nếu trạng thái đầu ra của tất cả các cửa là "hợp lệ", thì ta nói mạch là "hợp lệ".
Nếu trạng thái đầu ra của cửa giống nhau trong tất cả các mạch "hợp lệ", trạng
thái đầu ra của nó là cố định. Đảm bảo sự tồn tại của một mạch "hiệu quả".
 Bài tập:
 Viết chương trình
 Đọc mô tả của mạch từ đầu vào tiêu chuẩn
 Đối với mỗi cửa, hãy kiểm tra xem trạng thái đầu ra của nó có cố định hay
không và nếu có, hãy xác định trạng thái của nó.
 Ghi trạng thái của cửa với trạng thái đầu ra cố định vào đầu ra tiêu chuẩn
 Đầu vào:
 Đầu vào chuẩn chứa một số nguyên n,. N-2 dòng tiếp theo bao gồm mô tả về các
kết nối cho mỗi cửa. Dòng i mô tả đầu vào của cửa đầu tiên: số nguyên đầu tiên
k_i (), có nghĩa là cửa có k_i đầu vào và k_i số tiếp theo đại diện cho số k_i cửa.
Các số nguyên trong các hàng được phân tách bằng dấu cách. Tổng số lượng đầu
vào cho mỗi cửa không vượt quá 200.000.
 Đầu ra:
 Chương trình của bạn sẽ xuất ra n dòng vào đầu ra tiêu chuẩn. Những gì được
bao gồm trong dòng i phụ thuộc vào trạng thái đầu ra của cửa được đánh số i-1.
  0 --- nếu nó luôn là 0
  1/2 --- nếu luôn là 1/2
 1--- nếu nó luôn là 1
 ?--- nếu nó không chắc chắn
Ví dụ:
Input:
5
201
242
224
Output:
0
1
1/2
?
第 3 页 共 15 页
2006National School of Information Winter Camp Lecture

2. Giải pháp
Bởi vì có các vòng trong sơ đồ, mỗi cửa khó có thể xác định trực tiếp trạng thái đầu
ra của nó có cố định hay không, điều này gây khó khăn cho việc giải quyết vấn đề.
Đặt P (i) thành trạng thái đầu ra của cổng i.
Các giá trị nhỏ nhất và lớn nhất mà P min (i) và Pmax (i) có thể đạt được trong tất cả
các mạch "hợp lệ", tương ứng là các cực trị của P (i).
Rõ ràng, nếu Pmin (i) là Pmax (i), trạng thái đầu ra của cổng i là cố định, ngược lại
thì không cố định.
Do đó, chúng ta chỉ cần tìm Pmin (i) và Pmax (i).
C j, i đại diện cho số lượng kết nối đến đầu ra cổng j của tất cả các đầu vào của cổng
n 1
i.
Xét 
C j ,i P  j 
j 0
n 1

Cj 0
j ,i

Điều này tương đương với giá trị trung bình của tất cả các trạng thái đầu vào của
cổng i.
Theo định nghĩa về "hiệu quả" trong tiêu đề, trong tất cả các mạch "hợp lệ":
Nếu giá trị nhỏ hơn 1/2, thì P (i) là 0
Nếu giá trị bằng 1/2 thì P (i) là 1/2
Nếu giá trị lớn hơn 1/2 thì P (i) là 1
Chúng tôi làm điều này. Trạng thái đầu ra của tất cả các cửa được đánh dấu là 0 đầu
tiên, lúc này chỉ có Cổng 1 là không hợp lệ. Bắt đầu với Cổng 1 và thay đổi trạng thái đầu
ra của nó thành 1. Sau đó tiếp tục tìm sự mâu thuẫn và lặp lại.
Nó được chỉ ra dưới đây rằng sự lặp lại như vậy phải được kết thúc và khi kết thúc
lặp lại, P (i) là Pmin (i).
Chứng minh: Giả sử mệnh đề không đúng.
Kể từ khi quá trình bắt đầu ,với 
i 0  i  n  1
thỏa mãn  
P i  Pmin  i 
. Bởi vì mệnh

P  k   Pmin  k 
đề không đúng, nó nhất định sẽ xuất hiện vào thời điểm nào đó. Và trước

i  0  i  n  1 P  i   Pmin  i 
thời điểm đó, tất nhiên với vẫn thỏa mãn.
n 1

C
j 0
j ,k P j
n 1

C
j 0
j ,k
Xét , là giá trị trung bình của tất cả các trạng thái đầu vào cho

cổng k. Giá trị này đã khá lớn, khiến P(k) và P min (k) không tuân thủ theo mệnh

第 4 页 共 15 页
2006National School of Information Winter Camp Lecture

n 1 n 1

C
j 0
j ,k P  j C
j 0
P
j , k min  j
n 1
 n 1

 C j ,k
j 0
C
j 0
j ,k
đề . Lưu ý rằng, điều này có nghĩa là không có
P  k   Pmin  k 
mạch "hiệu quả" để thỏa mãn . Điều này mâu thuẫn với định
nghĩa của P min(k).
Bằng chứng.
Bởi vì trạng thái của mỗi cửa thay đổi tối đa hai lần (0 đến 1/2,1/2 đến 1),tổng số
đầu vào trênmỗi cửa không vượt quá 200.000 vàlần lặp kết thúc sau không quá 2 x
200.000 x 400.000 lần lặp. Tại thời điểm này, có P(i) - Pmin(i) ( 
0  i  n  1
.

Tương tự, chúng ta có thể tìm thấy Pmax(i).  0  i  n  1 Tại thời điểm này, toàn bộ
vấn đề được giải quyết.

3. Tóm lược

Một tình huống cực đoan là một biểu hiện của một tình huống đặc biệt. Nhiều thuộc tính
trong câu hỏi thường được thể hiện thông qua các đối tượng có đặc tính cực trị (ví dụ: giá
trị cực trị trong câu hỏi này). Đây là điều cho phép chúng ta tập trung vào chúng để tìm ra
những đột phá và câu trả lời.

Ví dụ 2
1. Đặt câu hỏi
1.1 Mô tả vấn đề
Sko ( POI 2004-2005 )
Hiệp sĩ di chuyển trên một bàn cờ vô hạn. Mỗi chuyển động anh ta có thể thực hiện
có thể được biểu diễn dưới dạng một cặp số nguyên. Một cặp số nguyên chỉ ra rằng một
kỵ sĩ có thể di chuyển từ một điểm có tọa độ 
x, y 
đến điểm có tọa độ 
x  a, y  b 
hoặc

 x  a, y  b  . Mỗi kỵ sĩ có một tập hợp một số cặp số nguyên đại diện cho tất cả các
chuyển động mà kỵ sĩ có thể thực hiện. Đối với mỗi hiệp sĩ, có thể giả định rằng nó bắt
đầu từ gốc (0, 0) và điểm có thể đạt được không phải là tất cả trên một đường thẳng.

Chúng ta nói rằng hai hiệp sĩ là "giống nhau", có nghĩa là số điểm mà hai hiệp sĩ có
thể đạt được ngay từ đầu (0, 0) (bạn có thể đi bất kỳ bước nào và hai hiệp sĩ không nhất

thiết phải đi cùng một bước và số bước đi của 2 hiệp sĩ không giống nhất thiết phải bằng
nhau) hoàn toàn giống nhau. Như bạn có thể thấy, đối với mỗi hiệp sĩ, có một hiệp sĩ
"giống" anh ta và có thể được biểu diễn bằng hai cặp số nguyên.Task:
第 5 页 共 15 页
2006National School of Information Winter Camp Lecture

Viết 1 chương trình và thực hiện như sau:


 Nhập 1 số cặp số nguyên đại diện cho chuyển đông của hiệp sĩ.
 Xác định 2 cặp số nguyên đại diện cho chuyển động của người hiệp sĩ “giống
nhau”.
 In ra 2 cặp số nguyên này.
Input:
Dòng đầu nhập số nguyên n đại diện cho số cặp số nguyên 
3  n  100 
.Trong n
hàng tiếp theo, một cặp số nguyên trên mỗi hàng đại diện cho một chuyển động của kỵ sĩ.
Trong n hàng này, hai số nguyên a và bi cách nhau bởi 1 khoảng trắng
 100  ai , bi  100  。Hãy giả sử rằng  ai , bi  không phải (0, 0) .
Output:
Trong dòng đầu tiên của output, xuất ra 2 số nguyên a và b cách nhau bởi 1 dấu cách.
Dòng thứ 2 in ra 2 số nguyên c và d cách nhau bởi 1 dấu cách
(10000  a, b, c, d  10000) . Bốn số nguyên này phải thỏa mãn điều mà 1 hiệp sĩ mô tả

bởi (a,b) và là (c,d) "giống" với hiệp sĩ miêu tả ở input


Ví dụ:
Input:
3
24 28
15 50
12 21
Output:
468 1561
2805 9356
Hoặc
30
01

1.2 Ý tưởng ban đầu


Để xem hiệp sĩ đã cho giống với hiệp sĩ nào, trước tiên bạn cần biết được những
điểm mà 1 hiệp sĩ đã cho có thể đạt được. Coi 1 hiệp sĩ xuất phát từ điểm (0, 0) ,điểm có

thể đạt được là điểm khả thi của hiệp sĩ. Tập hợp các điểm khả thi của 1 hiệp sĩ được gọi
là tập điểm khả thi cho hiệp sĩ đó.
Bảng đường đi là 1 ma trận 2 chiều và chúng ta có thể xem xét tình huống đơn giản
hơn đó là trường hợp 1 chiều
Tại thời điểm này, mỗi hiệp sĩ di chuyển trên 1 đường thẳng và nếu anh ta có n
 1  i  n   ai  bước di chuyển, r   a1 , a2 , , an  chuyển động thứ i của hiệp sĩ được biểu
diễn dưới dạng số nguyên, vì thế anh ta có thể đến được 1 điểm có tọa độ ngang là X với
r| X。
Đối với một tình huống hai chiều không suy giảm (nghĩa là các điểm mà một hiệp sĩ
第 6 页 共 15 页
2006National School of Information Winter Camp Lecture

có thể đạt tới, không phải tất cả đều nằm trên một đường thẳng), có thể giả định rằng tập
hợp các điểm khả thi của anh ta giống như tập hợp tất cả các điểm đáp ứng một trong các
sau ba điều kiện.
Ba điều kiện này là:(1)r | X+Y
(2)r| X+qY
(3)r|pX+qY
(p, q, r đều là số nguyên xác định). 。
Hai giả định đầu tiên không chính xác khi xét trường hợp n=2,
(a1,b1)=(2,3)và(a2,b2)=(6,6). Đối với giả thuyết cuối cùng, rất khó để biết các tham số có đúng
hay không trong một thời gian vì có nhiều tham số hơn.

2. Hai thuật toán chuẩn bị


2.1 Thuật toán Euclid
Ký hiệu ước số chung lớn nhất của các số nguyên không âm a và b là gcd(a,b).
Phương pháp phổ biến nhất được sử dụng để tìm ước chung lớn nhất là dựa vào thuật
toán Euclid, dựa trên định lý sau
Định lý đệ quy GCD
Với bất kì số nguyên không âm a và bất kỳ số nguyên dương b nào, ta đều có
gcd(a,b)=gcd(b,a mod b)
Chứng minh: Phản chứng gcd(a,b)|gcd(b,a mod b)。 Cho d= gcd(a,b), thìd|a và
a
 
d|b。 a mod b=a-qb,trong đó q=  b  。 Vì d|a 且 d|qb,nên d|a-qb,tức là d|

a mod b。 Do đó,gcd(a,b) |gcd(b,a mod b)。


Chứng minh lại gcd(b,a mod b)|gcd(a,b)。 Cho d=gcd(b,a mod b),thì d|và d|
a-qb,nên có d|a,do đó gcd(b,a mod b)|gcd(a,b)。
Vì gcd(a,b) | gcd(b,a mod b) và gcd(b,a mod b) | gcd(a,b)do đógcd(a,b)=gcd(b,a
mod b)。
Phần giải của thuật toán Euclid như sau

Euclid(a,b)
if b=0
then return a
else return Euclid(b,a mod b)

Xét số lượng lần gọi đến thủ tục Euclid.


Có thể đặt a >b  0, ngược lại nếu b>a  0 Euclid (b,a) sẽ được gọi sau 1 lần thực
hiện, nếu b=a>0, quá trình sẽ chỉ thực hiện 1 lần.
1   1  5   1  5  
k k

   
5   2   2  
Gọi F k =   (k là số nguyên dương bất kì),điều dưới đây

chứng minh: Nếu a>b  0 và Euclid(a,b), n  1, thực hiện đệ quy, sau đó a  Fn+2 và b  Fn+1
第 7 页 共 15 页
2006National School of Information Winter Camp Lecture

Chứng minh: Khi n = 1, b  1= F2 và 1 lần nữa a>b, ta có a  2 = F3 vì vậy mệnh đề


hoàn toàn đúng.
Giả sử mệnh đề đúng khi n = k. (k là số nguyên không nhỏ hơn 1).
Khi n=k+1, vì k>0 nên b>0, và Euclid(a,b) được gọi đệ quy,
Theo giả thiết , đã biết b  Fk-2 và có (a mod b)  Fk-1. Ta có
a
 
b+(a mod b)=b+(a-  b  b)  a

Vì thế, a  b+(a mod b)  Fk+2+ Fk+1= Fk+3。


Vì vậy, khi n = k + 1, mệnh đề cũng đúng.

Từ mệnh đề trên, ta có thể suy ra: Với bất kỳ số nguyên k  1, nếu a> b = 0 và
b <Fk + 1, thì Euclid (a, b) có ít hơn k lệnh gọi đệ quy..
1   1  5   1  5  
k k

   
5   2   2  
Vì Fk=   ,giới hạn của độ phức tạp thời gian của thuật toán

Euclid là O (lg (min (a, b))


2.2 Giải pháp của phương trình tuyến tính mô-đun
2.2.1 Định nghĩa của một phương trình tuyến tính mô-đun
Một phương trình tuyến tính mô-đun là một phương trình có dạng ax  n (mod b). (với a,
b, x, n là các số nguyên và ab  0).
2.2.2 Nghiệm của phương trình tuyến tính modun
Xét phương trình tuyến tính modun tổng quát ax  n (mod b), nó có thể được chuyển
đổi thành phương trình ax+by=n.
Nếu n không chia hết cho gcd(a,b), rõ ràng là không có giải pháp nào.
Nếu n chia hết cho gcd (a,b).
Cho d=gcd (a,b). Hãy xem xét một so sánh của phương trình đặc biệt ax  d(mod b).
a b
Tại thời điểm này, phương trình có thể được viết lại thành ax+by=d. Cho a'= d b'= d

. Theo định lý Pei Shu, có các số nguyên p và q thỏa mãn a'p-b'q=1, nên phương trình có
nghiệm.
pn
x0 
Cho d phải có ax0  n (mod b), x0 là 1 nghiệm đặc biệt của phương trình.

mb
x0 
Cho d (m là bất kì số nguyên nào), chúng ta có thể thấy cũng có ax 1  n(mod b).

b
Ngoài ra, đối với bất kỳ x1, nếu ax1  n(mod b), thì b|a(x1-x0),tức là d |x1-x0。

2.2.3 Các phương pháp tìm kiếm các giải pháp đặc biệt
Một nghiệm đặc biệt của phương trình ax  d (mod b) có thể nhận được bằng đoạn mã sau:
第 8 页 共 15 页
2006National School of Information Winter Camp Lecture

Extend_Euclid(a,b)
if b=0
then return(a,1,0)
(d’,p’,q’) Extend_Euclid(b,a mod b)
a
 
(d,p,q)  (d',q',p'-  b  q')
return(d,p,q)

Đối với phương trình tuyến tính mod tổng quát ax  n (mod b), đoạn mã sau đây cho 1
nghiệm đặc biệt

Modular_Linear_Equation_Solver(a,n,b)
(d,x',y') Extended_Euclid (a,b)
if d|n
n
then xx’ ( d ) mod b
else no solution

Dễ dàng biết, độ phức tạp về thời gian của thuật toán cũng là O (lg (min (a, b)).

3. Giải pháp cho vấn đề


3.1 Bằng chứng cho phỏng đoán
3.1.1 Tính đặc biệt của phỏng đoán
Cho S (p, q, r) là tập hợp của tất cả các điểm thỏa mãn r|pX-qY (p, q, r là các số
nguyên, r  0).
Xét theo phỏng đoán ban đầu, đó cũng là mệnh đề cần chứng minh: đối với trường
hợp hai chiều không suy biến (nghĩa là điểm mà hiệp sĩ có thể đạt tới không nằm trên một
đường thẳng), có các số nguyên p, q, r, r  0 thỏa mãn điểm khả thi của hiệp sĩ tập hợp
giống như S (p, q, r).
Khi n = 1, nó suy biến thành một tình huống một chiều (nghĩa là các điểm mà hiệp sĩ
có thể đạt được đều nằm trên một đường thẳng), điều này không thỏa mãn phỏng đoán.
Vì giới hạn của n là trên 100, tương đối lớn để tính đến, trước tiên hãy xét n=2 đơn
giản hơn.(N=2 là trường hợp không suy biến nhỏ nhất). Những phần bàn luận dưới đây
cho thấy chỉ cần xét TH n=2;
Giả sử rằng khi n = k (k là bất kỳ số nguyên dương nào), phỏng đoán là đúng. Khi n
= k + 1, giả sử rằng tập hợp các điểm khả thi cho các kỵ sĩ chỉ có k nước đi đầu tiên giống
với S (p, q, r0). Đối với một hiệp sĩ có tất cả k + 1 loại chuyển động, điều kiện cần và đủ để
(X, Y) là điểm khả thi của anh ta là có một số nguyên m thỏa mãn p(X-
mak+1)+q(Y-mbk+1)  0(mod r0)。
第 9 页 共 15 页
2006National School of Information Winter Camp Lecture

Phương trình trên tương đương với (pak+1+qbk+1)m  pX+qY(mod r0). Hãy xem xét
phương trình tuyến tính mô-đun này, biết rằng nó có nghiệm tương đương với
(pak+1+qbk+1, r0)|pX+qY. Cho r =(pak+1+ qbk+1, r0),biết rằng phỏng đoán cũng đúng khi
n = k + 1.

Vì vậy, nếu bạn giải quyết n = 2, thì tất cả các trường hợp của n  2 đều được giải
quyết.
Khi n là 2, kỵ sĩ chỉ có hai chuyển động (a 1,b1) và (a2,b2). Và a1b2-a2b1<>0 (nếu không
thì nó suy biến thành trường hợp một chiều).
Để đi sâu hơn vào bản chất của vấn đề này, chúng ta cũng có thể chứng minh mệnh
đề 1 đơn giản hơn.

Đề xuất 1: Hiệp sĩ có hai kiểu di chuyển (a1,b1) và (a2,b2), a1b2-a2b1<>0, a1 và a2 nguyên


tố cùng nhau, b1 và b2 nguyên tố cùng nhau với các số nguyên p, q, r, r  0, và tập hợp các
điểm khả thi thỏa mãn hiệp sĩ cũng giống với S (p, q, r).
Sự khác biệt cơ bản giữa mệnh đề 1 và mệnh đề ban đầu là nó thêm một điều kiện: a 1
và a2 nguyên tố cùng nhau, b1 và b2 nguyên tố cùng nhau
3.1.2 Bằng chứng xây dựng của mệnh đề 1
a x  a2 y  1 , và cho s1 , s2 là 2 số nguyên
Định lý Shu Pei, số nguyên x, y thỏa mãn 1

thỏa mãn
a1s1  a2 s2  1 .

Đặt
p  b1s1  b2 s2 , q  1, r  a1b2  a2b1

Điều cần thiết trước, nghĩa là, nếu điểm  X , Y  là điểm khả thi của hiệp sĩ thì
r pX + qY

pa1  qb1   b1s1  b2 s2  a1  b1  (a1s1  1)b1  b2 s2 a1


 a2 s2b2  a1s2b2  s2 (a1b2  a2b1 )  s2 r

Tương tự ta có
pa2  qb2   s1r

Vì điểm  X ,Y  là điểm khả thi của hiệp sĩ, giả sử hiệp sĩ sẽ thực hiện di chuyển

 a1 , b1  c lần, và sau khi di chuyển


 a2 , b2  được thực hiện d lần, hãy đếm điểm từ điểm gốc

 X ,Y 
 pX  qY  p  ca1  da2   q  cb1  db2 
 c( pa1  qb1 )  d ( pa2  qb2 )  cs2 r  ds1 r  r  cs2  ds1 

r pX + qY

第 10 页 共 15 页
2006National School of Information Winter Camp Lecture

Để chứng minh tính đầy đủ một lần nữa, nghĩa là, nếu
r pX + qY
, thì điểm  X ,Y 
là điểm khả thi của hiệp sĩ.
r pX + qY
Vì of , is set pX  qY  kr to pX  Y  kr
 X  X 1  0  X  a1s1  a2 s2    ka1a2  ka1a2 
  Xa1s1  ka1a2    Xa2 s2  ka1a2 
 ( Xs1  ka2 )a1   Xs2  ka1  a2
Y  pX  (Y  pX )  Xp  kr
 X  b1s1  b2 s2  b1  k  a1b2  a2b1 
  Xb1s1  ka2b1    Xb2 s2  ka1b2 
  Xs1  ka2  b1   Xs2  ka1  b2
∴ Hiệp sĩ sẽ di chuyển (a1, b1) trong (Xs1 + ka2) lần, và sau khi di chuyển (a2, b2) trong (Xs2-
ka1) lần, anh ta sẽ đến điểm (X, Y) từ điểm gốc.
Đến khi này, mệnh đề 1 đã được chứng minh.
3.1.3 Quay lại phỏng đoán
Bây giờ, để chứng minh phỏng đoán ban đầu, chỉ cần chuyển nó thành Mệnh đề 1.
Mệnh đề 1 là 1 tính chất đặc biệt, a 1 và a2 nguyên tố cùng nhau, b1 và b2 nguyên tố
cùn nhau.
Cho d1 = (a1,a2) và d2 =(b1,b2). Sau đó, hãy xem xét một hiệp sĩ có hai loại chuyển
động (a1 / d1, b1 / d2) và (a2 / d1, b2/ d2). Có các số nguyên p, q, r, r  0 và tập điểm khả thi
của các hiệp sĩ giống với S ( p, q, r).
Cho d = (p, q), chỉ xét trường hợp d = 1, ngược lại cho p = p / d, q = q / d, r = r / d.
Phải có (p, r) = 1, nếu không, hoành độ của các điểm trong S (p, q, r) đều là bội của
(p, r), nguyên tố cùng nhau với b1/ d 2 và b 2 / d 2 , mâu thuẫn với điều kiện.
rx  1  p  modt 
Cho (r, d 1) = m, d 1 = mt. Phương trình vô snghiệm phải có
nghiệm nguyên. Gọi x0 là một nghiệm của phương trình vô nghiệm, đặt p '= rx 0 + p thì
phải có (p', m) = 1, (p ', t) = 1 nên (p', d1) = 1.
Tương tự, có thể nhận được q '
p 'và q' thỏa mãn (p ', d 1) = 1, (q', d2) = 1, thì chúng ta có thể biết các điểm khả thi
của các hiệp sĩ với (a 1, b 1) và (a 2, b 2). Tập hợp là S (p 'd 2, q' d 1, rd1d 2).
=> phỏng đoán ban đầu đã được chứng minh.
3.2.1 Từ bằng chứng đến thuật toán
Thông qua chứng minh của phỏng đoán, chúng ta có thể biểu diễn tập hợp các điểm
khả thi của một hiệp sĩ chỉ với hai loại chuyển động trong S (p, q, r). Theo chứng minh
xây dựng trước đây cho n> 2, phạm vi có thể được biểu diễn được mở rộng cho bất kỳ kỵ
sĩ nào. Tuy nhiên, bài toán yêu cầu đầu ra là một chuyển động được sở hữu bởi một kỵ sĩ
chỉ có hai nước đi nhưng tập điểm khả thi là S (p, q, r).
p q r
p q r
Để tạo d=(p,q), bạn cũng có thể đặt d=1, nếu không thì đặt d, d, d

Đặ t d1= (p,r), d2=(q,r), p'=p/d1, q'=q/d2, r'=r/(d1×d2)


第 11 页 共 15 页
2006National School of Information Winter Camp Lecture

Gọi t là một nghiệm của phương trình tuyến tính môđun q’t  -1(mod r’)
Khi đó (0, d2r ') và (d1, d2t) đáp ứng các yêu cầu và tính đúng đắn của chúng có thể
nhận được từ chứng minh của Mệnh đề 1.
3.2.3 Quy trình chính
Ý tưởng cơ bản của thuật toán là chuyển đổi tập hợp điểm khả thi của các kỵ sĩ thành
dạng S (p, q, r) và sau đó là dạng thành một tập hợp điểm khả thi của một hiệp sĩ chỉ với
hai chuyển động.
Đặt P thành giá trị tuyệt đối lớn nhất của tất cả ai và bi (1  i  n,n  N), và thuật toán
có độ phức tạp là O (nlg | P |)。
4. Tóm lược
Mối liên hệ giữa điều kiện của một số câu hỏi và kết quả không rõ ràng, khó tìm ra bước
đột phá. Từ cái gốc nhưng không mất đi tầm quan trọng của nó (chẳng hạn như tình
huống một chiều trong câu hỏi này), có thể thấy rõ vấn đề; hoặc tình huống đơn giản
(trong câu hỏi này) Mệnh đề 1) như một tấm gương để tạo ra sự tương phản nhất định
giữa tình huống chung (phỏng đoán trong câu hỏi này), và tìm ra sự khác biệt cơ bản nhất
giữa hai tình huống từ việc so sánh, và sau đó nghĩ ra đúng hướng để tìm ra một giải pháp
hoàn chỉnh cho vấn đề.

Đặc biệt, trong một số bài toán xây dựng, có nhiều tình huống khả thi, nhưng chúng ta chỉ
cần một trong số đó. Lúc này, bạn chỉ cần xem xét một tình huống tương đối đơn giản (từ
mệnh đề 1 đến mệnh đề 2 trong câu hỏi này) để giải quyết vấn đề một cách nhanh chóng
và hiệu quả. Có rất nhiều ví dụ như vậy, chẳng hạn như Ví dụ 3.

Ví dụ 3

1 Mô tả vấn đề
Polygon(BOI2005)
Hãy tìm một đa giác lồi sao cho các cạnh của nó có độ dài cho trước
Input: Tên tệp poly.in
Dòng đầu tiên của tệp chứa số nguyên n 
3  n  1000 
, đại diện cho số cạnh của đa giác

lồi. N dòng tiếp theo, mỗi hàng chứa một số nguyên a i  1  ai  10000  đại diện cho độ dài
của n cạnh.
Output:
Nếu tồn tại 1 đa giác lồi như vậy, tệp đầu ra poly.out phải chứa n dòng. Mỗi hàng
phải chứa 2 số thực xi và yi(|xi|, |yi| <= 10,000,000). Các kết nối (x i, yi) và (xi+1,yi+1)
( 1<=i<=n-1) và (xn,yn) và (x1,y1) , yêu cầu tạo một đa giác, độ dài mỗi cạnh bằng với chiều
dài đã cho, nhưng không bắt buộc phải có cùng thứ tự.
Thứ tự của các điểm đầu ra có thể theo chiều kim đồng hồ hoặc ngược chiều kim
đồng hồ.
Nếu không có đa giác lồi như vậy, in ra ‘NO’.

第 12 页 共 15 页
2006National School of Information Winter Camp Lecture

Sample input:
4
7
4
5
4
Sample output:
0.5 2.5
7.5 2.5
4.5 6.5
0.5 6.5

Đánh giá:

Nếu giá trị tuyệt đối của hiệu giữa hai số thực không vượt quá 0,001 thì chương trình
được coi là giống nhau. Mọi định dạng đầu ra dấu phẩy động đều có thể được chấp nhận.

2 Giải quyết vấn đề

Vì không có thứ tự giữa các cạnh, giả sử


a1  a2  a3    an .
n

a i  a1
Rõ ràng, nếu i2 , t không có giải pháp, ngược lại có một giải pháp.

Chỉ những trường hợp có thể giải quyết được sẽ được thảo luận dưới đây.
2.1 Một ý tưởng đơn giản
Chọn điểm khởi đầu (x1,y1) ngẫu nhiên. Nối các cạnh ra ngoài. Khi cạnh thứ k được
n
d a i
nối, gọi d là khoảng cách giữa (x1, y1) và (xk1,yk1), yêu cầu thỏa mãn i  k 1 và
n
ak 1  d  a i
i k  2 , điểm xuất phát phải được trả lại.

Tuy nhiên, phương pháp này chỉ có thể đảm bảo rằng độ dài mỗi đoạn của đoạn thẳng
đóng là giống như đã cho, chứ không thể đảm bảo rằng nó sẽ không tự cắt nhau, chưa nói
đến việc nó là lồi.
2.2 Xem xét các trường hợp đặc biệt
Ta xét một trường hợp đặc biệt hơn: nếu hình có n mặt lồi là hình tròn nội tiếp có n mặt
thì sao?
Rõ ràng, bất kỳ đa giác nào nội tiếp một đường tròn đều là lồi. Do đó, độ dài mỗi cạnh
của đa giác nội tiếp một đường tròn bằng độ dài đã cho và đa giác phải thỏa mãn yêu cầu.
Do đó, chỉ yêu cầu đường kính của hình tròn.
Giả sử đã biết d, lấy (0,0) làm tâm của đường tròn và bắt đầu từ điểm (d / 2,0) theo chiều
第 13 页 共 15 页
2006National School of Information Winter Camp Lecture

kim đồng hồ, dựng một đa giác lồi n mặt.

a1 và an không cắt nhau, cho thấy rằng d quá lớn a1 giao với an, cho thấy d quá nhỏ

Bởi vì phạm vi giá trị của d là liên tục, d thỏa mãn điều kiện phải tồn tại và nó có thể
được tìm thấy bằng phép phân đôi.
Giả sử đường kính đường tròn ngoại tiếp đa giác là d thì góc ở tâm ứng với cạnh thứ
a
2 arcsin i
i là d . Hiển nhiên, d  a1 .

n
ai
 2 arcsin d
Xét i2 và  relationship with , in three cases

(1) The two are equal. At this point, the requirements can be met by making d-a1.
(2) Hình tròn trước đây lớn và hình tròn đáp ứng các yêu cầu tại thời điểm này có
n
a
 2 arcsin i  2
d
tâm là đa giác. Đường kính d thỏa mãn i 1 . Bởi vì các góc tròn

a1
d 
2 
sin
tương ứng với cạnh dài nhất không nhỏ hơn n , vì vậy n

(3) Hình tròn sau lớn và hình tròn đáp ứng các yêu cầu tại thời điểm này có tâm của
n
a a
 2 arcsin i  2 arcsin 1
d d . Trong
nó nằm ngoài đa giác. Đường kính d thỏa mãn i  2

a  10000 ,
trường hợp này, d có thể lớn, tuy nhiên, vì dữ liệu giới hạn ( n  1000 , i
ai là các số nguyên), trên thực tế d tối đa chỉ 5 x 105.
Tại thời điểm này, vấn đề đã được giải quyết.

第 14 页 共 15 页
2006National School of Information Winter Camp Lecture

[tóm lại]
Đối diện với thế giới rộng lớn, chúng ta thường chỉ nhìn thấy bề ngoài tổng thể của sự vật,
càng ngày càng đi xa hơn dựa trên cảm nhận của chính mình. Như mọi người đã biết,
chúng ta bị vẻ ngoài này làm cho mù quáng nên không thể khám phá được bí ẩn ẩn chứa
trong đó.

Pythagoras tin rằng "tất cả mọi thứ đều được đánh số." Xem xét các trường hợp đặc biệt,
nó thực sự là một loại tư duy toán học, có thể giúp chúng ta hiểu rõ hơn bản chất của sự
vật trên mọi phương diện, bao gồm cả các cuộc thi khoa học công nghệ.

Biết được bản chất của sự việc, chúng ta có thể giải quyết vấn đề một cách tương đối dễ
dàng. Hơn nữa, trong quá trình giải quyết vấn đề, nó có thể nhận được sự khai sáng hữu
ích và đưa ra các biện pháp đối phó để đối phó với các tình huống tương tự. Điều này
quan trọng hơn việc tự giải quyết một vấn đề.

第 15 页 共 15 页

You might also like