POJ 2104 K-th Number 题意:给出一段数列,让你求[L,R]区间内第k大的数字 #include <cstdio> #include <cstring> #include <iostream> #include <vector> #include <algorithm> using ...
分类:
其他好文 时间:
2020-05-26 22:13:05
阅读次数:
76
分析 如果采取暴力的做法,那么乘起来会炸longlong,除非写个高精。 再考虑乘一下逆元呢,显然也不行,模数不一定为质数。 这道题的关键点在于这句话,对于每一个类型1的操作至多会被除一次 这句话的最基本的告诉了我们每次得到的答案一定是一个整数 其次,这句话保证了可以应用线段树解决这个问题 如果除的 ...
分类:
其他好文 时间:
2020-05-26 22:11:42
阅读次数:
59
题目连接 分析: 题意很清楚,首先不要没有头绪,我们想一想如果是区间乘%一个数怎么做?直接线段树,然后再看本题,搞一个数组,如果是操作1,对应的数字就是val,操作2对应的就是1,然后对于操作1,就是求1到i的乘积,对于2,直接求1到val-1和val+1到i的乘积.解决问题. 代码: #inclu ...
分类:
其他好文 时间:
2020-05-26 20:14:04
阅读次数:
63
很多人至今为止学到或者遇到的题目都是“维护数据结构的最新状态”之类的题目,当我们遇上“询问某一历史版本中balabala”,甚至要修改某一历史版本某一数值的题目时,我们便考虑可持久化数据结构。 可持久化数据结构是在基础的数据结构上记录每一次操作的历史版本来做到随时访问的目的。 在这一篇博客,我们要学 ...
分类:
其他好文 时间:
2020-05-26 18:24:23
阅读次数:
52
前言 线段树合并:https://www.luogu.com.cn/blog/styx-ferryman/xian-duan-shu-ge-bing-zong-ru-men-dao-fang-qi 题意 给你一颗$n$个节点的树,每个节点都有权值且唯一,输出$n$行,输出的第$i$行应当给出有多少节 ...
分类:
其他好文 时间:
2020-05-26 00:50:25
阅读次数:
64
分析: 这道题可以看做单点修改区间查询历史最小值的数据结构题 区间修改单点查询历史版本可以使用二维数据结构维护 由于卡空间,这里只能选择KD树 在KD树上区间修改,历史最值只需要统计单点到根节点的路径上记录的历史最值就行了 关键是这道题如何转化? 我们把询问离线,每一个查询$(l,r)$看做坐标轴上 ...
分类:
其他好文 时间:
2020-05-25 22:30:32
阅读次数:
68
LINK:Multiset 主要点一下 二分和树状数组找第k大的做法. 线段树的做法是平凡的 开一个数组实现就能卡过. 考虑如树状数组何找第k大 二分+查询来判定是不优秀的。 考虑树状数组上倍增来做. 考虑从0开始跳 定义跳到的节点为前缀和. 那么不断跳累加权值即可. 第三种做法是二分 (其实我最先 ...
分类:
编程语言 时间:
2020-05-25 22:22:15
阅读次数:
81
题目链接 开颜色种类个二维树状数组,维护前缀和,单点修改、子矩阵查询。 注意读入的顺序,是$x_1\; x_2\; y_1\; y_2$而不是$x_1\; y_1\; x_2\; y_2$。 代码(100分): #include<iostream> #include<cstdio> #include ...
分类:
Web程序 时间:
2020-05-25 09:32:51
阅读次数:
75
维护区间加法 https://www.luogu.com.cn/problem/P3374 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxN=500000; struct Node{ i ...
分类:
其他好文 时间:
2020-05-23 18:04:04
阅读次数:
40
test 0523 [TOC] T1 树上三角形 得分情况 期望:70 100 实际:10 改后: 题意 给定一个大小为 $n$ 的有点权树,每次询问一对点$(u,v)$,问是否能在 $u$ 到 $v$ 的简单路径上取三个点权,以这三个权值为边长构成一个三角形。同时还需支持单点修改。 犯傻原因 莫名 ...
分类:
其他好文 时间:
2020-05-23 16:29:43
阅读次数:
57