数据结构之线段树/树状数组
Conchpeng
贵在坚持。如有错误欢迎指正。
展开
-
敌兵布阵 HDU - 1166
看了一下午+一上午+一下午的 线段树 。 再看着别人的代码打了一下午。 终于过了, 没有系统的学习,让我有点举步维艰的感觉。 反正就坚持下去把,然后不停的寻找新的机会和方法。第一次做线段树,感觉很吃力,不过慢慢刷下来自然会熟悉题型,知道该怎么做。加油!下面我会尽可能的给出注释,一来如果有人看到这篇文章的话,可以理解我的思维,而来我也可以认认真真的分析好每一个函数,每一句话这么写的原因,也加深自原创 2017-07-06 21:43:57 · 215 阅读 · 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 · 231 阅读 · 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 second using namespace std; typedef long l...原创 2018-07-22 11:50:18 · 169 阅读 · 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 · 280 阅读 · 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 · 426 阅读 · 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 · 460 阅读 · 0 评论 -
E. The Untended Antiquity[二维BIT更新区间] 好题!
E. The Untended Antiquity time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Adieu l'ami. Koyomi is helping原创 2018-03-18 10:58:47 · 232 阅读 · 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 · 238 阅读 · 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 · 179 阅读 · 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 · 229 阅读 · 0 评论 -
湖南省第十二届大学生计算机程序设计竞赛 Parenthesis CSU - 1809
Parenthesis CSU - 1809 题意:给定一个已经匹配的序列S,长为N,q次询问,每次询问交换a,b两个位置的字符,问交换后字符串是否仍然匹配 思路:定义sum[i]=到第i个位置cnt['('] -cnt[')'],显然有i∈[1,n] sum[i]>=0 假设a<b 1.若s[a]==s[b] 仍然匹配 2.若s[a]==')' && ...原创 2018-09-10 18:08:45 · 183 阅读 · 0 评论