Coci

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

หน้านี้แสดงข้อสอบ coci วันที่ 24 ต.ค. 52 ฉบับแปล

domino

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

เขียนโปรแกรมที่คำนวณจำนวนจุดรวมบนชิ้นโดมิโนในเซตโดมิโนที่สมบูรณ์ที่มีขนาด N

dobra

Lea เจอคำมากมายในชีวิตของเธอ และเธอไม่พึงใจคำจำนวนมาก เพื่อลดความไม่พึงใจนี้ เธอจึงเริ่มสร้างคำที่เธอพึงใจ Lea สร้างคำใหม่โดยเริ่มจากการเขียนสตริงของตัวอักษรบนกระดาษ หลังจากนั้นเธอจะลบตัวอักษรกลุ่มที่น่าเกลียดที่สุดออกไปแล้วแทนพวกมันแต่ละตัวด้วยเครื่องหมายขีดล่าง (underscore: '_') หลังจากนั้นเธอจะพยายามเปลี่ยนเครื่องหมายขีดล่างเป็นตัวอักษรที่เธอยอมรับมากกว่าเพื่อทำให้คำนั้นพึงใจเธอ

Lea จะพึงใจคำคำหนึ่ง ถ้าหากว่าคำนั้นไม่มีสระ 3 ตัวติดกัน และไม่มีพยัญชนะ 3 ตัวติดกัน และมีตัวอักษร L อย่างน้อยหนึ่งตัว

สระภาษาโครเอเชียคือตัวอักษร A, E, I, O, U เท่านั้น ตัวอักษรอื่นๆ เป็นพยัญชนะทั้งหมด

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

ข้อมูลนำเข้ามีเพียงบรรทัดเดียว และในบรรทัดนั้นมีสตริงของตัวอักษรความยาวไม่เกิน 100 ตัวอักษร สตริงนี้จะประกอบด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่และเครื่องหมายขีดล่าง '_' เท่านั้น และจะมีเครื่องหมายขีดล่างไม่เกิน 10 ตัว

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

ข้อมูลส่งออกมีเพียงบรรทัดเดียว และในบรรทัดนั้นจะมีจำนวนเต็มเพียงหนึ่งตัว ซึ่งมีค่าเท่ากับจำนวนคำที่ Lea พีงใจที่สามารถสร้างได้จากการแทนเครื่องหมายขีดล่างในสตริงในข้อมูลนำเข้าด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่

คำเตือน: ใช้เลข 64 บิตเพื่อทำคำตอบ กล่าวคือใช้ long long ในภาษา C/C++ และใช้ int64 ในภาษาปาสกาล

MALI

Mirko และ Slavko กำลังเล่นเกมใหม่กันอยู่ เช่นเคย Slavko เริ่มเกมแต่ละรอบโดยให้จำนวนสองจำนวน A และ B กับ Mirko โดยจำนวนทั้งสองมีค่าน้อยกว่า 100. Mirko จะต้องแก้ปัญหาต่อไปนี้ให้กับ Slavko: จะจับคู่บรรดาจำนวน A ทั้งหมดที่ได้รับมากับบรรดาจำนวน B ทั้งหมดที่ได้รับมาอย่างไร ให้ผลรวมที่มากที่สุดของคู่ทั้งหลายที่จับนั้น มีค่าน้อยที่สุด

กล่าวคือ ถ้าในรอบทั้งหมดก่อนหน้านั้น Slavko ให้จำนวน a1, a2, a3 .... an และ b1, b2, b3 ... bn, ให้หาวิธีการจับคู่ n คู่ (ai, bj) ที่แต่ละจำนวนในลำดับ A ถูกใช้ในหนึ่งคู่พอดี และแต่ละจำนวนในลำดับ B ถูกใช้ในหนึ่งคู่พอดี และ ค่ามากที่สุดของผลรวม ai + bj ในทุกคู่ มีค่าน้อยที่สุด

GENIJALAC

Mirko เป็นอัจฉริยะ แต่เป้าหมายของสิ่งประดิษฐ์ของเขานั้นบางทีก็ไม่ใช่สิ่งที่เห็นได้ชัดเจน สิ่งประดิษฐ์ล่าสุดของเขาคือเครื่อง Shuffle-o-matic 3175 ก็เป็นเช่นนั้น เครื่อง Shuffle-o-matic ถูกนำไปใช้อย่างพิเศษ เริ่มต้น Mirko วางการ์ดกระดาษ N แผ่นที่มีหมายเลข 1 ถึง N พิมพ์อยู่บนพื้นที่ทำงานของเครื่อง Shuffle-o-matic จากนั้นเขาป้อนลำดับการสลับ (shuffle sequence) เข้าสู่เครื่องผ่านทางหน้าจอป้อนข้อมูลเข้าและกดปุ่มเริ่มทำงาน เครื่องจักรก็จะอ่านการ์ดเปล่านั้นและพิมพ์ลำดับของจำนวนที่อ่านเข้าไปออกทางเทปผลลัพธ์ จากนั้นเครื่องจะสลับการ์ดตามลำดับการสลับ (shuffle sequence) หลังจากนั้นเครื่องจากอ่านลำดับใหม่ที่ได้และเขียนผลลัพธ์ออกทางบรรทัดใหม่ที่เทปผลลัพธ์ เครื่องจะดำเนินการสลับการ์ดอีกครั้งโดยใช้ลำดับการสลับเดิม, อ่านการ์ด, และพิมพ์ผลลัพธ์ออกทางเทป เครื่องจักรจะทำงานไปเรื่อย ๆ จนกว่าเทปจะหมด

หลังจากได้ทดลองกับเครื่องไปแล้ว Mirko ได้ตกลงใจว่าจะนอนพักสักพักที่บนพื้น จากที่ตรงนั้นเขาสังเกตเห็นชิ้นของเทปผลลัพธ์ ชิ้นผลลัพธ์นั้นถูกตัดอย่างพอดิบพอดีก่อนบรรทัดที่ A และหลังบรรทัดที่ B นอกจากนั้นยังขาดจำนวนไป C จำนวนในตอนต้น และขาดอีก D จำนวน ในแต่ละบรรทัด

เขาสงสัยว่ามีกี่บรรทัดในชิ้นส่วนผลลัพธ์นั้นที่มีคุณสมบัติที่ว่า ทุก ๆ จำนวนในแถวนั้นที่อยู่บนกระดาษชิ้นนั้น อยู่ในตำแหน่งเดียวกับที่อยู่ก่อนการสลับจะเริ่มต้น

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

บรรทัดแรกระบุจำนวนเต็ม N, A, B, C, และ D ในลำดับดังกล่าว (1 ≤ N500 000, AB10^12, 0C, DN, C + D < N).

บรรทัดที่สองระบุลำดับการสลับ (shuffle sequence) ลำดับดังกล่าวระบุเป็นการเรียงสับเปลี่ยน (permutation) ของจำนวนเต็มตั้งแต่ 1 ถึง N ถ้าจำนวนที่ k มีค่าเท่ากับ x หลังการสลับทุกครั้ง จำนวนที่ k ในลำดับผลลัพธ์จะมีค่าเท่ากับจำนวนที่ x ในลำดับตั้งต้น

ALADIN

วันหนึ่ง ขณะที่อลาดินกำลังเดินอยู่ เขาเจอสิ่งที่แปลกที่สุดที่เคยเจอมา เขาเห็นกล่องว่าง N กล่องวางอยู่ข้างๆ เครื่องจักรต่างด้าวเครื่องหนึ่ง หลังจากอลาดินสำรวจเครื่องจักรนั้นพักหนึ่ง เขาก็สามารถใช้เครื่องจักรได้ เขาพบว่าเครื่องจักรนั้นรับจำนวนเต็มสี่ตัว L, R, A, และ B และหลังจากที่เขากดปุ่มเรืองแสงสีแดงที่มีข้อความเขียนไว้ว่า "NEDIRAJ" แล้ว เครื่องจักรก็จะเริ่มทำงานอย่างบ้าคลั่ง ตามขั้นตอนต่อไปนี้

  • มันทำให้กล่องหมายเลข L มีก้อนหินอยู่ A mod B ก้อน
  • จากนั้นมันจึงบินไปที่กล่องหมายเลข L+1 และทำให้กล่องนั้นมีก้อนหินอยู่ (2*A) mod B
  • จากนั้นมันจึงบินไปที่กล่องหมายเลข L+2 และทำให้กล่องนั้นมีก้อนหินอยู่ (3*A) mod B
  • โดยทั่วไปแล้ว มันจะบินไปยังกล่องทุกกล่องที่มีหมายเลขอยู่ระหว่าง L และ R และทำให้กล่องนั้นมีหินปรากฎอยู่เป็นจำนวนเท่ากับ ((X - L + 1) * A) mod B เมื่อ X เป็นหมายเลขของกล่อง
  • หลังจากทำงานที่กล่องหมายเลข R เสร็จแล้ว มันจะหยุดการทำงานและรอคอยคำสั่งต่อไป

ระหว่างที่กำลังเล่นกับเครื่องจักรนี้อยู่ อลาดินสงสัยว่าในกล่องที่อยู่ติดกันกลุ่มหนึ่งมีหินอยู่จำนวนทั้งหมดเท่าใด?

จงเขียนโปรแกรมเพื่อจำลองการทำงานของเครื่องจักรและตอบคำถามของอลาดิน

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

บรรทัดแรกมีจำนวนเต็ม N และ Q (1 <= N <= 1,000,000,000) และ (1 <= Q <= 50,000) ซึ่งแสดงจำนวนกล่องและจำนวนคำถาม ตามลำดับ

หลังจากนั้น Q บรรทัดจะมีข้อมูลเกี่ยวกับการจำลองการทำงานของเครื่องจักรนั้น

ถ้าหากบรรทัดใดในบรรทัด Q บรรทัดนี้เริ่มต้นด้วยเลข 1 มันจะมีรูปแบบ "1 L R A B" (1 <= L <= R <= N) (1 <= A, B <= 1,000,000) ซึ่งมีความหมายว่าอลาดินใส่เลข L, R, A, B แล้วกดปุ่มเพื่อสั่งให้เครื่องจักรเริ่มทำงาน

แต่ถ้าหากบรรทัดใดในบรรทัด Q บรรทัดนี้เริ่มต้นด้วยเลข 2 มันจะมีรูปแบบ "2 L R" (1 <= L <= R <= N) หมายความว่าอลาดินต้องการทราบว่ามีหินอยู่จำนวนเท่าไหร่ในกล่องตั้งแต่หมายเลข L ถึง R (รวมขอบด้วย)

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

สำหรับคำถามที่ขึ้นต้นด้วย 2 ให้พิมพ์คำตอบของคำถามนั้นในบรรทัดบรรทัดหนึ่ง คำตอบของคำถามจะต้องเรียงตามลำดับที่คำถามปรากฏในข้อมูลนำเข้า

การให้คะแนน

ในข้อมูลทดสอบที่มีค่า 30% ของคะแนนทั้งหมด N และ Q จะมีค่าไม่เกิน 1,000

ในข้อมูลทดสอบที่มีค่า 70% ของคะแนนทั้งหมด Q จะมีค่าไม่เกิน 1,000