USACO 2023年12月比赛 铜组题解

本文解析了USACO12月比赛中的三道题目,涉及思维题、枚举和模拟题意,包括牛吃糖果棒的增长问题、字符串操作和数字排序问题,展示了如何通过编程解决这些数学与逻辑挑战。

USACO 12月比赛 铜组题解

基本上都是思维题,同学们开动自己的小脑瓜嗷~


比赛链接http://usaco.org/

第一题:CANDY CANE FEAST

标签:思维、枚举、模拟
题意:给定 n n n头牛的初始高度和 m m m个糖果棒的初始高度,每个糖果棒都要 n n n头牛轮流吃一波过去,牛吃了多长的糖果棒,就会长多高。但是每头牛只能吃到小于等于它高度并且有的糖果棒。求最后这 m m m个糖果棒都吃完,这 n n n头牛的高度。( 1 < = n , m < = 2 ∗ 1 0 5 1<=n,m<=2*10^5 1<=n,m<=2105,牛和糖果棒高度范围: [ 1 , 1 0 9 ] [1,10^9] [1,109])
先通过样例,再深入理解一下题意。
给定 3 3 3 头牛,每头牛的初始高度分别为 3 、 2 、 5 3、2、5 325;给定 2 2 2个糖果棒,每个糖果棒的初始高度分别为 6 、 1 6、1 61
第一个糖果棒情况:一开始糖果棒高度 [ 1 , 6 ] [1,6] [1,6],第一头牛(高度为 3 3 3)吃掉 [ 1 , 3 ] [1,3] [1,3]部分,还剩 [ 4 , 6 ] [4,6] [4,6]部分;第二头牛高度(高度为 2 2 2)太低,吃不到;第三头牛(高度为 5 5 5)能吃到糖果棒的 [ 4 , 5 ] [4,5] [4,5]部分。
牛的高度变成 6 、 2 、 7 6、2、7 627
第二个糖果棒情况:第一头牛(高度为 6 6 6),能把第二个糖果棒 [ 1 , 1 ] [1,1] [1,1]全部吃掉,增长高度 1 1 1
牛的高度变成 7 、 2 、 7 7、2、7 727
题解:把题意理解之后,其实就是一个模拟题。可以维护一下糖果棒目前可以吃的高度区间 [ l , r ] [l,r] [l,r]。当牛的高度完全大于等于 r r r(即能够把糖果棒全部吃掉),那就把目前糖果棒能吃的部分全部加到牛的高度上;如果牛的高度是在 [ l , r ] [l,r] [l,r]中间部分的,那么牛能吃的部分就是牛的高度 a [ j ] a[j] a[j]减去 l l l。注意在枚举的过程中记得维护一下 l l l。( r r r一开始就定好了,没必要去更改)
代码

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
ll n, m, l, r, k, a[200005];

int main
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值