Educational Codeforces Round 95 (Rated for Div. 2)

Powered by:AB_IN 局外人

A. Buying Torches

真得好好吐槽一下。
样例出错两次,数据出错一次。
讲一下我的思路吧。

  • 首先先明确至少需要多少个棍。 k k k个火炬,至少需要 k ∗ y + k k*y+k ky+k个棍棍。
  • 其次要想,怎么从 1 1 1个棍,利用第一条贸易,变成 k ∗ y + k k*y+k ky+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 x1
    所以,设 t m p tmp tmp是贸易一的次数。
    1 + ( x − 1 ) ∗ t m p − > k ∗ y + k 1+(x-1)*tmp->k*y+k 1+(x1)tmp>ky+k
    这里我为什么要用 − > -> >而不是 = = =呢?
    因为可能不能正好等于 k ∗ y + k k*y+k ky+k
    那就取
    1 + ( x − 1 ) ∗ t m p > k ∗ y + k 1+(x-1)*tmp>k*y+k 1+(x1)tmp>ky+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。
完结。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NEFU AB-IN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值