Làm cách nào để giải quyết vấn đề này bằng Python, vấn đề hiện tại của tôi là mã của tôi mất quá nhiều thời gian

lập trình

[ad_1]

Farmer John's cows have quite the sweet tooth, and they especially enjoy eating candy canes! FJ has N
 total cows, each with a certain initial height and he wants to feed them M
 candy canes, each also of varying height (1≤N,M≤2⋅10^5
).

FJ plans to feed the candy canes one by one to the cows, in the order they are given in the input. To feed a candy cane to his cows, he will hang the candy cane so that initially the candy cane is just touching the ground. The cows will then line up one by one, in the order given by the input, and go up to the candy cane, each eating up to their height (since they cannot reach any higher). The candy cane stays suspended in place where it is initially set up and is not lowered to the ground, even after cows eat the bottom of the candy cane. It is possible a cow may eat nothing during her turn, if the base of the candy cane is already above that cow's height. After every cow has had their turn, the cows grow in height by how many units of candy cane they ate, and Farmer John hangs the next candy cane and the cows repeat the process again (with cow 1 again being the first to start eating the next candy cane).

INPUT FORMAT (pipe stdin):
The first line contains N
 and M
.
The next line contains the initial heights of the N
 cows, each in the range [1,10^9]
.

The next line contains the heights of the M
 candy canes, each in the range [1,10^9]
.

OUTPUT FORMAT (pipe stdout):
The final heights of each of the N
 cows on separate lines.
Note that the large size of integers involved in this problem may require the use of 64-bit integer data types (e.g., a "long long" in C/C++).

SAMPLE INPUT:
3 2
3 2 5
6 1
SAMPLE OUTPUT:
7
2
7
The first candy cane is 6
 units tall.

The first cow eats the portion of the first candy cane up to height 3
, after which the remaining portion of the first candy cane occupies heights [3,6]
.
The second cow is not tall enough to eat any of the remaining portion of the first candy cane.
The third cow eats two additional units of the first candy cane. The remaining portion of the first candy cane, occupying heights [5,6]
, is not eaten.
Next, each cow grows by the amount she ate, so the heights of the cows become [3+3,2+0,5+2]=[6,2,7]
.

The second candy cane is 1
 unit tall, and the first cow eats all of it.

SCORING:
Inputs 2-10: N,M≤10^3
Inputs 11-14: No additional constraints.

Những gì tôi đã thử:

mã hiện tại:

n, m = map(int, input().split())
heightcow = list(map(int, input().split()))
finalcow = heightcow.copy()
heightcane = list(map(int, input().split()))

for j in range(m):
    statcane = [[False] * (heightcane[j] + 1) for _ in range(n)]
    for i in range(n):
        min_height = min(heightcow[i] + 1, len(statcane[i]))
        for k in range(min_height):
            if statcane[i][k] == True:
                statcane[i][k] = False
                finalcow[i] += 1

for num in finalcow:
    print(num)

Giải pháp 1

Tôi đã ngừng đọc ở “VUI LÒNG GIÚP ĐỠ NGAY!”. Những yêu cầu như vậy là đặc biệt thô lỗ.

Điều duy nhất tôi sẽ nói là đối với các vấn đề về hiệu suất, bạn KHÔNG muốn đặt các vòng lặp bên trong các vòng lặp, một lần nữa, bên trong một vòng lặp khác.

Đó là tất cả những gì tôi định nói.

[ad_2]

コメント

タイトルとURLをコピーしました