AIM Tech Round 3 (Div. 2)

来源:互联网 发布:皮影客软件介绍 编辑:程序博客网 时间:2024/05/17 05:05

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;}/*Input2 951637 95163844069 951637Output0Answer1*/} 

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;       }

终于补上了,嘿嘿嘿、

0 0
原创粉丝点击