牛客第四場 子段乘積

2021-10-02 18:39:13 字數 907 閱讀 3689

線段樹的運用 線段樹真np 真好用,真強

題目鏈結

直接掃一遍維護區間 會出現 遇見 0 處理麻煩的問題

直接用線段樹 這一問題將會不復存在 將普通的區間加 變成 區間 * 就可!

#include #include #include #include #include #include #include #include #define io ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);

using namespace std;

typedef long long ll;

int dis[4][2] = ;

const int maxn = 200000 + 10;

const ll mod = 998244353;

const int inf = 0x3f3f3f3f;

ll a[maxn];

ll c[maxn << 2];

void creat(int node, int l, int r)

int mid = (l + r) >> 1;

creat(node << 1, l, mid);

creat(node << 1 | 1, mid + 1, r);

c[node] = c[node << 1 | 1] * c[node << 1] % mod;

}ll query(int node, int l, int r, int start, int end) // l, r 為查詢區間

if (start >= l && end <= r)

else

}int main()

cout << ans;

return 0;

}

free(牛客多校第四場)

free 本題可以通過常規的最短路演算法改變來得到,通過在最短路演算法中加乙個長度為k的迴圈,判斷k條路免費後的最小權值即可。include include include include include include include include include define inf 0x3f...

牛客多校第四場G Maximum Mode(模擬)

題目大意 給出乙個n個數的序列,我們可以刪除m個數,然後我們要求出現次數最多並且最大的,也就是如果出現次數最多的有多個,那就必須刪除其他的數,避免出現次數最大的有多個,然後我們要求值最大,所以我們還要盡量判斷值大的 題目思路 首先我們先明確我們要取什麼數 1.次數最多並且值最大的 2.且最大值唯一,...

2019牛客多校第四場 D triples I

對於二進位制每一位上的1進行考慮,2 0 3 1 2 1 3 2 2 2 3 1 2 3 3 2 那麼我們可以想到把a轉化為二進位制,然後他 3 1的位數有cnt1個,3 2的位數有cnt2個。我們可以想到每個數字最多由2個數字組成,下面給出證明。那麼 sum a 3,如果sum 0,那麼直接乙個數...