Hi guys, i've tried to solve this problem with A*. I came with pull distance as heuristic and calculate the distance table with Floyd's algorithm. I also have put deadlock detector (for Simple and Frozen) on my code. Is there something i miss? Or do you have any other suggestion?
I am very happy if i can discuss with you guys. Thanks before for your help :)
If the worm starts from the first sheet of the first volume and finishes at the last one of the second volume, how could the answer for the sample input be 2, given that the thikness of the book (not including the cover) is 10?
For each i = 9 to 2, repeatedly divide n by i until it cannot be further divided or the list of numbers from 9 to 2 gets finished. Also, in the process of division push each digit i onto the stack which divides n completely. After the above process gets completed check whether n == 1 or not. If not, then print “-1”, else form the number k using the digits from the stack containing the digits in the same sequence as popped from the stack
n, k =map(int, input().split(' ')) z=0 time=0 num = 1 progress = 2 if k==1 and n==1: print(n) elif k ==1: print(n-1) elif k>=n: time+=1 while num<n: num+=progress progress*=2 time+=1 print(time) else: time+=1 while z==0: if progress<=k and num<n: num+=progress progress*=2 time+=1 else: z+=1 progress=k if num<n: while num<n: if num<n: time+=1 num+=progress print(time)
1. sort these orders for the following for loop; 2. can I serve current order? is there a not used day left for it? wow, that's easy if I can use std::set::upper_bound; 3. output our selected orders with delivery time.
// wow accepted, so lucky I am.
// after checked the discussion, found that this problem can be easily solve with priority queue, looks that priority queue is more convenient.
Its quite easy to do. Basically, there are 2 "worst" cases: 1). We take 40 right (equals 40*2=80 secs), then throw all the rest of the right ones (2*(b-40) secs), and them take the 40 left (40 secs). The time is 80+2*(b-40)+40=120+2*(b-40). 2). We take 39 left (78 secs), take 40 left ones (40 secs), throw all the other left ones away (2*(a-40)), and take the last right one (1 sec). The time is 78+40+2*(a-40)+1=119+2*(a-40).
1) mode "putting on left slippers" |*0*|0| slippers come only for right legs |*0*|40| (time +40*2) if there are more than 40 slippers for right legs they still come |*0*|40| (time + (b-40)*2) then there are slippers only for left legs |*40*|40| (time +40);
2) mode "putting on left slippers" |*0*|0| slippers come for right legs except 1 |*0*|39| (time +39*2) then slippers come only for left legs |*40*|39| (time +40)
now mode changes to "putting on right slippers" |40|*39*| happy centipede hopes to get the last needed right slipper, she gets all slippers for left legs, which are still left |40|*39*| (time + (a-40)*2) and finally she gets the last one right slipper |40|*40*| (time +1)
So, just choose the worst way according to exact input.