首页 > 编程语言 >晚上调代码时写对拍程序之——为了不手写平衡树而乱搞的可支持随机访问、快速插入、快速删除的数据结构之—— abstract数组

晚上调代码时写对拍程序之——为了不手写平衡树而乱搞的可支持随机访问、快速插入、快速删除的数据结构之—— abstract数组

时间:2024-02-19 15:13:34浏览次数:30  
标签:abstract 乱搞 时写 平衡 数据结构 快速 树而 size

前言

由于需要一个可支持随机访问、快速插入、快速删除的数据结构,但是我除了平衡树实在是想不到别的东西了,于是就乱搞出了一个这样的东西——abstract数组。

但是,这玩意好像码量和平衡树差不多......

不过!我认为她还是有优点的:相比起平衡树,她应该更不容易出锅?

总之,不管怎么样,还是把她记录一下吧,不枉费我花的一个晚自习 qwq。

正文

还能有什么正文?自己领悟。

还是感觉不如平衡树。

下面是代码(纯属娱乐):

点击查看代码
class abstract{
private:
  int num[N + 5], size = 0, end = 0;
  bool uh[N + 5];
  set<int> del;
  void remake(){
    if(size * 2 > end || size == 0)
      return;
    size = 0;
    for(int i = 1; i <= end; ++i)
      if(!uh[i])
        if(del.find(num[i]) == del.end()){
          ++size;
          num[size] = num[i];
          uh[size] = false;
        }
    del.clear();
    end = size;
    return;
  }
public:
  void insert(int x){
    ++end, ++size;
    num[end] = x;
    uh[end] = false;
    return;
  }
  void erase(int x){
    --size;
    del.insert(x);
    remake();
    return;
  }
  int rand(){
    if(end != 0)
      while(6 - 3 != 6){//Albert Einstein's abstract formula?
        int x = ::rand() % end + 1;
        if(uh[x])
          continue;
        if(del.find(num[x]) != del.end()){
          uh[x] = true;
          del.erase(num[x]);
          continue;
        }
        return num[x];
      }
    return 0;
  }
};

标签:abstract,乱搞,时写,平衡,数据结构,快速,树而,size
From: https://www.cnblogs.com/moonbowqwq/p/18019981

相关文章

  • 自定义一个QAbstractItemView控件
    本文是模仿某些软件里的控件样式。在组合框里选择具有两级结构的数据,比如选某省->某市类似的数据。下述代码在VS2015和Qt5.9中测试通过。其运行效果如图。为了展示更多的功能,我还特地实现了滚动条的功能:头文件:classMItemView:publicQAbstractItemView{Q_OBJECTpub......
  • 【VIrtuoso】abstract的相关配置
    需要将cds.libcopy过来,保证abstract能够吃到工艺的相关信息 absSkillMode()absSetOption("NewLibraryPath""./")absSetOption("NewLibraryName""TEST")absSetLibrary("TEST")absAttachTechLib("TN28")absSetOption(&quo......
  • Programming Abstractions in C阅读笔记:p254-p257
    《ProgrammingAbstractionsinC》学习第70天,p254-p257总结,总计4页。一、技术总结1.minimaxstrategy(极小化极大算法)p255,Thisidea--findingthepositionthatleavesyouropponentwiththeworstpossiblebestmove--iscalledtheminimaxstrategybecausethegoa......
  • 说说Java的AbstractQueuedSynchronizer
    Java中的Lock锁,都是基于AQS,也就是AbstractQueuedSynchronizer。那么AbstractQueuedSynchronizer又是基于什么原理来做锁的呢?一:锁原理1. 怎么算获取到了锁?AQS内置了一个volatileintstate字段,利用CAS保证并发安全,当state=0表示没没有线程占用。只要线程设置了state(比如置为1,......
  • Programming Abstractions in C阅读笔记:p246-p247
    《ProgrammingAbstractionsinC》学习第68天,p246-p247总结,总计2页。一、技术总结本章通过“thegameofnim(尼姆游戏)”,这类以现实生活中事物作为例子进行讲解的情况,往往对学习者要求比较高,需要学习者具备一定的人文、历史知识或专业知识,如果缺乏这方面的知识,就会导致读者在......
  • AQS (AbstractQueuedSynchronizer) 概述
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.c......
  • mybatis 同时写多条sql
    一、oracle数据<deleteid="delete"parameterType="upc.cbs.HtxxlrEntity">begindeletefromPC_CBS_CONTRACTwherecontract_id=#{contract_id};deletefromPC_CBS_UPLOAD_FILESwherecontract_id=#{contract_id}andfiletype=�......
  • 27-抽象类 Abstract
    抽象类是一个特殊的父类,其内部允许编写抽象方法 publicclassAbstractDemo{publicstaticvoidmain(String[]args){//抽象类不能实例化//Animalanimal=newAnimal();//error:Animalisabstract;cannotbeinstantiatedCatca......
  • 2_7 Object Abstraction
    2_7ObjectAbstractionTheobjectsystemallowsprogrammerstobuildanduseabstractdatarepresentationsefficiently.Itisalsodesignedtoallowmultiplerepresentationsofabstractdatatocoexistinthesameprogram.Acentralconceptinobjectabst......
  • C#中 abstract class和interface有什么区别?
    abstractclassabstract声明抽象类抽象方法,一个类中有抽象方法,那么这个类就是抽象类了。所谓的抽象方法,就是不含主体(不提供实现方法),必须由继承者重写。因此,抽象类不可实例化,只能通过继承被子类重写。interface声明接口,只提供一些方法规约,在C#8之前的版本中不提供任何实现,在C#......