求助,离散化60pts,WA at #1,2,3,4

P3740 [HAOI2014] 贴海报

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了,谢谢回复!


|