CF做题记录--2023.11.14

1497C2. k-LCM (hard version) Problem - 1497C2 - Codeforces

给定一个整数 n,请找到 k 个和为 n 的正整数a1​,a2​,…,ak​,使得 lcm{a1​,a2​,…,ak​}⩽n/2​ 。

t 组数据,1⩽t⩽1e4,3⩽n⩽1e9,3⩽k⩽n。保证所有 t 组数据中∑k⩽1e5。

思路

数学题,有点离谱

先看简单版本 k=3情况

n为奇数,直接 n--; {1,n/2,n/2}

n为偶数

        n被4整除,直接{n/2,n/4,n/4}

        不被4整除,n-=2; {2,n/2,n/2}

两种偶数情况不能统一,被4整除情况下分为{2,n/2,n/2}的话n/2为奇数

 在引申到k>3,可以直接1111111,{a,b,c}

1334C. Circle of Monsters Problem - 1334C - Codeforces

有 N 头怪兽,他们围成一个环,顺时针编号 1,2,3,4,…,N 每一头怪兽都有 2 个属性,一个是它的生命值 ai​,第二个是它的爆炸值 bi​。

你有一把手枪,每开一枪可以对你选定的一只怪兽造成 1 伤害(使其生命值 −1−1)

当一个怪兽死后(生命值 ≤0≤0),它会发生爆炸,并对下一个怪兽(假设当前怪兽为编号 i,则下一个为 i+。如果i=n,则下一个为 1 号) 造成 bi​ 点伤害。如果下一个怪兽已经死了,则没有事发生。如果下一个怪兽被炸死了,那么他也会爆炸,并对下下个怪兽造成伤害。以此类推。

询问你最少开几枪可以杀死所有怪兽。

∑N≤3×1e5,ai​,bi​≤1e12

思路

前缀和

由于N为1e5数量级,其实可以O(n^2)

但是用前缀和可以只用O(n)

先计算 c[i]=max(0,a[i]-b[i-1])的数组,以及c[i]的前缀和数组pre[i],或者c[i]的总和sum

那么对先杀第i个,其结果为a[i]+pre[n]-pre[i]+pre[i-1]

也可以sum+a[i]-c[i]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值