日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

营业额统计

發(fā)布時(shí)間:2023/12/9 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 营业额统计 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

傳送門
這個(gè)題...裸題啊,裸的不能再裸了

按天數(shù)插入,每次插入之后,比較和前驅(qū)后繼的差,取 min 統(tǒng)計(jì)入答案即可

注意之前已經(jīng)插入過(guò)的值就不需要插入了.然后這題就 A 了

Code:

#include <iostream> #include <cstdlib> #include <cstdio> #include <ctime> #include <cmath> #include <map> #define Drt pair < Treap * , Treap * > #define siz(rt) ( rt == NULL ? 0 : rt->size )using std::pair ; using std::map ;const int INF = 1061109567 ; map < int , bool > mk ; int n , ans , xx ;struct Treap {Treap * son[2] ;int val , size , rank ;Treap ( int val ) : val ( val ) { son[0] = son[1] = NULL ; size = 1 ; rank = rand () ; }inline void maintain () {this->size = 1 ;if ( this->son[0] != NULL ) this->size += this->son[0]->size ;if ( this->son[1] != NULL ) this->size += this->son[1]->size ;return ;} } * root = NULL ;inline Drt Split ( Treap * rt , int k ) {if ( rt == NULL ) return Drt ( NULL , NULL ) ;Drt t ;if ( k <= siz ( rt->son[0] ) ) {t = Split ( rt->son[0] , k ) ; rt->son[0] = t.second ;rt->maintain () ; t.second = rt ;} else {t = Split ( rt->son[1] , k - siz ( rt->son[0] ) - 1 ) ;rt->son[1] = t.first ; rt->maintain () ; t.first = rt ;}return t ; }inline Treap * merge ( Treap * x , Treap * y ) {if ( x == NULL ) return y ; if ( y == NULL ) return x ;if ( x->rank < y->rank ) {x->son[1] = merge ( x->son[1] , y ) ;x->maintain () ; return x ;} else {y->son[0] = merge ( x , y->son[0] ) ;y->maintain () ; return y ;} }inline int Getrank ( Treap * rt , int key ) {if ( rt == NULL ) return 0 ;if ( key <= rt->val ) return Getrank ( rt->son[0] , key ) ;else return Getrank ( rt->son[1] , key ) + siz ( rt->son[0] ) + 1 ; }inline int Getkth ( Treap * & rt , int key ) {Drt x = Split ( rt , key - 1 ) ;Drt y = Split ( x.second , 1 ) ;Treap * node = y.first ;rt = merge ( x.first , merge ( node , y.second ) ) ;return node == NULL ? 0 : node->val ; }inline void insert ( Treap * & rt , int key ) {int k = Getrank ( rt , key ) ; Drt t = Split ( rt , k ) ;Treap * node = new Treap ( key ) ;rt = merge ( t.first , merge ( node , t.second ) ) ;return ; }int main () {scanf ("%d" , & n ) ; scanf ("%d" , & xx ) ; n -- ;ans = xx ; mk[xx] = true ; insert ( root , xx ) ;while ( n -- ) {scanf ("%d" , & xx ) ;if ( mk[xx] ) continue ; mk[xx] = true ; insert ( root , xx ) ;int a = abs ( Getkth ( root , Getrank ( root , xx ) ) - xx ) ;int b = abs ( Getkth ( root , Getrank ( root , xx + 1 ) + 1 ) - xx ) ;if ( a == 0 ) a = INF ; if ( b == 0 ) b = INF ;ans += std::min ( a , b ) ;}printf ("%d\n" , ans ) ; system ("pause") ; return 0 ; }

轉(zhuǎn)載于:https://www.cnblogs.com/Equinox-Flower/p/10785273.html

總結(jié)

以上是生活随笔為你收集整理的营业额统计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。