คำถามติดแท็ก fastest-algorithm

การแข่งขันอัลกอริธึมที่เร็วที่สุดจะชนะด้วยคำตอบที่มีความซับซ้อนของเวลาที่ไม่แสดงอาการน้อยที่สุด สำหรับความท้าทายที่ขึ้นอยู่กับรันไทม์จริงให้ใช้ [รหัสที่เร็วที่สุด] แทน

3
จำนวนจุดลอยตัวโดยประมาณที่มีความแม่นยำ n หลัก
เรามีจำนวนจุดลอยrระหว่าง 0 และ 1, pและจำนวนเต็ม ค้นหาเศษส่วนของจำนวนเต็มด้วยตัวหารที่เล็กที่สุดซึ่งใกล้เคียงrกับpความแม่นยำอย่างน้อย-digit อินพุต: r(หมายเลขจุดลอยตัว) และp(จำนวนเต็ม) ผลลัพธ์: aและbจำนวนเต็มโดยที่ a/b(ลอย) ประมาณrจนกระทั่งpตัวเลข b เป็นไปได้ที่น้อยที่สุดเช่นจำนวนเต็มบวก ตัวอย่างเช่น: ถ้าr=0.14159265358979และp=9, แล้วผลที่ได้คือa=4687และb=33102, 4687/33102=0.1415926530119026เพราะ การแก้ปัญหาใด ๆ จะต้องทำงานในทางทฤษฎีด้วยความแม่นยำโดยพลการ แม่นยำหมายถึงจำนวนของตัวเลขหลังจากที่ " 0." rใน ดังนั้นหากr=0.0123และp=3แล้วควรเริ่มต้นด้วยa/b 0.012หากpตัวเลขแรกของส่วนที่เป็นเศษส่วนของr0 เป็นพฤติกรรมที่ไม่ได้กำหนดเป็นที่ยอมรับ เกณฑ์การชนะ: อัลกอริทึมเร็วที่สุดชนะ ความเร็วถูกวัดใน O (p) หากมีอัลกอริธึมที่เร็วที่สุดหลายตัว คำตอบของฉันถูกแยกออกจากกลุ่มผู้ชนะที่เป็นไปได้ ps คณิตศาสตร์ส่วนที่เป็นจริงได้ง่ายขึ้นมากเป็นดูเหมือนว่าฉันขอแนะนำให้อ่านนี้โพสต์

7
แม่น้ำดิจิตอล (ทางออกที่สั้นและเร็วที่สุด)
นี่เป็นคำถามแรกของฉันดังนั้นฉันหวังว่ามันจะเป็นไปด้วยดี พื้นหลัง: ไม่ใช่แม่น้ำที่คุณอาจคิดถึง คำถามหมุนรอบแนวคิดของแม่น้ำดิจิทัล แม่น้ำดิจิทัลเป็นลำดับของตัวเลขโดยที่จำนวนดังต่อไปnนี้nบวกกับผลรวมของตัวเลข คำอธิบาย: 12345 ตามด้วย 12360 ตั้งแต่ 1 + 2 + 3 + 4 + 5 = 15 และอื่น ๆ 12345 + 15 ให้ 12360. ในทำนองเดียวกัน 145 ตามด้วย 155 ถ้าจำนวนแรกของแม่น้ำดิจิตอลเราจะเรียกมันว่าแม่น้ำMM ตัวอย่างเช่น: แม่น้ำ 480 เป็นจุดเริ่มต้นของลำดับ {480,492,507,519 .... } และแม่น้ำ 483 เป็นลำดับเริ่มต้น {483,498,519, .... } ลำธารและแม่น้ำปกติสามารถพบกันและสิ่งนี้เป็นจริงสำหรับแม่น้ำดิจิตอล สิ่งนี้จะเกิดขึ้นเมื่อแม่น้ำดิจิตอลสองแห่งแบ่งปันค่าเดียวกันบางค่า ตัวอย่าง: แม่น้ำ …

7
ความต่อเนื่องที่เพิ่มขึ้นมากที่สุด
Sequence เป็นลำดับที่สามารถได้มาจากลำดับอื่นโดยการลบองค์ประกอบบางอย่างโดยไม่ต้องเปลี่ยนลำดับขององค์ประกอบที่เหลือ การต่อเนื่องที่เพิ่มขึ้นอย่างเข้มงวดเป็นส่วนประกอบที่ทุกองค์ประกอบมีขนาดใหญ่กว่าองค์ประกอบก่อนหน้า ลำดับที่เพิ่มขึ้นที่หนักที่สุดของลำดับคือลำดับที่เพิ่มขึ้นอย่างเข้มงวดที่มีผลรวมองค์ประกอบที่ใหญ่ที่สุด ใช้โปรแกรมหรือฟังก์ชั่นในภาษาที่คุณเลือกซึ่งจะหาผลรวมองค์ประกอบของลำดับที่เพิ่มขึ้นมากที่สุดของรายการจำนวนเต็มที่ไม่เป็นลบ ตัวอย่าง: [] -> 0 ([]) [3] -> 3 ([3]) [3, 2, 1] -> 3 ([3]) [3, 2, 5, 6] -> 14 ([3, 5, 6]) [9, 3, 2, 1, 4] -> 9 ([9]) [3, 4, 1, 4, 1] -> 7 ([3, 4]) [9, 1, 2, 3, …

1
จำนวนเอาต์พุตที่ไม่ซ้ำกันโดยการแทนที่ตัวแปร
รับชุดของสูตรดังนี้: bacb bcab cbba abbc ให้อัลกอริทึมที่ค้นหาจำนวนผลลัพธ์ที่ไม่ซ้ำกันซึ่งคุณสามารถรับได้เมื่อแต่ละตัวแปรถูกแทนที่ด้วย "0" หรือ "1" ในทุกสูตร มี(k!)^2สูตรแต่ละสูตรมี2k-1ตัวแปรและk^2เงื่อนไข แสดงความ asymptotics kคุณในแง่ของ อัลกอริทึมที่เร็วที่สุดชนะ ในกรณีที่วิธีการแก้ปัญหาที่มีการใช้หน่วยความจำ asymptotic ที่ต่ำกว่าชนะ หากยังคงเสมอกันโพสต์แรกจะชนะ สำหรับตัวอย่างด้านบนผลลัพธ์ต่อไปนี้สามารถรับได้โดยการแทนที่ตัวแปร: 1110, 0110, 1001, 0100, 1000, 0000, 0010, 1101, 1111, 0001, 1011, 0111 ดังนั้นคำตอบที่ถูกต้องคือ 12 หมู่คนอื่น ๆ1010ไม่สามารถทำได้โดยใช้สูตรข้างต้น ผมได้ทำอีกสามกรณีการทดสอบกับการแก้ปัญหาที่เกี่ยวข้องของ230 , 12076และ1446672

2
ความท้าทายการเพิ่มประสิทธิภาพอัลกอริทึมที่เร็วที่สุด
นี่คือการทดลองครั้งแรกของฉันกับความซับซ้อนเชิงซีมโทติคแม้ว่าฉันจะมีความสุขกับคำตอบทั้งหมดในโค้ดตราบใดที่พวกเขามาพร้อมกับคำอธิบายเกี่ยวกับความซับซ้อนของเวลา ฉันมีปัญหาดังต่อไปนี้ พิจารณางาน T_1, ... T_n และ procs M_1, ... , M_m แต่ละงานใช้เวลาในการดำเนินการตามจำนวนที่กำหนด แต่ละงานมีค่าใช้จ่ายจำนวนหนึ่งเพื่อดำเนินการขึ้นอยู่กับ procs งานจะต้องทำในลำดับที่เข้มงวด (พวกเขาไม่สามารถทำได้ในแบบคู่ขนาน) และต้องใช้เวลาในการเปลี่ยนกระบวนการ ไม่สามารถย้ายงานจาก proc หนึ่งไปยังอีก proc หลังจากเริ่มต้น ในที่สุดงานแต่ละงานจะต้องเสร็จสิ้นตามระยะเวลา งาน วัตถุประสงค์คือเพื่อให้อัลกอริทึม (หรือโค้ดบางส่วน) ที่ได้รับห้าตารางของแบบฟอร์มด้านบนลดค่าใช้จ่ายทั้งหมดเพื่อให้งานทั้งหมดเสร็จสมบูรณ์ในขณะที่ทำให้แน่ใจว่างานทั้งหมดจะเสร็จสิ้นตามกำหนดเวลา หากเป็นไปไม่ได้เราเพียงแค่รายงานว่ามันไม่สามารถทำได้ คะแนน คุณควรให้ความซับซ้อนในการแก้ปัญหาของคุณในรูปของตัวแปร n, m และ d, โดยที่ d คือวันสุดท้าย ไม่ควรมีค่าคงที่ไม่จำเป็นในความซับซ้อนของโอ้ใหญ่ของคุณ ตัวอย่างเช่น O (n / 1,000) ควรเขียนเป็น O (n) คะแนนของคุณถูกคำนวณอย่างง่าย ๆ โดยการตั้งค่า …

7
นับจำนวนคำที่เป็นวงกลมในอินพุต
คำรอบ คำชี้แจงปัญหา เรานึกถึงคำที่เป็นวงจรเป็นคำที่เขียนในวงกลม เพื่อเป็นตัวแทนของคำวงจรเราเลือกตำแหน่งเริ่มต้นโดยพลการและอ่านตัวอักษรตามลำดับตามเข็มนาฬิกา ดังนั้น "รูปภาพ" และ "turepic" จึงเป็นตัวแทนของคำวงจรเดียวกัน คุณจะได้รับสตริง [] คำแต่ละองค์ประกอบซึ่งเป็นตัวแทนของคำวงจร ส่งคืนจำนวนคำวัฏจักรที่ต่างกันที่แสดง ชนะเร็วที่สุด (Big O โดยที่ n = จำนวนตัวอักษรในสตริง)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.