線段樹的運用 線段樹真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,那麼直接乙個數...