AIM Tech Round 3 (Div. 2)

本文提供AIMTechRound3(Div.2)中两道题目的详细解答过程,包括模拟方法解决橘子汁容器溢出问题及数轴上最短路径问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AIM Tech Round 3 (Div. 2)

/好慌,补坑。啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!/

A
—————————————————————————————

题意:n 个 橘子, 大小大于 b 的不要, 盛橘子汁的容器 为 d, 如果橘子汁溢出了, 那么清理一次容器 使 之内的橘子汁为 0, 问清理多少次。

题解:模拟。注意是大于等于还是大于就可以了,代码很清晰。

代码:

#include <iostream>
#include <queue>
#include <cstring>
#include <cstdio>
using namespace std;

const int MAXN = 100000 + 10;
int ora[MAXN];

int main()
{
    int a, b, d;
    cin >> a >> b >> d;
    for(int i = 1; i <= a; i ++)
        scanf("%d",&ora[i]);
    int sum = 0, ans = 0;
    for(int i = 1; i <= a; i ++)
    {
        if(ora[i] > b)
            continue;
        sum += ora[i];
        if(sum > d)
        {
            ans ++;
            sum = 0;
        }
    }
    cout << ans << endl;
    return 0;
}
/*
Input
2 951637 951638
44069 951637
Output
0
Answer
1
*/
} 

B
—————————————————————————————

题意:数轴上有 n 个点, 给你所在的位置 a , 求你走过 n-1 个点的最短距离。

题解:分类讨论,弱鸡qer 比较zz。

代码:

#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;

const int MAXN = 1000000 + 10;
int l[MAXN];

int getdis(int l, int a, int r)
{
    return min(abs(a-l)*2 + abs(r-a), abs(r-a)*2 + abs(a-l));
}

int main()
{
    int n, a;
    cin >> n >> a;
    for(int i = 1; i <= n; i ++)
        scanf("%d",&l[i]);
    if(n == 1)
        puts("0");
    else{
        sort(l+1,l+n+1);
        int ans = 2147483647;
        if(a <= l[1])
            ans = min(ans, abs(l[n-1] - a));
        else if(a >= l[n])
            ans = min(ans, abs(l[2] - a));
        else if(n == 2)
            ans = min(abs(a - l[1]), abs(l[n] - a));
        else if(l[1] < a && l[2] > a)
            ans = min(getdis(l[1],a,l[n-1]), abs(l[n] - a));
        else if(l[n] > a && l[n-1] < a)
            ans = min(getdis(l[2],a,l[n]), abs(l[1] - a));
        else ans = min(getdis(l[1],a,l[n-1]), getdis(l[2],a,l[n]));
        printf("%d\n",ans);
    }
    return 0;       
}

终于补上了,嘿嘿嘿、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值