当前位置: 首页 > news >正文

asp access 手机站 用于做微网站seo服务

asp access 手机站 用于做微网站,seo服务,属于网站开发的动态服务器,写网页的素材图片这里是题目地址 其实就是带修改的区间第K大。 写了一下BIT套主席树#xff0c;内存飞起#xff0c;似乎需要特别的优化技巧 所以还是写了一下线段树套平衡树#xff0c;跑了1s左右。 其实线段树套平衡树就是归并树的自然扩展而已。 归并树是把归并排序的过程建成一颗线段树…这里是题目地址   其实就是带修改的区间第K大。 写了一下BIT套主席树内存飞起似乎需要特别的优化技巧  所以还是写了一下线段树套平衡树跑了1s左右。 其实线段树套平衡树就是归并树的自然扩展而已。 归并树是把归并排序的过程建成一颗线段树每个节点是一个数组存的是这个节点对应区间的元素的正序 空间复杂度O( n log n ) 。 每次查询的时候二分答案 问题转化成询问区间中有多少个数比k小。外层查询和一般的线段树一样只是在线段树的节点处需要再次二分得到节点区间中比k小的数的个数。这样二分答案有一个log 线段树中询问也需要一个log 线段树节点处二分需要一个log 每次询问的复杂度为O( log^3 n ) 。   加入修改操作的时候只需要把线段树节点的数组改为平衡树实现就好了。这是很自然的线段树节点维护对应节点的顺序又要支持修改显然平衡树符合要求。 平衡树用splay实现了一下跑了1080ms 然后用Treap实现了一下RE得浑身难受。。。实在是码力不行啊Orz 1 #include iostream2 #include cstring3 #include cstdio4 using namespace std ;5 const int N 50000 10 ,INF ~1u1;6 int M ,num[N] ;7 struct node{8 node *ch[2] ,*p ;9 int size ,val ;10 bool d() ;11 void setc( node * ,bool ) ,rol() ,pushup() ;12 }pool[N*19] ,*cur ,NU ,*null NU ;13 bool node::d(){14 return p-ch[1] this ;15 }16 void node::setc( node *c ,bool d ){17 ch[d] c ,c-p this ;18 }19 void node::rol(){20 node *s p ;21 int dd d() ;22 s-p-setc( this ,p-d() ) ;23 s-setc( ch[!dd] ,dd ) ;24 setc( s ,!dd ) ;25 s-pushup() ;26 }27 void node::pushup(){28 size ch[0]-size ch[1]-size 1 ;29 }30 struct Splay{31 node *root ;32 void splay( node * ,node * ) ,insert( node * ) ;33 void change( int ,int ) ,find( int ) ,init() ;34 node *get( int ) ;35 int rank( int ) ;36 }tree[N2] ;37 38 node *newnode( int val ){39 cur-val val ;40 cur-size 1 ;41 cur-ch[0] cur-ch[1] cur-p null ;42 return cur ;43 }44 void Splay::init(){45 root newnode(-INF) ;46 }47 void Splay::splay( node *x ,node *p null ){48 while( x-p ! p ){49 if( x-p-p ! p )50 x-d() x-p-d() ? x-p-rol() : x-rol() ;51 x-rol() ;52 }53 x-pushup() ;54 if( p null ) root x ;55 }56 void Splay::insert( node *x ){57 if( root null ) root x ,root-p null ;58 else for( node *t root ;; ){59 t-size ;60 node *s t-ch[ x-val t-val ] ;61 if( s null ){62 s x ,s-p t ;63 splay( x ) ;64 break ;65 }66 t s ;67 }68 }69 void Splay::find( int x ){70 for( node *t root ;; ){71 if( x t-val ){72 splay( t ) ;73 return ;74 }75 t t-ch[ x t-val ] ;76 }77 }78 void Splay::change( int x ,int val ){79 find( x ) ;80 node *p root ;81 node *t get( root-ch[0]-size ) ;82 splay( t ,root ) ;83 t-setc( root-ch[1] ,1 ) ;84 t-pushup() ,root t ,t-p null ;85 p-val val ,p-size 1 ;86 p-ch[0] p-ch[1] null ;87 insert( p ) ;88 return ;89 }90 node *Splay::get( int s ){91 for( node *t root ;; ){92 int k t-ch[0]-size ;93 if( s k 1 ) return t ;94 if( s k 1 ) s - k 1 ,t t-ch[1] ;95 else t t-ch[0] ;96 }97 }98 int Splay::rank( int x ){99 int res 0 ; 100 for( node *t root ;; ){ 101 node *s t-ch[ x t-val ] ; 102 if( t-val x ) res t-ch[0]-size 1 ; 103 if( s null ){ 104 splay(t) ; 105 return res - 1 ; 106 } 107 t s ; 108 } 109 } 110 void setIt( int p ,int k ,int s M ,int x 1 ){ 111 tree[x].insert( newnode(k) ) ; 112 if( s 1 ) return ; 113 if( p s/2 ) setIt( p ,k ,s/2 ,x1 ) ; 114 else setIt( p - s/2 ,k ,s - s/2 ,x1|1 ) ; 115 } 116 void change( int p ,int u ,int v ,int s M ,int x 1 ){ 117 tree[x].change( u ,v ) ; 118 if( s 1 ) return ; 119 if( p s/2 ) change( p ,u ,v ,s/2 ,x1 ) ; 120 else change( p-s/2 ,u ,v ,s-s/2 ,x1|1 ) ; 121 } 122 int Q ; 123 void query( int l ,int r ,int ans ,int s M ,int x 1 ){ 124 if( l 1 r s ){ 125 Q tree[x].rank(ans) ; 126 return ; 127 } 128 if( l s/2 ) query( l ,r ,ans ,s/2 ,x1 ) ; 129 if( r s/2 ) query( l-s/2 ,r-s/2 ,ans ,s-s/2 ,x1|1 ) ; 130 } 131 bool judge( int l ,int r ,int ans ,int kth ){ 132 Q 0 ; 133 query( l ,r ,ans ) ; 134 if( Q kth - 1 ) return 1; 135 return 0 ; 136 } 137 void init(){ 138 cur pool ; 139 } 140 void build( int x 1 ,int s M ){ 141 tree[x].init() ; 142 if( s 1 ) return ; 143 build( x1 ,s/2 ) ; 144 build( x1|1 ,s-s/2 ) ; 145 } 146 int main(){ 147 int n ,m ,x ,s ,t ,u ; 148 int T ; 149 scanf( %d ,T ) ; 150 while( T -- ){ 151 scanf(%d %d ,n ,m ) ; 152 M n ; 153 init() ; 154 int minn 0 ,maxn 0 ; 155 build(); 156 for( int i 1 ;i n ;i ){ 157 scanf( %d ,x ) ; 158 num[i] x ; 159 setIt( i ,x ) ; 160 minn min ( minn ,x ) ; 161 maxn max ( maxn ,x ) ; 162 } 163 char o[2]; 164 while( m -- ){ 165 scanf( %s ,o ) ; 166 if( o[0] C ){ 167 scanf( %d %d ,s ,t ) ; 168 minn min( minn ,t ) ; 169 maxn max( maxn ,t ) ; 170 change( s ,num[s] ,t ) ; 171 num[s] t ; 172 continue ; 173 } 174 scanf( %d %d %d ,s ,t ,u ) ; 175 int l minn ,r maxn ; 176 while( l r ){ 177 int mid ( l r 1 ) 1 ; 178 if( judge( s ,t ,mid ,u ) ) l mid ; 179 else r mid - 1 ; 180 } 181 printf( %d\n ,l ) ; 182 } 183 } 184 } CODE  转载于:https://www.cnblogs.com/MyWither/p/3563779.html
http://www.zqtcl.cn/news/174329/

相关文章:

  • 杭州公司网站建设如何选择五屏网站建设
  • 天津商城网站建设平面设计师网站
  • 上海的网站设计公司苏州网站建设渠道
  • 做美食没有广告的网站o2o网站建设
  • 网站程序调试模式怎么做做汽车特卖会的网站
  • 怎么有自己的网站政务公开网站建设方案
  • 济南装饰行业网站建设成都地区网站开发成本
  • 宁波产品网站设计模板网站建设需要通过哪些审批
  • 了解网站建设管理网站开发的可行性研究报告
  • 淄博网站设计策划方案公司中文域名.网站
  • 综合网站系统电脑怎么做软件开发
  • 网站虚拟主持人制作国内网站建设排名
  • 上海房地产网站建设报价wordpress.备份
  • 网站建设运营维护合同专用车网站建设价格
  • 建设部咨询资质网站平台类网站建设公司
  • wap 网站 源码网站建立
  • 辽阳专业建设网站公司山东省工程建设招标信息网站
  • 下载专门做初中数学题的网站佛山网站制作在线
  • 永康物流网站蒙牛企业网站建设规划书
  • 网站开发发和后台开发有什么区别马鞍山网站建设价格
  • 广州建设银行预约公积金网站怎么下载ppt免费模板
  • 网站策划的基本过程网站设置在哪
  • 内蒙古住房和城乡建设网站网站建设需要购买什么
  • 网站做调查问卷给钱的兼职南通营销网站制作
  • 开个微网站需要什么自己制作网页的步骤
  • 有专业做线切割配件的网站吗中国婚恋网站排名
  • 做ppt网站大全中国工程建设信息网站
  • 汉滨区住房和城乡建设局网站淘宝客购物网站的怎么做
  • 一个网站用多个域名分页网站
  • 门户网站举例phpstuy wordpress