Khởi nghiệp | Đề thi HSG tin 12 Nghệ An | năm học 2022 - 2023

Thứ ba - 24/02/2026 03:31

Ban đầu, Đức chưa hợp tác được với công ty nào. Hãy tính chi phí ít nhất để Đức có thể hợp tác với tất cả n công ty. Dữ liệu cho trong file văn bản KhoiNghiep.Inp gồm:

  • Dòng 1 ghi số nguyên dương n là số công ty.

  • n dòng tiếp theo, dòng thứ i ghi hai số nguyên ai,bi (1≤i≤n;0≤ai ≤n; 0 ≤bi ≤10^4)

Kết quả ghi ra file văn bản KhoiNghiep.Out gồm một số nguyên duy nhất là chi phí ít nhất để Đức có thể hợp tác với tất cả n công ty.

Giải:

# Đọc dữ liệu từ file input with open("KhoiNghiep.Inp", "r") as f: n = int(f.readline().strip()) companies = [] for i in range(n): a, b = map(int, f.readline().strip().split()) companies.append((a, b)) # Sắp xếp các công ty theo giá trị bi tăng dần companies.sort(key=lambda x: x[1]) # Khởi tạo danh sách công ty đã hợp tác partnered = [False] * n e = 0 total_cost = 0 i = 0 for i in range(n): if not partnered[i]: if e >= companies[i][0]: # Kiểm tra công ty đang xét có free không nếu đuợc thì vào. partnered[i] = True e += 1 else: # Kiểm tra các công ty còn lại có được free không. j = i + 1 while j < n: if e >= companies[j][0] and not partnered[j]: partnered[j] = True e += 1 j = i # Nếu được vào free thì kiểm tra lại từ i đến hết vì e đã thay đổi. continue else: j += 1 if not partnered[i]: # Thoát khỏi vòng while nên không còn có công ty hợp tác free nữa. total_cost += companies[i][1] partnered[i] = True e += 1 with open('KhoiNghiep.Out', 'w') as f: f.write(str(total_cost))

Giải thích:

Trong đoạn code trên, ta sử dụng một vòng lặp while để kiểm tra từng công ty. Nếu công ty đó đã được hợp tác, ta tăng giá trị của i lên 1 và tiếp tục kiểm tra công ty tiếp theo. Nếu công ty đó chưa được hợp tác, ta kiểm tra xem có thể hợp tác free hay không. Nếu có, ta đánh dấu công ty đó đã hợp tác và kiểm tra trong các công ty chưa được hợp tác xem còn công ty nào có thể hợp tác free không. Nếu không có, ta tìm công ty có giá trị bi nhỏ nhất để hợp tác. Nếu không có công ty nào có thể hợp tác, ta tăng tổng chi phí lên giá trị bi của công ty hiện tại và đánh dấu công ty đó đã hợp tác.

Thuật toán mà tôi đã sử dụng để giải quyết bài toán này là một phương pháp tham lam. Cụ thể, ta sẽ kiểm tra từng công ty để xem có thể hợp tác free không. Nếu không thể hợp tác free, ta giải quyết bài toán bằng cách tìm công ty có giá trị bi nhỏ nhất để hợp tác.

Thuật toán này được gọi là phương pháp tham lam vì ta luôn chọn công ty có giá trị bi nhỏ nhất để hợp tác, mà không đánh giá tác động của quyết định đó đến việc hợp tác với các công ty khác ở những bước sau. Tuy nhiên, trong bài toán này, phương pháp tham lam này lại cho kết quả chính xác, mà không cần tìm cách tối ưu toàn bộ quy trình hợp tác.


Mình là Khánh, người sáng lập nghengu.vn – nơi chia sẻ niềm yêu thích với tiếng Nghệ, tiếng Việt và những phương ngữ đa dạng. Mình mong muốn lan toả vẻ đẹp của tiếng mẹ đẻ đến nhiều người hơn. Nếu thấy nội dung hữu ích, bạn có thể ủng hộ bằng cách donate hoặc mua sản phẩm giáo dục qua các liên kết tiếp thị trong bài viết.

Cảm ơn bạn đã đồng hành!

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

.
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây
https://thoitietviet.edu.vn đọc sách online https://xemthoitiet.com.vn https://thoitiet24.edu.vn RR88 fun88 เข้าระบบ TOPCLUB 88xx 79king ssc88 Cm88 CM88 https://open88s.com/ C168 ufabet https://webmarket.jpn.com/ Sv388 Socolive TV Link nbet XX88 Socolive KJC https://okvip26.com/ Xoilac TV Live trực tiếp Cakhia TV Nohu90 Xoilac TV Socolive https://tt8811.net https://789pai.com https://mmoo.com.de https://go88.net/ c168 com five88 oxbet one88 xo88 https://playta88.com/ Bongdalu FUN88 ok9 kèo nhà cái 5 zowin.sh Cakhia TV Trực tiếp bóng đá Fun88 Bet KJC lu88 W 88 Alo789 FLY88 FLY88 OK9 COM oxbet five88 net88 https://c168.tel/ https://c168b.com/ 789bet f8bet f8bet new88 new88 ta88 debet fabet cakhiatv Ok365 OPEN88.COM https://sunwin97.in.net https://383sports.baby 84win B52CLUB ZBET NET88 C168 xem bóng đá luongsontv http://cracks.ru.com/ ok9 c168 c168 c168 https://bongdalu.us.com/ https://socolive2.cv/ F8bet C168 Bet168 new88 Socolive TV https://oxbet.cheap/ https://tx88d.com/ https://nohu.photo/ ok8386 ok9 red88 new88 new88 new88 Yo88 88VV Vin777 ok8386 https://open88.mobi/ f8bet TT88 new88 f8bet https://rophim.ws I9BET tỷ lệ kèo 999bet Tài Xỉu Online da88 9bet https://f8bet.ae.org Sun win