
树状数组
constbh
这个作者很懒,什么都没留下…
展开
-
hdu5775(思维题&树状数组)
通过分析可得一个点它最右边的位置就是他现在的位置加上他后面的比他小的数字的个数。一个点最左边的位置就是他开始的位置或者排完序以后的位置min(i,num[i]);用数组数组从后往前可以巧妙的维护一个点后面符合条件的点有多少个,具体看代码。#include#include#includeusing namespace std;const int maxn = 100005;in原创 2017-07-29 20:10:51 · 331 阅读 · 0 评论 -
hdu5877(离散化树状数组&dfs回溯)
好题,今天又学习了一波儿。题意:n个节点的树,节点的点权为ai,要求找出有多少个二元组(u,v)满足1:u是v的祖先且u!=v2:a[u]*a[v]dfs访问到一个节点的时候看他的祖先节点有没有和他相乘小于K的,用树状数组维护他的祖先出现的元素,计算结果。访问到一个节点时,维护树状数组,回溯时删掉。这题数据很大,所以要加离散化。 好题,好题。#include#in原创 2017-08-11 21:15:20 · 371 阅读 · 0 评论 -
codeforces 869E(哈希&二维树状数组)
把每个子矩阵哈希一下,增加操作就是树状数组加,删除就是减,然后判断连通时就是判断两个点的hash值是否相等。#include#include#include#includeusing namespace std;int n,m,q;long long tree[2505][2505];typedef pair P;map,long long>mp;int lowbit(int原创 2017-10-09 16:46:34 · 380 阅读 · 0 评论