洛谷 P2684 搞清洁
题目描述
FJ准备分配它的N只奶牛(1 <= N <= 25,000) 做清洁工作,他把一天分成T(1 <= T <= 1,000,000)个时间段,他希望每一个时间段都有奶牛在清洁,但搞清洁的奶牛数越少越好。
输入输出格式
输入格式:
第一行,两下整数N和T。
接下来N行,每行两个整数,表示第i头奶牛能工作的时间段。
输出格式:
使每一个时间段都有奶牛工作的最少奶牛数,如果不可能,则输出-1。
输入输出样例
说明
样例解释:
有3头奶牛,第1头能工作的时间段是1至7,即从时间1开始工作,时间7结束(时间7也在工作的),第2头是3-6,第3头是8-10,则只需要第1头和第3头奶牛就能使每一个时间都有奶牛工作。
思路:此题卡我的map
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,m,a[1000010]; int temp,start,end,sum; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ int t,t1; cin>>t>>t1; if(a[t]<t1) a[t]=t1; } while(temp<m){ for(int i=start+1;i<=end+1;i++) if(temp<a[i]) temp=a[i]; if(temp<end+1){ cout<<-1; return 0; } start=end; end=temp; sum++; } cout<<sum; }
细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。
雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。