ผลต่างระหว่างรุ่นของ "Baltic2014"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 61: แถว 61:
  
 
''input''
 
''input''
 +
 
7
 
7
 +
 
ABXCABC
 
ABXCABC
  
 
''output''
 
''output''
 +
 
ABC
 
ABC
  
แถว 73: แถว 76:
  
 
6
 
6
 +
 
ABCDEF
 
ABCDEF
  
แถว 85: แถว 89:
  
 
9
 
9
 +
 
ABABABABA
 
ABABABABA
  

รุ่นแก้ไขเมื่อ 06:30, 23 มิถุนายน 2557

Source: Baltic Olympiad in Informatics 2014

Day1: Cop and Robber

ที่มา: [1](http://www.boi2014.lmio.lt/tasks/coprobber-en.pdf)

ณ เมืองไบท์มอร์ ระดับของอาชญากรรมได้เพิ่มขึ้นมากจนเป็นจุดสูงสุดในประวัติศาสตร์ ท่ามกลางการก่ออาชญากรรมประเภทเบานั้นการขโมยของได้เกิดขึ้นเป็นประจำทุกวี่วัน และเมื่อมีการขโมยเกิดขึ้นนั้นก็มักจะลงเอยตด้วยการที่ตำรวจสายตรวจรายหนึ่งที่เดินตรวจตราอยู่นั้นเป็นผู้ไล่ตามจับหัวขโมยไปในตรอกซอยเล็กๆ ที่เชื่อมระหว่างหัวมุมถนน (เพื่อความงายขออ้างอิงด้วยคำว่าง หัวมุมถนน) แต่โชคไม่ดีเสียเลยที่บ่อยครั้ง หัวขโมยสามารถหลบหนีจากการติดตามของตำรวจได้ เพราะว่าหัวขโมยรู้จักเส้นทางในตัวเมืองดีกว่าตำรวจ

สถานีตำรวจแห่งเมืองไบท์มอร์ถูกจัดตั้งขึ้นเพื่อลดปริมาณการเกิดอาชญากรรมภยในเมือง แนวคิดหนึ่งที่จะนำมาลดปัญหาอาชญากรรมนี้คือการใช้ระบบคอมพิวเตอร์เพื่อช่วยในการติดตามจับหัวขโมย ในการนี้สถานีตำรวจแห่งเมืองไบท์มอร์ได้สร้างแผนที่ตัวเมืองอย่างชัดเจนขึ้นเรียบร้อยแล้ว ตอนนี้พวกเขาต้องการซอฟตร์แวร์ที่ใช้ในกำหนดกลยุทธในการติดตามหัวขโมย

ในการติดตามหัวขโมยโดยเจ้าหน้าที่ตำรวจรายหนึ่งนั้นจะมีรูปแบบเป็นลำดับขั้นตอนดังนี้: 1. ตำรวจเลือกหัวมุมถนนหนึ่งที่จะใช้เดินสำรวจ 2. ขโมยเลือกหัวมุมถนนหนึ่งที่จะทำการก่ออาชญากรรม (ทั้งนี้ขโมยรู้ว่าตำรวจอยู่ที่ใด) และตั้งแต่นี้เป็นต้นไปจะสมมติว่าทั้งตำรวจและขโมยรู้ตำแหน่งของอีกฝ่ายหนึ่งตลอดเวลา 3. ตำรวจสามารถเดินไปยังหัวมุมถนนที่ติดกัน (นับจากหัวมุมถนนปัจจุบันที่เขาอยู่โดยผ่านทางเดินเส้นหนึ่ง) หรือสามารถเลือกที่จะหยุดรอ (คือเลือกที่จะไม่เดินได้) 4. ขโมยจะเดินไปยังหัวมุมถนนที่ติดกันนับจากตำแหน่งที่เขาอยู่ แต่ทว่าแตกต่างจากตำรวจคือ หัวขโมยไม่สามารถหยุดรอได้ เนื่องด้วยสัญชาตญาณของขโมยจึงทำให้เค้าต้องย้ายตำแหน่งตลอดเวลา 5. ตำรวจและขโมยจะเดินสลับกันคนละหนึ่งครั้ง (เริ่มต้นที่ตำรวจ) จนกว่าหนึ่งในเหตุการณ์นี้จะเกิดขึ้น:

  • เกิดสภาพการเดินซ้ำ (สภาพการเดินจะนิยามจากตำแหน่งของทั้งสองคนและผู้ที่จะเดินรายต่อไป) ในกรณีนี้นี้ขโมยจะสามารถหลบหนีการจับกุมได้อย่างแน่นอน ดังนั้นจะถือว่าขโมยสามารถหลบหนีสำเร็จ
  • ตำรวจและขโมยพบกันที่หัวมุมถนนแห่งหนึ่งภายหลังจากการเดินของฝ่ายใดฝ่ายหนึ่งก็ได้ ในกรณีนี้จะหมายถึงตำรวจสามารถจับขโมยได้สำเร็จ


หน้าที่ของคุณ

ให้คุณเขียนโปรแกรมที่รับแผนที่ของเมืองแล้วหาว่า ตำรวจจะจับหัวขโมยได้สำเร็จหรือไม่ ถ้าสำเร็จให้แสดงการเดินเพื่อให้ตำรวจสามารถจับหัวขโมยให้ด้วย

โปรแกรมของคุณต้องสมมติว่าขโมยจะเดินด้วยวิธีการที่ดีที่สุด


Implementation

คุณต้องเขียนสองฟังก์ชันคือ: start(N,A) เพื่อให้ในการรับแผนที่เริ่มต้น nextMove(R) เพื่อใช้ในการรับอินพุตว่าขโมยจะเดินไปที่ใด

สำหรับรายละเอียดเพิ่มเติม กรุณาอ่านต่อที่: [Cob and Robber, BOI2014](http://www.boi2014.lmio.lt/tasks/coprobber-en.pdf)

Day1: Three Friends

ที่มา: [2](http://www.boi2014.lmio.lt/tasks/friends-en.pdf)

เพื่อนสามคนเล่นเกมหนึ่งดังนี้ เพื่อนคนที่หนึ่งเลือกสายอักษร S ขึ้นมาหนึ่งสาย ต่อมาเพื่อนคนที่สองจะสร้างสายอักษรใหม่ T ขึ้นจากการเอาสายอักษร S สองชุดมาต่อกัน และท้ายที่สุดเพื่อนคนที่สามจะเติมอักษรเข้าไปหนึ่งตัวไปในสายอักษร T โดยอาจจะเพิ่มที่ตำแหน่งเริ่มต้น, สิ้นสุด, หรือตำแหน่งใดๆ ในสายอักษร T ก็ได้ เพื่อสร้างเป็นสายอักษร U


หน้าที่ของคุณ

รับสายอักษร U และให้คุณหาช่วยสร้างสายอักษรเริ่มต้น S


ข้อมูลนำเข้า

บรรทัดแรก ประกอบด้วยจำนวนหนึ่งจำนวน N ที่แสดงความยาวของสายอักษร U, ข้อมูลสายอักษร U จะระบุในบรรทัดที่สอง ซึ่งจะประกอบด้วยอักษรตัวใหญ่ในภาษาอังกฤษ (A,B,C,..,Z) ทั้งสิ้น N อักษร


ข้อมูลส่งออก

ให้โปรแกรมของคุณแสดงสายอักษรเริ่มต้น S ยกเว้นสองกรณีด้านล่าง:

1. ถ้าสายอักษร U ไม่สามารถถูกสร้างขึ้นโดยใช้กระบวนการสร้างด้านบน ให้โปรแกรมตอบว่า NOT POSSIBLE

2. ถ้าสายอักษรเริ่มต้น S เป็นไปได้มากกว่า 1 รูปแบบ ให้โปรแกรมตอบว่า NOT UNIQUE


ตัวอย่าง 1

input

7

ABXCABC

output

ABC


ตัวอย่าง 2

input

6

ABCDEF

output

NOT POSSIBLE


ตัวอย่าง 3

input

9

ABABABABA

output

NOT UNIQUE


เกณฑ์การให้คะแนน

35 คะแนน: 2 <= N <= 2001 65 คะแนน: 2 <= N <= 2000001

Day1: Sequence