Luogu3674小清新人渣的本願

2022-05-08 02:18:10 字數 1050 閱讀 1304

給你乙個序列a,長度為n,有m次操作,每次詢問乙個區間

\(bitset\)的原理是將一大堆值為\(0/1\)的數壓成乙個數。

通過\(i>>x\)等操作,我們可以快速訪問\(i\)陣列右移\(x\)位後的狀態(即只剩右數\(n-x\)個值。

\(bitset\)陣列可以當作乙個數來看待並進行》,<<,&,^等操作(詳見高斯消元總結)。

還有一些\(stl\)函式。

這題顯然只能用莫隊搞啊。

操作三枚枚因數就成,\(o(m\sqrt)\)穩穩的。

操作一二好像會到\(o(n^2)\)?很聳?

發現我們詢問時只要問存在性,即只有\(0/1\)兩種狀態,於是可以\(bitset\)優化一波,\(o(\frac\))強行卡過此題。

// luogu-judger-enable-o2

#include#include#include#include#include#include#include#define ll long long

#define re register

#define il inline

#define fp(i,a,b) for(re int i=a;i<=b;i++)

#define fq(i,a,b) for(re int i=a;i>=b;i--)

using namespace std;

const int n=1e5+10000;

bitsets1,s2;

bool ans[n];

int n,m,blk,num[n],a[n];

struct que

il void add(re int x)

il void del(re int x)

int main()

; }

sort(q+1,q+1+m);

re int l=1,r=0;

fp(i,1,m)

}fp(i,1,m) ans[i]?puts("hana"):puts("bi");

return 0;

}

luogu3674 小清新人渣的本願

目錄本題解法 給定長度為 n 數列 a m 組查詢,問 l,r 內是否有兩個數之和 差 積為 x n,m le 10 5,max le10 5 傳送門我們先來介紹一下 bitset 如果您熟悉bitset請跳至下一章 bitset十分神奇,你可以把它看作乙個支援整體操作的bool陣列。bitset的...

luogu P3674 小清新人渣的本願

題目背景 本題時限3s,空間128mb 我感覺我要掛省選 人渣的本願是乙個有趣的番 可愛的花火喜歡從小和她談 笑 風 生的歐 尼 醬鳴海,歐尼醬特別想當老師,然後劇本安排當了花火的班主任。然而有個叫做皆川茜的奇怪的人搶走了歐尼醬!花火就很失落呀,然後看到乙個叫做麥的人也很失落,原來麥喜歡茜老師。花火...

題解 luogu p3674小清新人渣的本願

題目鏈結 演算法 bitset 莫隊 先把詢問都離線下來,用莫隊判斷每個詢問區間。並維護兩個bitset s 1,s 2 乙個判斷 a i 是否在當前區間內。若 a i 在bitset1中位上的值為true,那 n a i 在bitset2中那一位上也為true。關於操作一,其實就是詢問 是否有兩個...