Nowcoder9983B 內卷(雙指標)

2022-06-18 02:00:09 字數 1155 閱讀 2282

#includeusing

namespace

std;

const

int maxn=1e5+100

;int

n,k;

inta[maxn],b[maxn],c[maxn],d[maxn],e[maxn];

setst,sa;

mapmp,ma;

vector

int,pair > >v;

intcnt;

intmain ()

sort(v.begin(),v.end());

int l=0,r=0

;

int ans=1e9;

while (lbreak

; }

//如果這個人本來在區間不存在,就插入

if (!mp[v[r].second.first])

mp[v[r].second.first]++;

//如果這個人的屬性不是a,且他本來不存在除a以外的元素

//就把他從sa裡面刪除

//同時更新ma ma不為0表示他存在除a以外的元素

if (v[r].second.second!=1

)

else

if (v[r].second.second==1

) r++;

}//如果他是最後乙個 ,就把他的資訊從sa和st裡面刪掉

mp[v[l].second.first]--;

if (!mp[v[l].second.first]) sa.erase(v[l].second.first),st.erase(v[l].second.first);

//如果他不是最後乙個,同時這個屬性不為a,則ma裡對應的項--

//如果-完了,

else

if (v[l].second.second!=1

)

l++;

}printf(

"%d\n

",ans);

//a不能超過k個

//就用a最小的k個

//雙指標

//如果區間內剛好包含n個不同的人同時a的元素數小於等於k

}

nowcoder 句子逆序

將乙個英文語句以單詞為單位逆序排放。例如 i am a boy 逆序排放後為 boy a am i 所有單詞之間用乙個空格隔開,語句中除了英文本母外,不再包含其他字元 介面說明 反轉句子 param sentence 原句子 return 反轉後的句子 public string reverse s...

CF998B Cutting 題解 DP 貪心

題目描述 有很多東西是可以被切割的,比如 樹 紙張或者繩子。在這道題目裡面你需要切割乙個整數序列。現在告訴你乙個整數序列,在這個整數序列裡面有一些數,它們可能是奇數,也可能是偶數。給你乙個固定的預算 因為切割是有成本的 你需要盡可能多地將這個整數序列切分成一系列連續子串行,使得每乙個連續子串行中的 ...

nowcoder 雙棧佇列

編寫乙個類,只能用兩個棧結構實現佇列,支援佇列的基本操作 push,pop 給定乙個操作序列ope及它的長度n,其中元素為正數代表push操作,為0代表pop操作,保證操作序列合法且一定含pop操作,請返回pop的結果序列。測試樣例 1,2,3,0,4,0 6 返回 1,2 用兩個棧實現佇列。cla...