Codeforces Round #381 (Div. 2) &&Codeforce_740

A. Alyona and copybooks

水题,让求满足条件的最小花费,注意组合可能是多个即可。

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

typedef long long ll;

int main(int argc, char const *argv[])
{
    ll n,a,b,c;
    cin>>n>>a>>b>>c;
    n%=4;
    ll ans;
    if (n==0) ans=0;
    else if (n==1){
        ans=c;
        ans=min(ans,3*a);
        ans=min(ans,a+b);
    }else if (n==2){
        ans=b;
        ans=min(ans,2*c);
        ans=min(ans,2*a);
    }else {
        ans=a;
        ans=min(ans,3*c);
        ans=min(ans,c+b);
    }
    cout<<ans<<endl;
    return 0;
}

B. Alyona and flowers

也是水题,只要该区间的贡献小于0就略过去。

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

int v[105];
typedef long long ll;
int main(int argc, char const *argv[])
{
    int n,m;
    cin>>n>>m;
    for (int i=1;i<=n;i++) cin>>v[i];
    ll ans=0;
    for (int i=0;i<m;i++){
        int l,r;
        cin>>l>>r;
        int tt=0;
        for (int j=l;j<=r;j++) tt+=v[j];
        if (tt>0) ans+=tt;
    }
    cout<<ans<<endl;
    return 0;
}

C. Alyona and mex

给定一些区间,求这些区间的最小mex值最大为多少。

很明显,最小区间长度+1即为结果,然后直接构造就行,

当时敲到最后输出的时候,电脑没电了,很遗憾。

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

const int N=1e5+5;
int l[N],r[N];
int v[N];
int main(int argc, char const *argv[])
{
    int n,m;
    cin>>n>>m;
    int p=n+1,q=0;
    for (int i=0;i<m;i++){
        cin>>l[i]>>r[i];
        if (r[i]-l[i]+1<p){
            p=r[i]-l[i]+1;
            q=i;
        }
    }
    cout<<p<<endl;
    int ll=0;
    for (int i=0;i<n;i++) {
        cout<<ll++<<" ";
        if (ll==p) ll=0;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/bobodem/article/details/53324579