摘要:
原题链接 题意:线段树经典问题,多组询问,问区间内,最大连续字段和。 题解:难的地方在于询问时候的处理,就是返回的是一个结构体,然后里面有 \(Lmax\) 即前缀最大连续子段和, \(Rmax\) 后缀最大连续子段和还有 \(datamax\) 即最大连续子段和,还有 \(sum\) 即区间内的和 阅读全文
摘要:
原题链接 题意:就是多组询问,和多组操作,操作只有一种,就是在 \(l\) 到 \(r\) 加上新的地雷,询问是问在 \(l\) 到 \(r\) 一共有多少种地雷。 题解:这题应该是数据结构的一个经典套路,就是记录 \(l\) 和 \(r\) 的位置,在单点 \(l\) 和 \(r\) 上 \(a_ 阅读全文
摘要:
原题链接 题解:二维树状数组,第一次遇见,就是快速的计算出前缀和。 代码: #include <cstdio> #include <iostream> #include <queue> #include <cstring> #include <vector> #include <algorithm> 阅读全文
摘要:
const ll N = 1333; int n; struct BIT { int tag[MAXN], t[MAXN], Tag; void reset() { ++Tag; } void add(int k, int v) { while (k <= n) { if (tag[k] != Ta 阅读全文
摘要:
原题链接 题解:手推一下就知道了是要维护一个平方和的序列,然后就大力码码码。 代码: #include <cstdio> #include <iostream> #include <queue> #include <cstring> #include <vector> #include <algor 阅读全文
摘要:
#include<iostream> #include<cstdio> #include<cmath> #include <cstring> #include <queue> #include <stack> #include <set> #include <map> #include <vecto 阅读全文
摘要:
原题链接 题意:给出 \(n <= 1e5\) 个网格图点位置,然后让求所有点连起来的最小花费,即特殊的最小生成树,两个点之间相连的花费是 \(min(|x_a - x_b|, |y_a - y_b|)\) 题解:好像和之前做过一道dij的cf题类似。首先 \(n^2\) 建边不可取,那就是先按横坐 阅读全文
摘要:
原题链接 题意和思路:挺有意思的一道题,就是两个操作,第一个操作是在 \(l\) 到 \(r\) 的区间上加上首项为 \(k\),公比为 \(d\) 的等差序列。第二个操作是询问第 \(x\) 个数是多少。其实就是区间修改 \(+\) 区间查询,操作一就是在 \(l\) 上加上 \(k\),然后在 阅读全文
摘要:
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 5e5 + 9; ll n, m, root; ll a[N]; struct segmentTree { struct node { 阅读全文
摘要:
原题链接 题意:给一个地图大小和二维平面上两个点,然后第一个人要让这两个点重合,然而第二个人要防止两个点重合,第二个人可以涂胶水,防止两个点重和,如果第一个人让某个点走到了胶水上,则不能移动这个点了。 题解:提供一种做博弈题的思路,就是手动模拟大量情况,然后找规律,可以发现距离过远能过早得布局好,然 阅读全文