
洛谷
Strezia
这里介绍不了我
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P4198 楼房重建 线段树 *
P4198 线段树小 A 的楼房外有一大片施工工地,工地上有 NNN 栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。为了简化问题,我们考虑这些事件发生在一个二维平面上。小 A 在平面上 (0,0)(0,0)(0,0) 点的位置,第 iii 栋楼房可以用一条连接 (i,0)(i,0)(i,0) 和 (i,Hi)(i,H_i)(i,Hi) 的线段表示,其中 HiH_iHi 为第 iii 栋楼房的高度。如果这栋楼房上任何一个高度大于 000 的点与原创 2022-06-18 20:54:17 · 159 阅读 · 0 评论 -
P1801 黑匣子 对顶堆
link思路蛮经典的一道题,然而一直没做过总之就是用大根堆和小根堆来取代平衡树,由于询问的第 kkk 大是单调的,所以维护一个一直有 k−1k-1k−1 个元素的大根堆,对于每个新加的元素,若大根堆未满,则直接加入大根堆,否则判断它和大根堆堆顶大小,取二者中大的一个pop出并加入小根堆,这样保证大根堆元素数量为k−1k-1k−1,并且大根堆堆顶大小不超过小根堆堆顶,于是小根堆堆顶即为第 kkk 大。代码这个输入好迷惑,一开始没看明白,直接存成数组了。priority_queue<int&g原创 2022-02-21 22:58:24 · 209 阅读 · 0 评论 -
P2575 高手过招
Linksg函数非常巧妙的一道题,本来想暴力预处理220∗202^{20}*20220∗20种状态但不会写暴力,看题解可以转化成阶梯Nim,绝了。代码int n;int a[25];int sg[25];void solve() { cin >> n; int ans = 0; for(int i = 1; i <= n; i++) { int m; cin >> m; memset(a,原创 2022-02-13 22:30:45 · 377 阅读 · 0 评论 -
P3265 [JLOI2015]装备购买 —— 线性基
Link实数下线性基#define double long doubledouble a[N][N];struct node { double a[550]; int w; bool operator < (const node &x) const { return w < x.w; }}p[550];int n, m;double b[N][N];bool insert(int m, double c[]) { f原创 2022-02-13 18:25:54 · 255 阅读 · 0 评论 -
P4035 [JSOI2008]球形空间产生器 ——高斯消元
Link一道高斯消元的题目,其实重点还是在如何得出方程组也就是增广矩阵。代码const double EPS=1e-7;inline int gauss(double a[][N], bool l[], double ans[], const int& n) { int res = 0, r = 0; for(int i = 0; i < n; i++) l[i] = false; for(int i = 0; i < n; i++) {原创 2022-02-12 23:15:58 · 223 阅读 · 0 评论 -
P4151 [WC2011]最大XOR和路径线性基
link注意insert的是 res ^ val[v] ^ wvector <ull> B;void insert(ull x) { for(auto b : B) x = min(x, x ^ b); for(auto &b : B) b = min(b, x ^ b); if(x) B.push_back(x);}int head[maxn], cnt;struct Edge { int to原创 2022-02-12 12:59:35 · 173 阅读 · 0 评论 -
P1600 [NOIP2016 提高组] 天天爱跑步 树上差分*
Link一道我觉得非常好的题目,有些地方还没想清楚,需要再回顾一下。const int maxn = 3e5 + 10;const int maxm = 6e5 + 10;const int P = 1e9 + 7; //998244353const int INF = 0x3f3f3f3f;const double eps=1e-7;int n, m;int Log2[maxn], fa[maxn][30], dep[maxn];bool vis[maxn];int head[m原创 2022-02-11 00:57:40 · 350 阅读 · 0 评论 -
P4556 [Vani有约会]雨天的尾巴 线段树合并做法*
Link线段树合并的板子题,等刷过几道再去补树剖做法。注意: 线段树空间开很多倍的同时,不要忘记把root数组也同样开到很多倍思路其实就是树上差分+LCA,但时空复杂度 O(NM)O(NM)O(NM),通过树上倍增将时间复杂度优化到 O((N+M)log(N+M))O((N+M)\log(N+M))O((N+M)log(N+M)),再通过线段树合并将空间复杂度同样降到这一级别。具体来说,对树上每个点建立一棵动态开点的权值线段树,支持修改某个位置,维护区间最大值和最大值所在的位置。代码stru原创 2022-02-07 03:03:12 · 291 阅读 · 0 评论 -
P1383 高级打字机 *
Link主席树思路用 size 数组表示当前子树节点个数,新加入节点时,若 size(lc)==mid−l+1size(lc) == mid - l + 1size(lc)==mid−l+1,则递归右子树,否则递归左子树。相对应的,询问第 i 个位置的字母时,若 i≤size(lc(p))i \leq size(lc(p))i≤size(lc(p)),则递归左子树,否则递归右子树,并将 i 减去左子树的大小。注意撤销操作时,最好直接新建根节点,一开始想当然直接将rt减去撤销的步数,然而如果不清空那原创 2022-02-07 02:06:15 · 737 阅读 · 0 评论 -
P1502 窗口的星星
Linklydp221思路一开始没考虑在边界的情况。。不知道为什么ac了。。。1.矩形边界上的星星不算,可以采用把所有星星向左、下各平移0.5距离(因为坐标都是整数),在此基础上,不妨假设圈住星星的矩形顶点坐标都是整数。2.对扫描线排序的时候,除了以 xxx 为第一关键字升序之外,还需要以 vvv 为第二关键字降序。代码struct Segment { ll up, down, x; ll v; Segment(ll l=0, ll r=0, ll h=0,ll v =原创 2022-02-06 14:47:50 · 695 阅读 · 0 评论 -
P1099 [NOIP2007 提高组] 树网的核——树的直径
Link方法蛮多的一道题,主要是在书上看的,这里不想写了,贴个代码保存一下。代码////#include <bits/stdc++.h>using namespace std;//#define mp make_pair#define pii pair<int,int>#define pb push_back#define ll long long#define LL long long#define ld long double#define endl '原创 2022-02-04 14:13:57 · 408 阅读 · 4 评论 -
P3629巡逻 树的直径*
Link挺有意思的一道题,思路其实蛮清晰也比较容易理解,然而实现的时候写了半天代码const int maxn = 1e6 + 10;const int maxm = 1e6 + 10;struct Edge { int to, dis, next;}edge[maxm];int n, m;int head[maxn], dis[maxn], cnt = 1;bool vis[maxn];void add_edge(int u, int v, int w) { cnt++原创 2022-02-04 13:37:32 · 387 阅读 · 0 评论 -
P2371 [国家集训队]墨墨的等式 ——同余最短路
P2371思路同余最短路,自我感觉做这类题要注意两点。1.虽然n的范围很小,但实际建图的点的数量和边的数量都要开到n∗ain * a_in∗ai即12*5e5。2.和上篇文章的题目初始dis[1] = 1不同,这道题目初始值即为dis[0] = 0,表示a mod a_i = 0 中a的最小值可以取到0。代码////#include <bits/stdc++.h>using namespace std;//#define mp make_pair#define pii原创 2022-02-02 19:55:57 · 350 阅读 · 0 评论 -
P3403 跳楼机 同余最短路
P3403思路同余最短路代码////#include <bits/stdc++.h>using namespace std;//#define mp make_pair#define pii pair<int,int>#define pb push_back#define ll long long#define LL long long#define ld long double#define endl '\n'#define RE0 return 0原创 2022-02-02 19:14:45 · 344 阅读 · 0 评论 -
P1967 [NOIP2013 提高组] 货车运输 —— LCA模板题 + 最大生成树
P1967 [NOIP2013 提高组] 货车运输思路显然只有2*(n-1)条边可能被用到,所以先求最大生成树,然后由于两点间的路径是唯一的,所以进行LCA,并用 w[i][j]w[i][j]w[i][j] 记录从第i个节点到它的 2j2^j2j 祖先间的路径中最短的那条。看起来简单但代码细节还蛮多的,注意更新w数组要在跳跃之前,以及最后不能直接返回min(w[a][0],ans)min(w[a][0],ans)min(w[a][0],ans),还要考虑w[b][0]w[b][0]w[b][0]。/原创 2022-01-22 17:58:57 · 556 阅读 · 2 评论 -
P1516 青蛙的约会 exgcd
Link思路:初始位置x, y, 每次跳跃距离x, y, 圈长l,即解方程(n − m) * t ≡ x − y (mod l),即(n −m)t+kl=x−y,设a = n - m, b = l, c = x - y,即求at + bk= c 的t最小整数解。设g = gcd(a, b), 可求出at + bk= g的t的特解t0由x = (x % (b / d) + b / d) % (b / d);找到最小整数解,即为答案注意如果a小于0,即n-m<0,则要把...原创 2021-11-18 13:45:17 · 266 阅读 · 0 评论 -
P3372 线段树模板1
模板1,实现区间修改和求区间和1xyk 表示[x,y] + k2 x y 表示查询sum[x,y]// Decline is inevitable,// Romance will last forever.#include <bits/stdc++.h>using namespace std;#define mst(a, x) memset(a, x, sizeof(a))#define INF 0x3f3f3f3f#define int long longco...原创 2021-10-04 15:04:01 · 91 阅读 · 0 评论 -
P2801 教主的魔法 —— 分块+sort+暴力
P2801 教主的魔法写分块的时候一定要注意什么时候用l, r 什么时候用bel[x],bel[y],一不注意就容易出错// Decline is inevitable,// Romance will last forever.#include <bits/stdc++.h>using namespace std;#define mst(a, x) memset(a, x, sizeof(a))#define INF 0x3f3f3f3f//#d原创 2021-10-04 13:44:53 · 183 阅读 · 0 评论 -
P3372 分块过线段树模板
分块// Decline is inevitable,// Romance will last forever.//#include <bits/stdc++.h>#include <iostream>#include <cmath>#include <cstring>#include <string>#include <cstdio>#include <algorithm>#include <原创 2021-10-03 17:14:14 · 96 阅读 · 0 评论 -
P3368 树状数组模板 区间修改 单点查询
P3368用树状数组维护一个差分数组,sum(x)即表示数x注意一开始存储数据的方式修改区间[x, y]时只要add(x, d), add(y+1, -d)即可// Decline is inevitable,// Romance will last forever.//#include <bits/stdc++.h>#include <iostream>#include <cmath>#include <cstring>原创 2021-10-02 16:56:53 · 105 阅读 · 0 评论 -
P1908 逆序对 ——树状数组求逆序对模板
P1908求逆序对,注意可能有重复数字,排序的时候要注意,否则会waC[x]表示1-x中已经有的数字数量数组C中存的是正序对,所以每次操作要sum += i - sum(node[i].index),这样才是逆序对时间复杂度O(nlogn)// Decline is inevitable,// Romance will last forever.// P1908//#include <bits/stdc++.h>#include <iostream原创 2021-10-02 13:54:38 · 209 阅读 · 0 评论 -
P1196 [NOI2002] 银河英雄传说 ——带权并查集*
P1196 [NOI2002] 银河英雄传说16-19必须要写26-29注意是fx fy// Decline is inevitable, romance will last forever.#include <bits/stdc++.h>using namespace std;#define mst(a, x) memset(a, x, sizeof(a))#define INF 0x3f3f3f3f#define P 998244353//#define int l原创 2021-09-25 00:05:02 · 121 阅读 · 0 评论