<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      基礎算法總結

      說點大家知道的

      位運算

      二進制狀態壓縮

      1. 第 k 位: (n>>k)&1
      2. 第 0 ~ k-1 位: n&((1<<k)-1)
      3. 將第 k 位取反: n xor (1<<k)
      4. 將第 k 位設為 1: n|(1<<k)
      5. 將第 k 位設為 0: n&(~(1<<k))

      成對變換

      對于 n 為奇數, n xor 1 = x-1

      對于 n 為偶數, n xor 1 = x+1

      因此我們可以將 (0,1) , (2,3) ··· 為一對。

      lowbit 運算

      lowbit(n) = n&(~n+1) = n&(-n)

      實際意義:

      找出二進制下第一個是1的位置。

      lowbit(0b1011011000) = 1000

      運算優先級

      優先級 運算符 名稱或含義 使用形式 結合方向 說明
      1 [] 數組下標 數組名[常量表達式] 左到右
      () 圓括號 (表達式) 函數名(形參表)
      . 成員選擇(對象) 對象.成員名
      -> 成員選擇(指針) 對象指針->成員名
      2 - 負號運算符 -表達式 右到左 單目運算符
      (類型) 強制類型轉換 (數據類型)表達式
      ++ 自增運算符 ++變量名 變量名++ 單目運算符
      -- 自減運算符 --變量名 變量名-- 單目運算符
      * 取值運算符 *指針變量 單目運算符
      & 取地址運算符 &變量名 單目運算符
      ! 邏輯非運算符 !表達式 單目運算符
      ~ 按位取反運算符 ~表達式 單目運算符
      sizeof 長度運算符 sizeof(表達式)
      3 / 表達式 / 表達式 左到右 雙目運算符
      * 表達式*表達式 雙目運算符
      % 余數(取模) 整型表達式%整型表達式 雙目運算符
      4 + 表達式+表達式 左到右 雙目運算符
      - 表達式-表達式 雙目運算符
      5 << 左移 變量<<表達式 左到右 雙目運算符
      >> 右移 變量>>表達式 雙目運算符
      6 > 大于 表達式>表達式 左到右 雙目運算符
      >= 大于等于 表達式>=表達式 雙目運算符
      < 小于 表達式<表達式 雙目運算符
      <= 小于等于 表達式<=表達式 雙目運算符
      7 == 等于 表達式==表達式 左到右 雙目運算符
      != 不等于 表達式!= 表達式 雙目運算符
      8 & 按位與 表達式&表達式 左到右 雙目運算符
      9 ^ 按位異或 表達式^表達式 左到右 雙目運算符
      10 | 按位或 表達式|表達式 左到右 雙目運算符
      11 && 邏輯與 表達式&&表達式 左到右 雙目運算符
      12 || 邏輯或 表達式||表達式 左到右 雙目運算符
      13 ?: 條件運算符 表達式1? 表達式2: 表達式3 右到左 三目運算符
      14 = 賦值運算符 變量=表達式 右到左
      /= 除后賦值 變量/=表達式
      *= 乘后賦值 變量*=表達式
      %= 取模后賦值 變量%=表達式
      += 加后賦值 變量+=表達式
      -= 減后賦值 變量-=表達式
      <<= 左移后賦值 變量<<=表達式
      >>= 右移后賦值 變量>>=表達式
      &= 按位與后賦值 變量&=表達式
      ^= 按位異或后賦值 變量^=表達式
      |= 按位或后賦值 變量|=表達式
      15 , 逗號運算符 表達式,表達式,… 左到右

      雙指針

      雙指針算法是一種通過設置兩個指針不斷進行單向移動來解決問題的算法。

      例題:

      給定一個長度為n的數組a和一個整數x,現在要請你在數組中尋找一個區間,使得這個區間的元素之和等于x。這樣的區間存在多個,請按字典序大小輸出。

      CODE:

      signed main(){
      	cin>>n;
      	for(int i=1;i<=n;i++) cin>>a[i];
      	cin>>m;
      	while(sum<m&&r<n) sum+=a[++r];
      	if(r==n) return 0;
      	if(sum==m) cout<<l<<' '<<r<<'\n';
      	for(r++;r<=n;r++){
      		sum+=a[r];
      		while(sum-a[l]>=m&&l<=r) sum-=a[l++];
      		if(sum==m) cout<<l<<' '<<r<<'\n';
      	}
      	return 0;
      }
      

      前綴和與差分

      前綴和

      一維:

      對于數組 A[]

      設置前綴和數組為 \(sum_i=\sum_{j=1}^i {A_j}\)

      因此 A[l]+A[l+1]+···+A[r-1]+A[r] = sum[r]-sum[l-1]

      二維:

      對于數組:A[][]

      設置前綴和數組為: \(sum_{i,j}=\sum_{u=1}^i \sum_{v=1}^j A_{u,v}\)

      因此 \(\sum_{u=a}^b \sum_{v=c}^d A_{u,v} = sum_{b,d}-sum_{a,d}-sum_{b,c}+sum_{a,c}\)

      圖是:

      適用場景

      查詢區間多,修改少。

      差分

      對于數組 A[]

      設置差分數組為: d[i] = A[i]-A[i-1] (d[1]=A[1])

      因此: A[i] = d[1]+d[2]+d[3]+···+d[i]

      適用場景

      修改多,查詢少。

      二分靠左

      int ask_l(int k){
      	int r=1,l=n;
      	while(r<l){
      		int mid=(r+l)/2;
      		if(a[mid]>=k) l=mid;
      		else r=mid+1;
      	} 
      	if(a[r]==k) return r-1;
      	return -1;
      }
      

      二分靠右

      int ask_r(int k){
      	int r=1,l=n;
      	while(r<l){
      		int mid=(r+l+1)/2;
      		if(a[mid]>k) l=mid-1;
      		else r=mid;
      	} 
      	if(a[r]==k) return r-1;
      	return -1;
      }
      

      二分查找相關函數 若存在序 a{0,1,3,3,3,5,8};

      1. binary_search(a+1,a+n+1,x)
      查找單調序列中,在指定區域內[1,n]是否存在目標值x。存在返回true,不存在返回false
      例:int k=binary_search(a+1,a+7,3);//k=1
      
      2. lower_bound(a+1,a+n+1,x)
      查找不降序列中,在指定區域內[1,n]大于等于目標值x的第一個元素所在地址。(靠左查找)
      例:int pos=lower_bound(a+1,a+7,3)-a;//元素位置在a+2,因此pos=2。
      
      3. upper_bound(a+1,a+n+1,x)
      查找不降序列中,在指定區域內[1,n]大于目標值x的第一個元素所在地址。(靠右查找)
      例:int pos=lower_bound(a+1,a+7,3)-a;//元素位置在a+5,因此pos=5。
      

      倍增

      主要運用于:

      LCA

      void dfs(int x,int fa){
      	f[x][0]=fa;
      	dep[x]=dep[fa]+1;
      	for(int i=1;i<=20;i++)
      		f[x][i]=f[f[x][i-1]][i-1];
      	for(int i=head[x];i;i=nxt[i]){
      		int y=ver[i];
      		if(y==fa) continue;
      		dfs(y,x);
      	}
      }
      int lca(int a,int b){
      	if(dep[a]<dep[b]) swap(a,b);
      	for(int i=20;i>=0;i--){
      		if(dep[f[a][i]]>=dep[b])
      			a=f[a][i];
      	}
      	if(a==b) return a;
      	for(int i=20;i>=0;i--){
      		if(f[a][i]!=f[b][i])
      			a=f[a][i],b=f[b][i];
      	}
      	return f[a][0];
      }
      

      DP優化

      請轉到 DP動態規劃。

      排序

      最實用的排序做法

      sort: 升序排序

      各大排序算法比較

      排序算法 時間復雜度(最壞) 時間復雜度(平均) 時間復雜度(最好) 空間復雜度 穩定性 核心特點與適用場景
      冒泡排序 O(n2) O(n2) O(n)(優化后) O(1) 穩定 簡單直觀,適合極小規模數據;優化后可提前終止,但效率低,實際應用少。
      選擇排序 O(n2) O(n2) O(n2) O(1) 不穩定 簡單,交換次數少,但無論數據是否有序都需遍歷,適合數據量極小且交換成本高的場景。
      插入排序 O(n2) O(n2) O(n) O(1) 穩定 對部分有序數據效率高(如接近有序的數組),適合小規模數據或作為其他算法的子步驟(如桶排序)。
      歸并排序 O(n log n) O(n log n) O(n log n) O(n) 穩定 效率穩定,適合大規模數據,可并行化,但需額外空間存儲臨時數組。
      快速排序 O(n2) O(n log n) O(n log n) O(log n) 不穩定 實際應用中平均速度最快,適合大規模數據,但最壞情況性能差(可通過隨機基準優化)。
      堆排序 O(n log n) O(n log n) O(n log n) O(1) 不穩定 時間穩定且空間最優,適合大規模數據,但對緩存不友好(隨機訪問多),實際速度略慢于快排。
      計數排序 O(n + k) O(n + k) O(n + k) O(n + k) 穩定 非比較排序,適合數據范圍小的整數(如0~1000),速度極快,但受限于數據范圍。
      桶排序 O(n2) O(n + k) O(n + k) O(n + k) 穩定 依賴數據分布,適合均勻分布的大規模數據(如浮點數),桶內排序影響整體性能。
      基數排序 O(d*(n + k)) O(d*(n + k)) O(d*(n + k)) O(n + k) 穩定 按位排序,適合整數或固定長度字符串,無需比較大小,但位數d影響效率。
      std::sort O(n log n) O(n log n) O(n log n) O(log n) 不穩定 標準庫混合實現(快速排序+堆排序+插入排序),優化成熟,適合絕大多數場景。
      posted @ 2025-10-20 20:25  hjm0703  閱讀(7)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲综合区成人国产| 韩国无码AV片午夜福利| 中文激情一区二区三区四区| 99中文字幕精品国产| 亚洲第一极品精品无码久久| 99RE6在线观看国产精品| 国内精品无码一区二区三区| 成人亚洲精品一区二区三区| 中文字幕人妻日韩精品| 国产熟睡乱子伦视频在线播放 | 国产无遮挡无码视频在线观看| 国产喷水1区2区3区咪咪爱AV| 蜜臀91精品国产高清在线| 久久精品一区二区东京热| 韩国免费a级毛片久久| 伊人欧美在线| 国产拍拍拍无码视频免费 | 欧洲精品色在线观看| 文昌市| 人妻换着玩又刺激又爽| 亚洲视频免费一区二区三区| 日本丰满人妻xxxxxhd| 久久久精品2019中文字幕之3| 久久人妻国产精品| 国内精品久久久久久无码不卡| 日本一本无道码日韩精品| 秋霞av鲁丝片一区二区| 极品少妇被后入内射视| 男女爽爽无遮挡午夜视频| 亚洲av综合色区无码专区| 国产精品鲁鲁鲁| 在线 欧美 中文 亚洲 精品| 亚洲第一区二区三区av| 国产欧美精品一区二区三区| 呦系列视频一区二区三区| 国产一级三级三级在线视| 欧美成人精品在线| 中文字幕av无码不卡| 汤阴县| 少妇高潮激情一区二区三| 国内精品久久人妻无码不卡|