pair<>结构体模版的用法

  1.pair算是一个结构体模版,定义的时候是这样的:

pair<T1,T2> P;

其中T1,T2可以是int,string,double,甚至是vector<>。

 

2.进行初始化是这样的:

pair<int,int> a(12,34);

也可以借用make_pair()函数:

pair<int,int> a;

a=make_pair(12,34);

 

3.进行调用是很简单的:

pair<int,int> a(12,34);

printf("%d %d",a.first,a,second);

 

4.如果对pair进行排序,进行的是字典序比较。

pair<int,int> a[100];

可以用sort(a,a+100)进行排序。

 

5.下面有个小程序来展示他的用法。

(这个程序用于解决贪心法当中的区间调度问题。)

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int MAX_N=100000;
int N,S[MAX_N],T[MAX_N];
pair<int,int> itv[MAX_N];

void solve(){
    //对pair进行的是字典序比较
    //为了让结束时间早的工作排在前面,把T存入first,把S存入second
    for(int i=0;i<N;i++){
        itv[i].first=T[i];
        itv[i].second=S[i];
    }
    sort(itv,itv+N);
    //t是最后所选工作的结束时间。
    int ans=0,t=0;
    for(int i=0;i<N;i++){
        if(t<itv[i].second){
            ans++;
            t=itv[i].first;
        }
    }
    printf("%d\n",ans);
}


/*
本程序用于解决贪心法当中的区间调度问题
测试数据
5
1 2 4 6 8
3 5 7 9 10
*/
int main()
{
    scanf("%d",&N);
    for(int i=0;i<N;i++){
        scanf("%d",&S[i]);
    }
    for(int i=0;i<N;i++){
        scanf("%d",&T[i]);
    }
    solve();
    return 0;
}

 

全部评论

相关推荐

01-12 17:45
门头沟学院 Java
985废物一枚:就是问问你能不能接受北京的房租,hr也知道公司工资不高,大概率是要贴钱的
找实习记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务