Educational Codeforces Round 118 (Rated for Div. 2)(A,B,C)

目录


感觉这场就是菜狗abc拼手速了…
题目链接.

A. Long Comparison

#include<bits/stdc++.h>
#define ll long long
ll mod=998244353;
using namespace std;
 
int t;
int n;
ll h;
ll a[110];
 
ll check(ll x)
{
    ll ans=x;
    for(int i=2;i<=n;i++)
    {
        if(a[i]-a[i-1]>=x)ans+=x;
        else ans+=a[i]-a[i-1];
    }
    return ans;
}
 
int main()
{
    cin>>t;
    while(t--)
    {
       cin>>n>>h;
       for(int i=1;i<=n;i++)cin>>a[i];
       if(n>=h)
       {
           cout<<"1\n";
           continue;
       }
       ll l=2,r=h;
       while(l<r)
       {
           ll mid=l+(r-l)/2;
           if(check(mid)>=h)r=mid;
           else l=mid+1;
       }
       cout<<l<<"\n";
    }
    return 0;
}

B.Absent Remainder

#include<bits/stdc++.h>
#define ll long long
ll mod=998244353;
using namespace std;
 
int t;
int n;
int a[200010];
 
int main()
{
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
        sort(a+1,a+1+n);
        for(int i=n;i>(n+1)/2;i--)
        {
            cout<<a[i]<<" "<<a[1]<<"\n";
        }
    }
    return 0;
}

C. Poisoned Dagger

题意:读了好久才读懂题意。
有 n n n个时间点进行攻击,每次攻击持续 k k k秒(包括攻击的那一秒,如果时间不到 k k k秒就到达下次攻击,那么此次攻击结束进行下次攻击),攻击的每秒可减少 1 1 1点血量,求能打败怪兽(怪兽血量为 h h h)所需要的最小的 k k k。
思路:二分答案。

#include<bits/stdc++.h>
#define ll long long
ll mod=998244353;
using namespace std;
 
int t;
int n;
ll h;
ll a[110];
 
ll check(ll x)
{
    ll ans=x;
    for(int i=2;i<=n;i++)
    {
        if(a[i]-a[i-1]>=x)ans+=x;
        else ans+=a[i]-a[i-1];
    }
    return ans;
}
 
int main()
{
    cin>>t;
    while(t--)
    {
       cin>>n>>h;
       for(int i=1;i<=n;i++)cin>>a[i];
       if(n>=h)
       {
           cout<<"1\n";
           continue;
       }
       ll l=2,r=h;
       while(l<r)
       {
           ll mid=l+(r-l)/2;
           if(check(mid)>=h)r=mid;
           else l=mid+1;
       }
       cout<<l<<"\n";
    }
    return 0;
}
上一篇:读研秘籍


下一篇:C语言程序设计(Part Ⅴ)(函数)