• cf1008 codeforces round #535(div3) E1. Array and Segments (Easy version)


    这道题会发现如果一开始确定了整个序列中的最小值,就可以把所有包含他的区间都选上。因为如果最大值在区间内,则不会改变结果(最大值最小值都减一)

    最大值不在区间内,正好使得最大值最小值的差变大。

    所以枚举一下1到n,然后按照贪心策略跑一遍就好啦

    #include<bits/stdc++.h>
    using namespace std;
    int a[310];
    int b[310];
    int l[310],r[310];
    const int INF=(int)1e9+7;
    vector<int> res,tmp;
    int num;
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
           scanf("%d",&a[i]);
        for(int i=1;i<=m;i++)
           scanf("%d%d",&l[i],&r[i]);
        for(int pos=1;pos<=n;pos++)
        {
            tmp.clear();
            for(int i=1;i<=n;i++)
                b[i]=a[i];
            for(int i=1;i<=m;i++)
            {
                if(l[i]<=pos&&r[i]>=pos)
                {
                     tmp.push_back(i);
                     for(int j=l[i];j<=r[i];j++)
                     {
                         b[j]--;    
                     }    
                }
            }
            int maxn=-INF,minn=INF;
            for(int i=1;i<=n;i++)
            {
                maxn=max(b[i],maxn);
                minn=min(b[i],minn);
            }
            if(maxn-minn>num)
            {
                num=maxn-minn;
                res=tmp;
            }
        }
        printf("%d
    ",num);
        printf("%d
    ",res.size());
        for(int i=0;i<res.size();i++)
          printf("%d ",res[i]);
        printf("
    ");
    }
  • 相关阅读:
    H5分栏(第一章)
    数据库操作集合
    sql 存储过程
    数据库事务
    Sql 分页三种方式
    GridView 后台分页
    GridView 分页 上一页 下一页 跳转 前端分页
    GridView 分页
    web前端开发分享-css,js入门篇(转)
    Intellij IDEA,WebStorm-keymap(转)
  • 原文地址:https://www.cnblogs.com/lishengkangshidatiancai/p/10315116.html
Copyright © 2020-2023  润新知