1 条题解
-
0
如果只有一台摄像机的话只需要将节目按左端点从大到小排序,如果当前的节目的右端点大于上之前已经左端点,那就不取,否则就取它。但这里有两台摄像机,所以把存两个端点,第一台和第二台的,每次都先把能给第二台摄像机的节目都给第二台,不能给再试着给第一台,当第一台的左端点大于第二台是互换一下就OK了。
Code:
#include<cstdio> #include<algorithm> #define maxn 155 using namespace std; int N,ans; struct ZS{ int s,t; bool operator <(const ZS b)const{return t<b.t;} }a[maxn]; inline int read(){ int ret=0;char ch=getchar(); while (ch<'0'||ch>'9') ch=getchar(); while (ch>='0'&&ch<='9') ret=ret*10+ch-'0',ch=getchar(); return ret; } int main(){ N=read(); for(int i=1;i<=N;i++) a[i].s=read(),a[i].t=read(); sort(a+1,a+1+N); int lst1=0,lst2=0; for (int i=1;i<=N;i++) if (a[i].s<lst1) continue;else if (a[i].s<lst2) lst1=lst2,lst2=a[i].t,ans++;else lst2=a[i].t,ans++; printf("%d\n",ans); return 0; }
- 1
信息
- ID
- 2617
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 12
- 已通过
- 7
- 上传者