zoukankan      html  css  js  c++  java
  • 2017级算法第二次上机-D.天秤的烦恼

    这道题考查的还是基本STL的使用 这次考察的是去重函数的STL unique()

    unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址。

    所以如果你想要的是将任意一个数组实现去重 那么首先要将他sort排序。

    然后unique返回的还是去重之后的尾地址,那么len=unique(ar,ar+n) - ar 即是去重后数组的首地址。

    如果之后还要使用这个数组的话,记得呀更新数组的长度。

    总结一下,发现的STL的两个特性吧:

    1,stl函数的参数如果是一个数组的话 习惯上使用左闭右开的想法。

    2, stl函数的返回值对于数组的话,极有可能是返回的是一个地址。

    #include <algorithm>
    #include <iostream>
    using namespace std;
    const int maxlen = 1e6 + 10;
    long long ar[maxlen];
    int main(){
        int n,i,j,k,len,ans;
        long long x;
        while(~scanf("%d",&n)){
            for(i=0;i<n;i++)
                scanf("%lld",&ar[i]);
            sort(ar,ar+n);
            scanf("%lld",&x);
            len=unique(ar,ar+n) - ar;
            ans=len - (lower_bound(ar,ar+len,x) - ar) ;
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    P1242 新汉诺塔(hanio)
    P2878 [USACO07JAN]保护花朵Protecting the Flowers
    P2096 最佳旅游线路
    [P1363] 幻想迷宫
    在矩阵上跑最小生成树
    tarjan+topsort
    tarjan缩点
    【P3398]】仓鼠找sugar
    树形数组暴力
    解决跨域问题
  • 原文地址:https://www.cnblogs.com/visper/p/10099067.html
Copyright © 2011-2022 走看看