P14971 『GTOI - 2B』DDoS题解

P14971 『GTOI - 2B』DDoS

题目描述

现在有 nnn 个人提交代码给洛谷,其中第 iii 个人提交代码的时间是第 lil_ili 秒至第 rir_iri(包括第 li,ril_i,r_ili,ri 秒)

小 H 可以进行若干次操作,每次操作选择两个正整数 x,yx,yx,y 满足 x≤yx\le yxy,用 y−x+1y-x+1yx+1 的代价在区间 [x,y][x,y][x,y] 所对应的时间,即第 xxx 秒到第 yyy 秒内 (包括第 x,yx,yx,y 秒) 向洛谷发起 DDoS 攻击。小 H 可使用的总代价为 mmm

小 H 希望所有的 nnn 个人在提交代码时都全程受到 DDoS 攻击。

我们认为第 iii 个人提交代码时全程受到 DDoS 攻击,当且仅当对于 ∀j∈[li,ri]\forall j\in[l_i,r_i]j[li,ri],第 jjj 秒有 DDoS 攻击。

由于小 H 讨厌不连续的攻击,所以他问你,他至少要进行几次操作,才能使得这 nnn 个人提交代码时都全程受到 DDoS 攻击。

如果无论如何都不能使得这 nnn 个人提交代码时都全程受到 DDoS 攻击,输出 −1-11

输入格式

第一行,两个正整数 n,mn,mn,m

接下来 nnn 行,每行两个正整数 li,ril_i,r_ili,ri

输出格式

一个整数,表示最小的操作次数,无解输出 -1\text{-1}-1

输入输出样例 #1

输入 #1

5 12
2 4
11 12
6 8
1 3
10 13

输出 #1

2

输入输出样例 #2

输入 #2

5 12
1 3
6 9
4 5
2 4
10 12

输出 #2

1

输入输出样例 #3

输入 #3

2 14
1 10
2 15

输出 #3

-1

说明/提示

【数据范围】

本题采用捆绑测试。

对于 100%100\%100% 的数据,保证 1≤n≤106,1≤m,li,ri≤1091 \le n \le 10^6,1 \le m,l_i,r_i \le 10^91n106,1m,li,ri109

Subtask\text{Subtask}Subtasknnnm,li,rim,l_i,r_im,li,ri分值
111≤10\le1010≤106\le10^6106202020
222≤105\le10^5105≤106\le10^6106303030
333≤106\le10^6106≤109\le10^9109505050

思路

直接暴力。

代码见下

#include<bits/stdc++.h>
using namespace std;
long long n,m,dl=1,db=0,op=0,b[1000006],de=0,fk=0;
struct one{
    long long l,r;
}a[1000006];
bool cmp(one a1,one b1){
    return a1.l<b1.l;
}
map<long long,long long> mp;
int main(){
	cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i].l>>a[i].r;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        if(db<=a[i].l-2){
            op+=(db-dl+1);
            if(i!=1) b[++de]=(a[i].l-db-1);
            dl=a[i].l;
            db=a[i].r;
            fk++;
        }
        else{
            db=max(db,a[i].r);
        }
    }
    op+=(db-dl+1);
    //fk++;
    if(m<=op-1){
        cout<<-1<<endl;
    }
    else{
        sort(b+1,b+de+1);
        for(int i=1;i<=de;i++){
            if(op+b[i]<=m){
                op+=b[i];
                fk--;
            }
            // else{
            //     break;
            // }
        }
        cout<<fk<<endl;
    }
	return 0;
}
posted @ 2026-01-26 21:24  bz02_2023f2  阅读(3)  评论(0)    收藏  举报  来源