数据结构之线段树/树状数组
Conchpeng
贵在坚持。如有错误欢迎指正。
展开
-
敌兵布阵 HDU - 1166
看了一下午+一上午+一下午的 线段树 。 再看着别人的代码打了一下午。 终于过了, 没有系统的学习,让我有点举步维艰的感觉。 反正就坚持下去把,然后不停的寻找新的机会和方法。第一次做线段树,感觉很吃力,不过慢慢刷下来自然会熟悉题型,知道该怎么做。加油!下面我会尽可能的给出注释,一来如果有人看到这篇文章的话,可以理解我的思维,而来我也可以认认真真的分析好每一个函数,每一句话这么写的原因,也加深自原创 2017-07-06 21:43:57 · 245 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第五场)I-vcd [树状数组]
I-vcd题意:一个点集S被认为是好的,当且仅当任意一个S的子集T,总存在一个x>=a的矩阵(a任意,矩形的宽度任意)H.使得 H和S的交集==T... 题意真的难懂给n个点,问有多少个满足题意的点集S思路:|S|=1 显然成立|S|=2 只要这两个点y不相同就成立|S|=3 只要三个点的相对位置满足"<"三点的位置,就可以成立|S|=4 对于任意的3...原创 2018-08-03 14:38:18 · 262 阅读 · 0 评论 -
Different Integers【数状数组求区间不同个数】
Different Integers题意:有Q个区间,问每个区间[L,R]有多少个不同的数字思路:BIT#include<bits/stdc++.h>#define PI acos(-1.0)#define pb push_back#define F first#define S secondusing namespace std;typedef long l...原创 2018-07-22 11:50:18 · 201 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第二场)J-farm【二维BIT+随机算法】
J-farm思路:随机算法,二维BIT一开始考虑的做法和题解的随机做法想的一样,但是没想到离散化...我都不知道那几个小时在干嘛。对于每一个权值的化肥,我们随意rand一个值,每次操作的时候这个区间就加上这个值。如果最后对于i,j。倘若cnt[i][j]*mp[a[i][j]]==v[i][j]。 那么在很大程度上可以确定,都是一个种类的化肥,该植物不会死在这种Full-Bac...原创 2018-07-24 23:42:28 · 321 阅读 · 0 评论 -
E2. Median on Segments (General Case Edition)【思维】 好题
E2. Median on Segments (General Case Edition)题意:E1的强化版本。问中位数是m的区间有多少个思路:定义run(m): 中位数<=m的区间个数,则有式①:cnt[小于等于m的数] >= cnt[大于m的数] 。预处理一下,用数状数组维护。想到好简单。留个思考题吧,能不能用数状数组维护中位数>=m的个数,然后类似上面做呢? 结果是不太方便...原创 2018-07-10 23:53:59 · 458 阅读 · 0 评论 -
E. Nastya and King-Shamans[线段树]
E. Nastya and King-Shamans知识点:线段树题意:有一个长为n的数组a[n],有q次询问,每次询问把a[pos]改变为v.如果存在一个下标i,使得a[i]==sum[i-1],那么输出这个i;否则输出-1思路:一开始把所有的a[i]都减去pre[i-1].开另一个数组t[n]记录每次询问后的数组a,每次询问完了区间[i,i](单点更新)+deltav,区间[i+1,n]减去d...原创 2018-06-20 15:45:06 · 490 阅读 · 0 评论 -
E. The Untended Antiquity[二维BIT更新区间] 好题!
E. The Untended Antiquitytime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputAdieu l'ami.Koyomi is helping原创 2018-03-18 10:58:47 · 268 阅读 · 0 评论 -
Just a Hook HDU - 1698
这题属于区间更新的问题,和之前的题目不同的地方是该题是把值改变,而不是加起来,在原来代码的基础上改一改就差不多了/*If I get TLE , it is good.If I get AC,it's NICE !*/#include <stdio.h>#include <iostream>#include <algorithm>#include <string.h>using names原创 2017-07-09 14:48:36 · 266 阅读 · 0 评论 -
A Simple Problem with Integers POJ - 3468
/*If I get TLE , it is good.If I get AC,it's NICE !*/#include <stdio.h>#include <iostream>#include <algorithm>#include <string.h>using namespace std;typedef long long ll;const int MAXN=1e5+10;l原创 2017-07-09 10:46:12 · 209 阅读 · 0 评论 -
I Hate It HDU - 1754
这题涉及单点更新,相对来说比较容易把/*If I get TLE , it is good.If I get AC,it's NICE !*/#include <stdio.h>#include <iostream>#include <algorithm>#include <string.h>const int MAXN=1e6+100;struct t{ int l,r,v;原创 2017-07-09 10:41:35 · 258 阅读 · 0 评论 -
湖南省第十二届大学生计算机程序设计竞赛 Parenthesis CSU - 1809
Parenthesis CSU - 1809 题意:给定一个已经匹配的序列S,长为N,q次询问,每次询问交换a,b两个位置的字符,问交换后字符串是否仍然匹配思路:定义sum[i]=到第i个位置cnt['('] -cnt[')'],显然有i∈[1,n] sum[i]>=0假设a<b1.若s[a]==s[b] 仍然匹配2.若s[a]==')' && ...原创 2018-09-10 18:08:45 · 205 阅读 · 0 评论