雅禮集訓 小C的線段樹

2021-08-14 17:54:43 字數 1258 閱讀 8831

標籤:dp

輸出0可以騙到5分

出題人說這是最簡單的一題,果然題目順序和難度無關qwq

當n>m時不存在合法的序列,所以答案為0

我們可以將區間[l,r)看成括號匹配

位置i最終的值就是左邊的左括號數量減去左邊的右括號數量

設f[i][l][r]表示i位置左邊有l個左括號,r個右括號的方案數,ans[i][l][r]表示這些方案數的貢獻和。 每次

令ans

[i][

l][r

]+=f

[i][

l][r

]∗(l

−r)k

f轉移的時候只需要討論i+1上是否放左括號或者右括號就可以了

#include

#include

#include

#include

#include

#include

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

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

#define ll long long

#define mem(x,num) memset(x,num,sizeof x)

#define reg(x) for(int i=last[x];i;i=e[i].next)

using namespace std;

inline ll read()

while(ch>='0'&&ch<='9')

return

x*f;

}const int maxn=356,mod=998244353;

int t=0,m,n,k,f[2][maxn][maxn],ans[2][maxn][maxn];

ll g[maxn];

ll qpow(ll x,ll y)return re;}

int main()

rep(i,1,m)g[i]=qpow(i,k);

f[0][0][0]=1;

rep(i,1,n)

val=s=0;

}t^=1;

}cout

0;}

雅禮集訓 小C飲水記

標籤 鍊錶,貪心 暴力做法 貪心,對於每個區間,從大到小排序,顯然,wi大的對答案貢獻越大 時間複雜度o n 3 log n 正解 因為題目輸出實數,所以當交換次數到一定時候,對答案的影響可以忽略不計 這個t大約是30次 對每個wi的貢獻單獨計算 每個wi只對相鄰的t個產生貢獻,所以取前後各t個 計...

2018雅禮集訓1 18 日記 線段樹

真tm線段樹神題。設 l,r 複雜值為tl r首先對於詢問 l r 把問題轉化為 n i 1 nj i ti,j l 1i 1 l 1 j it i,j ni r 1 nj i ti,j 我們先考慮字首的,字尾的反過來再做一遍就是了。我們設f i 為 i j 1t j,i 那麼fi 的字首和就是所求...

雅禮培訓 Problem A 線段樹

維護一段區間,支援求區間最大值,區間且,區間或 n,q 2 10 5 我們用線段樹維護區間最大值 對於and和or運算,and實質就是強行把一些位改為0 or實質就是強行把一些位改為1 那麼由線段樹區間標記的思想,如果某個操作對整個區間的影響是相同的,並且能很快維護出當前節點資訊,我們就可以通過打標...