日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【贪心】监测点

發布時間:2023/12/13 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 【贪心】监测点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

“多么希望有一天突然驚醒,發現自己是在小學的一節課上睡著了,現在經歷的一切都是一場夢,桌上滿是你的口水。你告訴同桌,說做了一個好長好長的夢。同桌罵你白癡,叫你好好聽課。你看著窗外的球場,一切都那么熟悉,一切還充滿希望……”張琪曼通過時空監測點聽到40年前的小墨老師對李旭琳這樣說。

話說張琪曼等人將歷史時間線劃分了n個區域,我們可以將之看成是數軸上的n個閉區間[ai,bi]。現要設置盡量少的監測點,使得每個區間內都至少有一個點(不同區間內含的點可以是同一個),請問需要多少個監測點?

輸入

第一行為一個整數X,表示有X組數據,每組數據第一行為一個整數n(N≤100),表示有n個閉區間,隨后n行每行為兩個整數,表示區間左端a和右端b(0≤a≤b≤100)。

輸出

一個整數,即監測點個數。

樣例輸入

1
3
1 5
2 8
6 9

樣例輸出

2

分析:其實這題和上一題一樣。。。

#include <iostream>
#include <string>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>
#include <map>
#define range(i,a,b) for(int i=a;i<=b;++i)
#define LL long long
#define rerange(i,a,b) for(int i=a;i>=b;--i)
#define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
using namespace std;
pair<int,int>aa[115];
int n,ans,t;
void init(){
    cin>>t;
}
void swap(int&a,int&b){
    int tmp=a;
    a=b;
    b=tmp;
}
bool cmp(pair<int,int>a,pair<int,int>b){
    return a.second<b.second||a.second==b.second&&a.first<b.first;
}
void solve(){
    while(t--) {
        cin >> n;
        int s, e;
        range(i, 1, n) {
            cin >> s >> e;
            if (s > e)swap(s, e);
            aa[i].first = s;
            aa[i].second = e;
        }
        sort(aa + 1, aa + 1 + n, cmp);
        ans = 1;
        int pos = 1;
        range(i, 2, n)
            if (aa[i].first > aa[pos].second) {
                ++ans;
                pos = i;
            }
        cout << ans << endl;
    }
}
int main() {
    init();
    solve();
    return 0;
}

View Code

總結

以上是生活随笔為你收集整理的【贪心】监测点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。