雙指標 字首和

2021-10-17 14:18:52 字數 1055 閱讀 5060

題目鏈結

有n個程式,每個程式具有記憶體和重要性兩個屬性,讓你在刪除不小於m記憶體的程式下,最少刪除多少重要性。

因為重要性只有兩種1和2, 所以我們根據這兩種將記憶體分為s1、s2,可以看出來當重要性相同時我們要盡可能的選擇比較大的記憶體,所以分別排序。當列舉s1的字首和增大時,s2的字首和一定是減小的,所以我們可以使用雙指標

時間複雜度 o(n

)o(n)

o(n)

#include

using

namespace std;

const

int n =

2e5+10;

int n, m;

pair<

int,

int> p[n]

;long

long s1[n]

, s2[n]

;bool

cmp(

long

long a,

long

long b)

intmain()

sort

(s1 +

1, s1 +

1+ cnt1, cmp)

,sort

(s2 +

1, s2 +

1+ cnt2, cmp)

;for

(int i =

1; i <= cnt1; i++

) s1[i]

+= s1[i -1]

;for

(int i =

1; i <= cnt2; i++

) s2[i]

+= s2[i -1]

;int res =

0x3f3f3f3f

;for

(int i =

0, j = cnt2; i <= cnt1; i++

) cout <<

(res ==

0x3f3f3f3f?-

1: res)

<< endl;

}return0;

}

字首和 差分 位運算 雙指標

可以利用字首和解決用o n 的時間複雜度求出一段序列的某一段區間的和。s i a 1 a 2 a i a l a r s r s l 1 例題輸入乙個長度為n的整數序列。接下來再輸入m個詢問,每個詢問輸入一對l,r。對於每個詢問,輸出原序列中從第l個數到第r個數的和。輸入格式 第一行包含兩個整數n和...

寒假刷雙指標《雙指標》

633.平方數之和 難度中等163 給定乙個非負整數c,你要判斷是否存在兩個整數a和b,使得a2 b2 c。示例 1 輸入 c 5輸出 true解釋 1 1 2 2 5示例 2 輸入 c 3輸出 false示例 3 輸入 c 4輸出 true示例 4 輸入 c 2輸出 true示例 5 輸入 c 1...

快慢指標 雙指標

雙指標 二 左右指標的常用演算法 鏈結 利用快慢指標 最開始slow與fast指標都指向鍊錶第乙個節點,前者解決主要解決鍊錶中的問題,listnode detectcycle listnode head slow head while slow fast return slow 設相遇點距環的起點的...