原題傳送門:p4979 礦洞:坍塌
這是某場膜你賽的題,最後我一百零幾分rank三十幾滾粗
這是我唯一ac的一題
這題比較簡單qaqa操作就assign_val,把區間中的全修改成某個字元
b操作暴力判斷,先判斷區間的字元內是否相同,再判斷左右兩端的字元相同
b操作要注意細節,細節見程式qaq
#pragma gcc optimize("o3")
#include using namespace std;
inline int read()
while(ch>='0'&&ch<='9')
return x*f;
}struct node
bool operator<(const node& o) const
};sets;
#define it set::iterator
it split(int pos)
void assign_val(int l,int r,char v)
char getc(int pos)
bool check(int l,int r)
char str[500005];
int main()
}s.insert(node(n+1-cnt,n,last));
int m=read();
while(m--)
else
char b=getc(r+1),a=getc(l-1);
if(a==b||!check(l,r))
puts("no");
else
puts("yes");}}
return 0;
}
luogu P1816 忠誠 題解
用st表來解決rmq問題。表示同時培訓學的st表,然後我就忘得差不多了,在這裡推薦一篇blog 大佬cym的 自己再 一篇 舉例 給出一陣列a 0 5 則區間 2,5 之間的最值為1。1 離線預處理 運用dp思想,用於求解區間最值,並儲存到乙個二維陣列中。具體解釋 1 離線預處理 st演算法使用dp...
題解 luogu p2078 朋友
並查集 總結 1.求兩次並查集可以用乙個陣列來使用,一次並查集後更新fa陣列即可 2.求兩個值的是否是一樣的祖先時,用find 不用fa陣列判斷,有可能其中某個值的路徑沒被壓縮 3.a,b公司都有可能是男或女 includeusing namespace std intn,m,q,p,a,b,s1,...
中位數題解 luogu P1627
給出1 n的乙個排列,統計該排列有多少個長度為奇數的連續子串行的中位數是b。中位數是指把所有元素從小到大排列後,位於中間的數。輸入格式 第一行為兩個正整數n和b,第二行為1 n的排列。輸出格式 輸出乙個整數,即中位數為b的連續子串行個數。輸入樣例1 7 4 5 7 2 4 3 1 6 輸出樣例1 資...