WindyDay @ 2024-07-31 12:48:02
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
vector<int> post;
set<int> st;
int wall[2005];
int main() {
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++) {
int ta,tb;
scanf("%d%d",&ta,&tb);
ta=max(ta,1);
tb=min(tb,n);
post.push_back(ta);
post.push_back(tb);
}
vector<int> tmp(post);
sort(tmp.begin(),tmp.end());
tmp.erase(unique(tmp.begin(),tmp.end()),tmp.end());
for(int i=0;i<2*m;i++) {
post[i]=lower_bound(tmp.begin(),tmp.end(),post[i])-tmp.begin();
}
for(int i=1;i<=m;i++) {
int l=2*i-2,r=2*i-1;
for(int j=post[l];j<=post[r];j++) {
wall[j]=i;
}
}
bool flag=0;
for(int i=0;i<2*m;i++) {
st.insert(wall[i]);
if(!wall[i]) flag=1;
}
printf("%d\n",st.size()-flag);
return 0;
}
by numberB @ 2024-08-02 15:08:00
离散化少东西 1 5 1 2 4 5 像这种情况需要给3也离散化
by WindyDay @ 2024-08-04 11:28:50
@numberB AC了,谢谢回复!