hdu 2275 Kiki & Little Kiki 1

来源:互联网 发布:mac如何下载lol 编辑:程序博客网 时间:2024/05/07 21:31

点击打开hdu 2275
思路: multiset的应用
分析:
1 我们把所有的插入x全部插入到multiset
2 碰到删除的时候x的时候,我们就去判断
  如果集合为空或者集合的第一个元素大于x,那么肯定是没有的删除的
  否则我们去找x的位置,如果找到直接删除,如果没有找到那么我们先
  插入x,然后再去找x的位置,那么假设找到的位置为it,那么it的前一个位置
  肯定比x小,那这样同时删掉两个即可

代码:

#include<set>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int n;multiset<int>st;void solve(int x){    if(st.empty() || x < *(st.begin())){        puts("No Element!");        return;    }    multiset<int>::iterator it;    it = st.find(x);    if(it != st.end()){        printf("%d\n" , *it);        st.erase(it);    }    else{        multiset<int>::iterator it2;        st.insert(x);        it = it2 = st.find(x);        it2--;        printf("%d\n" , *it2);        st.erase(it);        st.erase(it2);    }}int main(){    char str[10];    int x;    while(scanf("%d%*c" , &n) != EOF){        st.clear();        while(n--){            scanf("%s %d%*c" , str , &x);             if(!strcmp(str,"Push"))                st.insert(x);             else                solve(x);        }         puts("");    }    return 0;}



原创粉丝点击