- .LCN với chương trình LOGO, PAS với chương trình PASCAL
1. Palindrome Bài toán
Bài toán
Palindrome là một chuỗi đối xứng nghĩa là một chuỗi đọc giống nhau nếu ta bắt đầu từ trái sang phải hay từ phải sang tráị Hãy viết chương trình từ một chuỗi cho trước xác định số ký tự ít nhất được chèn vào chuỗi để được một palindromẹ
Ví dụ, chèn 2 ký tự vào chuỗi "Ab3bd" có thể biến nó thành một palindrome ("dAb3bAd" hoặc "Adb3bdA") nhưng chèn dưới 2 ký tự thì không thể biến chuỗi trên thành một Palindromẹ
Input
Tệp input có tên là PALIN.IN. Dòng đầu tiên chứa 1 số nguyên chỉ độ dài của chuỗi N
với 3<=N<=5000. Dòng thứ hai chứa 1 chuỗi ký tự có độ dài N. Chuỗi chỉ gồm các ký tự viết hoa từ ‘A’ đến ‘Z’, ký tự thường từ ‘a’ đến ‘z’ và các chữ số từ ‘0’ đến ‘9’. Các ký tự thường và ký tự hoa được hiểu khác nhaụ
Output
Tệp output có tên PALIN.OUT. Dòng đầu tiên chứa 1 số nguyên chỉ số ký tự ít nhất cần chèn bổ xung.
Ví dụ
Input và Output
Bài toán
Một bãi đổ xe có các vị trí đỗ xếp thành hàng dàị Một đầu hàng gọi là đầu trái và đầu còn lại là đầu phảị Hàng đỗ chứa đầy xe hơị Mỗi chiếc xe có một kiểu và có thể có nhiều chiếc xe cùng kiểụ Kiểu xe được phân biệt bằng các giá trị nguyên. Một nhóm công nhân quyết định thứ tự sắp xếp xe trong hàng theo thứ tự kiểu xe tăng dần từ trái sang phải bằng cách saụ Cách này gọi là vòng tròn: nhóm công nhân, mỗi người lái một chiếc xe cùng lúc rời khỏi chỗ đỗ và đi đến đỗ vào vị trí mà một chiếc xe cùng vòng tròn vừa được lái rạ Có thể có một số công nhân không di chuyển xe theo vòng tròn. Để thuận lợi hơn, ta chỉ xét một số ít vòng tròn.
Giả sử N là số xe hơi và W là số công nhân. Hãy viết chương trình từ các kiểu xe cho trước và số công nhân, tìm cách sắp xếp xe hơi sao cho số vòng tròn cần thiết tối đa là
. Số vòng tròn không vượt quá .
Xét ví dụ dướị Có 10 xe hơi đã đỗ thuộc các kiểu xe 1, 2, 3 và 4 với 4 công nhân. Thứ tự đỗ xe ban đầu tính từ trái sang phải tính theo kiểu là
2 3 3 4 4 2 1 1 3 1.
Số vòng tròn tối thiểu là 3 và số vòng tròn có thể thực hiện để thứ tự đỗ xe sau đó là: 2 1 1 4 4 2 3 3 3 1 – sau vòng 1,
2 1 1 2 4 3 3 3 4 1 – sau vòng 2 và 1 1 1 2 2 3 3 3 4 4 – sau vòng 3.
Input
Tệp input có tên là CAR.IN. Dòng đầu tiên chứa ba số nguyên. Số nguyên đầu tiên là số xe hơi N với 2<=N<=20000. Số thứ hai là số kiểu xe M với 2<=M<=50. Kiểu xe hơi được biểu diễn bằng các số nguyên từ 1 đến M. Mỗi kiểu có ít nhất một chiếc xe hơị Số nguyên thứ ba là số công nhân W với 2<=W<=M. Dòng thứ hai chứa N số nguyên, trong đó số nguyên thứ i là kiểu của xe hơi thứ i trong hàng tính từ trái sang phảị
Output
Tệp output có tên là CAR.OUT. Dòng đầu tiên chứa một số nguyên R chỉ số vòng tròn cần thiết trong giải pháp. R dòng tiếp theo mô tả các vòng tròn theo thứ tự từ 1 đến R. Trên mỗi dòng, số nguyên đầu tiên là số xe hơi C di chuyển theo vòng tròn đó. Sau đó là 2C số nguyên chỉ vị trí các xe hơị Vị trí các xe được xác định bằng từ 1 đến N bắt đầu từ đầu trái hàng. Hai số đầu tiên mô tả cách di chuyển của một chiếc xe hơi: số nguyên đầu tiên là vị trí tính từ đầu trái trước khi đi vòng tròn và số thứ hai là vị trí xe hơi sau khi đi vòng tròn. Hai số nguyên tiếp theo mô tả cách di chuyển của chiếc xe thứ hai, ... Có thể có nhiều giải pháp khác nhau cho R dòng đó, chương tình chỉ cần báo cáo một giải pháp.
Ví dụ
Input và Output