#includeusingnamespace
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...