这个跟 路灯问题有点像,思路也比较简单,代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
typedef struct {
int start;
int end;
}Line;
bool compare(Line la,Line lb){
return la.start<lb.start;
}
int main(){
int M,N;
cin>>M;
cin>>N;
int sum=M+1;
Line* line; line = new Line;
for(int i=0;i<N;i++){
cin>>line[i].start;
cin>>line[i].end;
}
sort(line,line+N,compare);
for(int i=0;i<N-1;i++){
if(line[i].end<line[i+1].start){
sum=sum-line[i].end + line[i].start -1;
}else{
sum=sum-line[i].end + line[i].start -1;
sum +=line[i].end-line[i+1].start+1;
}
};
if(line[N-1].end<line[N].start){
sum=sum-line[N-1].end + line[N-1].start -1;
}else{
sum=sum-line[N-1].end + line[N-1].start -1;
sum +=line[N-1].end-line[N].start+1;
sum=sum-line[N].end + line[N].start -1;
}
delete line;
cout<<sum;
return 0;
}
这里主要是用到了结构体的排序。
代码评测通过率为25%,不知道哪里出了问题。 ?