傳送門
先考慮二進位制下為3倍數的數的共同特點自己手玩去,可以發現這些數奇數二進位制位上的1個數(記為\(a\))和偶數二進位制位上的1個數(記為\(b\))在模3意義下相等(\(a \equiv b (mod 3)\)),所以可以維護所有字首中,\(a\)為0/1/2以及\(b\)為0/1/2的字首個數,用線段樹維護每個區間的這些值.但是合併的時候,我們還需要知道前乙個區間的最後乙個字首的\(a,b\)狀態,所以把這個也維護起來.每次就單點修改,詢問就把某個區間的所有狀態的字首個數摳出來,然後分類討論一下(逃
**裡記錄狀態是\(a-b\)在模3意義下為0/1/2的字首個數,以及最後乙個字首的0/1/2狀態,這樣比較方便(霧)
(因為實在不知道怎麼寫,就看**吧
#include#define ll long long
#define il inline
#define re register
#define db double
#define eps (1e-5)
using namespace std;
const int n=500000+10;
il ll rd()
while(ch>='0'&&ch<='9')
return x*w;
}#define lc (o<<1)
#define rc ((o<<1)|1)
#define mid ((l+r)>>1)
struct node
}s[n<<2],nw;
il node ad(node a,node b)
void bui(int o,int l,int r)
bui(lc,l,mid),bui(rc,mid+1,r);
s[o]=ad(s[lc],s[rc]);
}void modif(int o,int l,int r,int lx)
if(lx<=mid) modif(lc,l,mid,lx);
else modif(rc,mid+1,r,lx);
s[o]=ad(s[lc],s[rc]);
}node quer(int o,int l,int r,int ll,int rr)
int n,m;
ll ans;
int main()
}return 0;
}
Wannafly挑戰賽6 D 鎖
時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 題目描述 106號房間共有n名居民,他們每人有乙個重要度。房間的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複...
Wannafly挑戰賽16 D 打怪(DP)
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 有a種 b種屬性,和c種怪物。對於第k種怪物,給出 i和屬性j的搭配在乙個單位時間內對其造成的傷害h k,i,j。已知一開始使用 i,需要時間x i,使用屬性i,需...
Wannafly挑戰賽20 D挑選隊友
d 挑選隊友 進入討論 77 304 通過輸入包括兩行 第一行包括三個數n,m,k,表示共有n位選手,m個群,需要有k名選手被選擇 第二行包括m個數,第i個數表示第i個群有si個選手 n 100000,m k n 輸出包括一行 第一行輸出方案數 由於輸出可能比較大,你只需要輸出在模998244353...