Acwing136 臨值查詢

2021-10-06 19:42:40 字數 1191 閱讀 3526

有兩種做法,一種是用set,將該值裝入容器,然後用find查詢該值的位置,比較一下下乙個和前乙個的與該值的差值,選差值小的那個,相等選前面那個,注意別越界.

#include

using

namespace std;

const

int max_val =

2e9;

setint,

int>

> a;

intmain()

//it = a.find(make_pair(x, i));

it --;if

(it != a.

begin()

) cout << ans.first <<

" "<< ans.second <<

"\n";}

}

還可以用鍊錶來做

#include

using

namespace std;

typedef pair<

int,

int> pii;

const

int n =

1e5+10;

int n;

pii a[n]

, ans[n]

;int p[n]

, l[n]

, r[n]

;int

main()

sort

(a +

1, a +

1+ n)

;for

(int i =

1;i <= n;

++ i)

a[0]

.first =

1e9, a[n+1]

.first =

-1e9

;for

(int i = n;i >=2;

-- i)

for(

int i =

2;i <= n;

++ i)

cout << ans[i]

.first <<

' '<< ans[i]

.second <<

'\n'

;}

AcWing 13 找出陣列中重複的數字

題目描述 給定乙個長度為 n 的整數陣列nums,陣列中所有的數字都在 0 n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。注意 如果某些數字不在 0 n 1的範圍內,或陣列中不包含重複數字,則返回 1 樣例給定 nums...

AcWing演算法基礎1 3

二分 二分分為整數二分和實數二分,其中整數二分模板有兩個 模板 整數二分模板 第一種模板將區間分為 l mid 和 mid 1,r 1 int bsearch 1 int l,intr 2 9return l 10 第二種模板把區間分為 l mid 1 和 mid r 需要注意的是,這裡算mid時要...

AcWing 日期問題

小明正在整理一批歷史文獻。這些歷史文獻 現了很多日期。小明知道這些日期都在1960年1月1日至2059年12月31日。令小明頭疼的是,這些日期採用的格式非常不統一,有採用年 月 日的,有採用月 日 年的,還有採用日 月 年的。更加麻煩的是,年份也都省略了前兩位,使得文獻上的乙個日期,存在很多可能的日...