Powered by:AB_IN 局外人
A. Buying Torches
真得好好吐槽一下,
樣例出錯兩次,資料出錯一次,
講一下我的思路吧,
- 首先先明確至少需要多少個棍, k k k個火炬,至少需要 k ? y + k k*y+k k?y+k個棍棍,
- 其次要想,怎么從
1
1
1個棍,利用第一條貿易,變成
k
?
y
+
k
k*y+k
k?y+k個棍,我們可以先通過觀察,假設
x
=
12
x=12
x=12,那么
1 ? > 12 1->12 1?>12 12 ? > 23 12->23 12?>23 23 ? > 34 23->34 23?>34
可以發現每次加 11 11 11,也就是 x ? 1 x-1 x?1
所以,設 t m p tmp tmp是貿易一的次數,
1 + ( x ? 1 ) ? t m p ? > k ? y + k 1+(x-1)*tmp->k*y+k 1+(x?1)?tmp?>k?y+k
這里我為什么要用 ? > -> ?>而不是 = = =呢?
因為可能不能正好等于 k ? y + k k*y+k k?y+k,
那就取
1 + ( x ? 1 ) ? t m p > k ? y + k 1+(x-1)*tmp>k*y+k 1+(x?1)?tmp>k?y+k
時 t m p tmp tmp的值.
最后 t m p tmp tmp再加上貿易二的 k k k次即可,
for _ in range(int(input())):
x,y,k=map(int,input().split())
tmp=(k*y+k-1)//(x-1)
if tmp*(x-1)<k*y+k-1:
tmp+=1
tmp+=k
print(tmp)
B. Negative Prefixes
模擬題,記錄可以動的,從大到小排序,
for _ in range(int(input())):
n=int(input())
lst=list(map(int,input().split()))
s=list(map(int,input().split()))
index=[]
t=[]
for i in range(n):
if s[i]==0:
index.append(i)
t.append(lst[i])
if len(t)==0:
print(*lst)
continue
t.sort(reverse=True)
for i in range(len(index)):
lst[index[i]]=t[i]
print(*lst)
實在困得不行了,,隨便簽個到bia,
完結,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/64538.html
標籤:其他
上一篇:Redis基礎與快取問題
