Gcj2010

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

Round 2

C. Bacteria

Source: [1]

แบคทีเรียอยู่บนตารางกริดที่มีขนาดไม่จำกัด แต่ละตัวจะอยู่ในช่องแยกจากกัน

ในแต่ละวินาที การเปลี่ยนแปลงจะเกิดขึ้น (พร้อม ๆ กัน)

  • ถ้าแบคทีเรียไม่มีเพื่อนแบคทีเรียที่ติดกันในทิศด้านเหนือและด้านตะวันตกมันจะตาย
  • ถ้าช่องที่ไม่มีแบคทีเรียแต่ะมีแบคทีเรียในช่องที่ติดกันในทิศเหนือและทิศตะวันตก จะมีแบคทีเรียใหม่เกิดขึ้นในช่องนั้น

เมื่อพิจารณาตารางกริดแล้ว คุณพบว่ามีแบคทีเรียอยู่เป็นจำนวนบวกที่มีค่าจำกัดในบางช่องของพื้นที่

ให้คำนวณว่าจะใช้เวลาเท่าใด ก่อนที่แบคทีเรียจะตายหมด

ด้านล่างเป็นตัวอย่างของตารางกริดที่เริ่มด้วยแบคทีเรียจำนวน 6 ตัว ในรูปดังกล่าวจะใช้เวลา 6 วินาที ก่อนที่แบคทีเรียจะตายหมด ช่องที่มี 1 แทนช่องที่มีแบคทีเรีย ช่องที่เป็น 0 แทนช่องที่ไม่มีแบคทีเรีย

000010
011100
010000
010000
000000 

000000
001110
011000
010000
000000

000000
000110
001100
011000
000000

000000
000010
000110
001100
000000

000000
000000
000010
000110
000000

000000
000000
000000
000010
000000

000000
000000
000000
000000
000000

Round 3

C. Hot Dog Proliferation

Source: [2]

ร้านขาย hot dog หลายร้านได้เปิดกิจการขึ้นที่แยกบนถนนที่มีทิศตะวันออก-ตะวันตกสายหนึ่งที่ยาวมาก ปัญหาก็คือ ร้านขาย hot dog หลายร้านอาจจะขายอยู่ที่แยกเดียวกัน ทำให้แย่งลูกค้ากัน

คนขาย hot dog เลยมีแผนการดังนี้:

ถ้ามีคนขายตั้งแต่สองคนขึ้นไปที่แยกใด ๆ คนขายสองคนพอดีจะย้ายที่ กล่าวคือ

  • จะมีคนขายคนหนึ่งย้ายไปขายที่แยกถัดไปทางทิศตะวันออกของแยกเดิม
  • คนขายอีกคนจะย้ายไปขายที่แยกในทิศตะวันตกของแยกเดิม

เนื่องจากถนนยาวมาก จึงไม่ต้องกังวลว่าแยกจะไม่พอ ให้ตำแหน่งเริ่มต้นของคนขาย hot dog ทั้งหมด ให้คุณคำนวณจำนวนครั้งของการย้ายตามวิธีด้านบนที่น้อยที่สุด ที่จะทำให้ไม่มีคนขายสองคนขายอยู่ที่แยกเดียวกัน

พิจารณาตัวอย่างด้านล่าง สมมติว่าถนนมีจำนวนคนขาย hot dog ดังนี้ (จากทิศตะวันตกไปตะวันออก):

... 0 0 2 1 2 0 0 ...

เหล่าคนขายจะสามารถกระจายตัวออกไปได้ โดยการย้าย 3 ครั้ง ดังนี้:

... 0 0 2 1 2 0 0 ...
        |
        +--- ย้ายตรงนี้

... 0 1 0 2 2 0 0 ...
          |
          +--- ย้ายตรงนี้ 

... 0 1 1 0 3 0 0 ...
            |
            +--- ย้ายตรงนี้

... 0 1 1 1 1 1 0 ...