zoukankan      html  css  js  c++  java
  • 4.12头条笔试

    ak了,挺简单得,许愿面试

    第一题

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1e6+5;
    int val[maxn],res[maxn],res2[maxn];
    int arr[maxn];
    pair<int,int>skt[maxn];
    int main() {
        int t;
        cin>>t;
        while(t--){
          int n;cin>>n;
          for(int i=1;i<=n;++i)cin>>val[i];
          int top=0;
          for(int i=1;i<=n;++i){
            while(top&&skt[top].first<=val[i])--top;
            if(top){
                 res[i]=i-skt[top].second-1;
            }
            else {
                res[i]=i-1;
            }
            ++top;
            skt[top]=make_pair(val[i],i);
          }
          for(int i=1;i<=n;i++)skt[i].first=skt[i].second=0;
          top=0;
          for(int i=n;i>=1;--i){
            while(top&&skt[top].first<=val[i])--top;
            if(top){
                res[i]+=skt[top].second-i-1;
            }
            else res[i]+=(n-i);
            skt[++top]=make_pair(val[i],i);
          }
          for(int i=1;i<=n;i++)cout<<res[i]<<' ';
          puts("");
        }
        return 0;
    }

    第二题

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1e6+5;
    int val[maxn],res1[maxn],res2[maxn];
    int arr[maxn];
    int main() {
        int n;
        cin>>n;
        for(int i=0;i<n;++i)cin>>val[i];
        long long int ans=0;
        for(int i=n-2;i>=0;--i){
            if(val[i+1]>=val[i])continue;;
            int t = (val[i]-1)/val[i+1];
            ans+=t;
            val[i]/=(t+1);
        }
        cout<<ans;
        return 0;
    }

    第三题

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1e6+5;
    
    int a[maxn],b[maxn];
    int n,m;
    int fin(int x){
        int l = 0,r = n+1;
        for(int i=0;i<50;++i){
            int mid=(l+r)/2;
            if(a[mid]>x)r=mid;
            else l=mid;
        }
        return l;
    }
    int main() {
      //  int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;++i)scanf("%d",&a[i]);
        for(int i=1;i<=m;++i)scanf("%d",&b[i]);
        sort(a+1,a+1+n);
        sort(b+1,b+1+m);
        long long int  ans(0);
        for(int i=1;i<=m;++i){
            int id = fin(b[i]);
            ans+=b[i]-a[id];
        }
        cout<<ans;
        return 0;
    }

    第四题

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1e6+5;
    int val[maxn],res[maxn],res2[maxn];
    int arr[maxn];
    pair<int,int>skt[maxn];
    int main() {
        int t;
        cin>>t;
        while(t--){
          int n;cin>>n;
          for(int i=1;i<=n;++i)cin>>val[i];
          int top=0;
          for(int i=1;i<=n;++i){
            while(top&&skt[top].first<=val[i])--top;
            if(top){
                 res[i]=i-skt[top].second-1;
            }
            else {
                res[i]=i-1;
            }
            ++top;
            skt[top]=make_pair(val[i],i);
          }
          for(int i=1;i<=n;i++)skt[i].first=skt[i].second=0;
          top=0;
          for(int i=n;i>=1;--i){
            while(top&&skt[top].first<=val[i])--top;
            if(top){
                res[i]+=skt[top].second-i-1;
            }
            else res[i]+=(n-i);
            skt[++top]=make_pair(val[i],i);
          }
          for(int i=1;i<=n;i++)cout<<res[i]<<' ';
          puts("");
        }
        return 0;
    }
  • 相关阅读:
    计算任一输入的正整数的各位数字之和,并分析算法的时间复杂度
    10万数组去重,排序,找最多出现次数,(复杂度没有前一个博客好,随手写,有点烂)
    Maven环境搭建
    Tomcat内部结构及请求原理(转)
    Tomcat环境搭建
    斐讯面试记录—三线程交替打印ABC
    斐迅面试记录—SSL和TLS的区别
    斐迅面试记录—Http协议中的Header
    斐讯面试记录—强+软+弱+虚引用
    斐讯面试记录—TCP滑动窗口及拥塞控制
  • 原文地址:https://www.cnblogs.com/DreamKill/p/12687740.html
Copyright © 2011-2022 走看看