zoukankan      html  css  js  c++  java
  • JZ初中OJ 2291. [noip普及组1]序列

    题目描述

    有一个长度为n的序列A,其中有m个位置是1,其余位置全是0。你可以选择不超过k个区间,满足所有是1的位置都被至少一个区间覆盖。对于一个区间[l,r],我们定义它的长度为r-l+1,求满足条件的最小区间长度之和。
     

    输入

    第一行三个整数m,n,k,意义如上。
    接下来m行,每行一个整数x,表示Ax是1。保证输入的x递增。

    输出

    输出一行一个整数,表示满足条件的最小区间长度之和。
     

    样例输入

    4 100 2
    20 30 75 80

    样例输出

    17
     

    数据范围限制

    对于20%的数据,m,k≤10,n≤100;
    对于50%的数据,m,k≤2000,n≤109;
    对于100%的数据,m,k≤200000,n≤109。
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int m,n,k,p,u=1,ans,now,last,c[200001];
     4 bool cmp(int x,int y)
     5 {
     6     return x<y;
     7 }
     8 int main()
     9 {
    10     freopen("seq.in","r",stdin);
    11     freopen("seq.out","w",stdout);
    12     scanf("%d%d%d",&m,&n,&k);
    13     for(int i=1;i<=m;i++)
    14     {
    15         scanf("%d",&now);
    16         if(now!=last+1)
    17         {
    18             if(i!=1)
    19             {            
    20                 p++;
    21                 c[p]=now-last-1;
    22             }
    23         }
    24         last=now;
    25     }
    26     sort(c+1,c+1+p,cmp);
    27     while(k<p+1)
    28     {
    29         ans+=c[u];
    30         u++;
    31         p--;
    32     }
    33     printf("%d",ans+m);
    34     return 0;
    35 }
  • 相关阅读:
    HDU4857 逃生 拓扑排序
    HDU1285 确定名次 拓扑排序
    【noip模拟赛4】找啊找啊找BF 拓扑排序
    拓扑排序基础
    【noip模拟赛5】任务分配 降维dp
    【noip模拟赛6】收入计划 最大值的最小值 二分答案
    【noip模拟赛5】水流
    标记预期失败
    跳过:
    pytest配置文件:
  • 原文地址:https://www.cnblogs.com/dsanying/p/11317221.html
Copyright © 2011-2022 走看看