zoukankan      html  css  js  c++  java
  • loj 6282 数列分块入门 6

    题解:块状链表。最简陋的块状链表就能过。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=100005;
    int n,block,cnt,w[maxn];
    vector<int> v[maxn];
    int get(int x);
    void insert(int l,int r);
    int check(int r);
    int main()
    {
      int i,op,l,r,c;
      scanf("%d",&n);
      
      block=sqrt(n);
      if(n%block) cnt=n/block+1;
      else cnt=n/block;
      
      for(i=1;i<=n;i++) 
      {
        scanf("%lld",&w[i]);
        v[get(i)].push_back(w[i]);
      }
      
      for(i=0;i<n;i++)
      {
        scanf("%d%d%d%d",&op,&l,&r,&c);
        if(op==0) insert(l,r);
        else printf("%d
    ",check(r));
      }
      system("pause");
      return 0;
    }
    int get(int x)
    {return (x-1)/block+1;}
    void insert(int l,int r)
    {
      for(int i=1;i<=cnt;i++)
      {
          if(l<=v[i].size()) 
          {
            v[i].insert(v[i].begin()+l-1,r);
            break;
          }
          else l-=v[i].size();
      }
    }
    int check(int r)
    {
      for(int i=1;i<=cnt;i++)
      {
        if(r<=v[i].size())  return v[i][r-1];
        else r-=v[i].size();
      }
    }
    本博客仅为本人学习,总结,归纳,交流所用,若文章中存在错误或有不当之处,十分抱歉,劳烦指出,不胜感激!!!
  • 相关阅读:
    mint17上建立lamp环境
    iptables开始ftp
    查看mysql集群状态是否正常
    限制SSH访问源,禁止4A之外的地址跳转访问
    查看cpu、内存和硬盘
    降kipmi0的CPU
    更改密钥对
    eNSP
    划分分区GPT11
    修改虚机IP
  • 原文地址:https://www.cnblogs.com/VividBinGo/p/11306503.html
Copyright © 2011-2022 走看看