題面傳送門
對於這道題,正著列舉是很難列舉的,但我們可以反著來。
俗話說得好,正難則反。
考慮最小的乙個數h
ih_i
hi,則所有數都是大於等於它的,所以它的排位應該是在v
iv_i
vi。
考慮第二小的數h
jh_j
hj,則除了h
ih_i
hi沒有其他數小於它,所以我們可以直接找到除了v
iv_i
vi外的第i
ii位,它的答案就是在那裡。
以此類推。
所以我們可以將所有二元組按h
ih_i
hi排序。然後用乙個迴圈查詢與刪除。
注意此處使用鍊錶和使用線性表是一樣的,因為鍊錶不能o(1
)o(1)
o(1)
訪問任意元素,仍舊要迴圈列舉去找。
時間複雜度o(n
2)
o(n^2)
o(n2
)**實現:
#include
#include
using
namespace std;
struct yyyf[
100039];
inline
bool
cmp(yyy x,yyy y)
int n,m,k,a[
10039
],b[
10039
],ans;
intmain()
}}for(i=
1;i<=n;i++
)printf
("%d %d\n"
,a[i]
,b[i]);
}
此題可以達到時間複雜度o(n
log2
n2
)o(nlog^2n^2)
o(nlog
2n2)
,空間複雜度o(n
)o(n)
o(n)
,此處暫不詳細展開。
qzezoj 1585 佇列重構
題面傳送門 對於這道題,正著列舉是很難列舉的,但我們可以反著來。俗話說得好,正難則反。考慮最小的乙個數 h i 則所有數都是大於等於它的,所以它的排位應該是在 v i 考慮第二小的數 h j 則除了 h i 沒有其他數小於它,所以我們可以直接找到除了 v i 外的第 i 位,它的答案就是在那裡。以此...
03 佇列操作
時間限制 100ms 記憶體限制 100kb 描述假設以帶頭節點的迴圈鍊錶表示佇列,並且只設乙個指標指向隊尾元素節點 不設頭指標 節點元素這裡設為整型,編寫佇列的初始化 入隊和出隊演算法。其中入隊元素個數n及其節點資料,和出隊元素個數m都是從鍵盤輸入 預設n m都不小於0 然後輸出出隊元素,出隊不合...
演算法(9)佇列
佇列是一種先進先出 first in first out 的資料結構,重要的元素有 頭,尾,佇列長度。佇列的操作基本有四種,驗空 isempty 驗滿 isfull 出隊 dequeue 入隊 enqueue 實現佇列有兩種方法,陣列和鍊錶。這裡陣列的程式是我自己寫的,鍊錶的則是參考 c prime...