树状数组
WerKeyTom_FTD
我是一只来自中山纪念中学高三的oier,请多多指教
展开
-
[bzoj3787]Gty的文艺妹子序列
题目大意在线兹瓷修改操作与区间求逆序对。 所有元素大小在[1,n]很显然的离线做法我们回忆bzoj3289的做法,可以使用莫队算法,加上线段树进行兹瓷in,out,query。在线做法?我们回忆经典分块做法。 预处理ans[i,j]表示第i块到第j块的答案,sum[i,j]表示前i块元素j的个数,然后只需要再弄个线段树就可以搞了。 现在我们要兹瓷修改,那我们照着原来的思路改一下。 ans[i原创 2016-03-29 18:52:55 · 1439 阅读 · 2 评论 -
[bzoj3744]Gty的妹子序列
题目大意在线兹瓷区间求逆序对个数。双倍经验最简单的做法是预处理ans和sum这个不用说了具体可以看根号算法题库里的经典分块思路。 当然这道题有升级版Gty的文艺妹子序列,那道题多一个修改操作。 反正我直接改了一下那题的代码交了。#include<cstdio>#include<algorithm>#include<cmath>#include<ctime>#define fo(i,a,b原创 2016-03-30 19:24:54 · 975 阅读 · 0 评论 -
Binary
题目大意一些数,可以修改,每次询问全部加x并与y作and后的和。一眼题显然看到位运算就分位做。 在第k位,所有数都模2^k,然后用数据结构维护。 然后只看y有1的位。 分类讨论数的第k位是0/1,x的第k位是0/1,然后用数据结构求出此时最终加上x后第k位是1的个数,就能统计答案。 这个数据结构推荐使用树状数组。#include<cstdio>#include<algorithm>#de原创 2016-08-17 16:26:21 · 618 阅读 · 0 评论 -
[LibreOJ β Round #4]游戏
题目大意一个含数字和X的序列。 两方轮流操作,每次在X里填入一个实数。 当X全部被填完时,根据序列逆序对的奇偶性判胜负。 问谁必胜。做法没有X的时候用数据结构求逆序对即可。 有X的时候,先特判n=1。 然后假设两人随便填,最后一个人填最后一个X时,假设最小数当前是t,显然他在这个位置填t+eps或t-eps可以使逆序对奇偶性不同。 他能直接获胜。 因此此时判断X个数的奇偶性即可。#in原创 2017-09-04 22:30:35 · 426 阅读 · 0 评论 -
[LibreOJ β Round #4]框架
题目描述有一个n×m的矩形框架,但其中有些边被删除了。qmqmqm想知道剩余部分中还有多少完整的正方形。只有当一个正方形的每一条边均被保留下来,这个正方形才是完整的。做法先预处理每个位置往四个方向的最远扩展长度。 枚举一条对角线,正方形的两个相对端点在该对角线上。 一个点作为左上角有一定修改范围,一个点作为右下角也有一定查询范围,可以用树状数组维护。#include<cstdio>#inclu原创 2017-09-04 22:36:50 · 537 阅读 · 0 评论 -
[agc006e]Rotate 3x3
前言结论题。题目大意不想讲。做法不想说。 推荐在网上搜索其他题解或看官方题解。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=100000+10;int tree[maxn],a[maxn][3]原创 2017-11-01 14:53:47 · 917 阅读 · 3 评论 -
[arc068e]Snuke Line
题目大意有n个区间,现在询问你对于1<=i<=m的每个i,有多少个区间至少包含一个i的倍数?做法正难则反,如果一个区间不包含i的倍数,一定是被相邻两个i的倍数夹着或者在最大的i的倍数的右边。 调和级数的时间把点对弄出来,然后不难想到离线+树状数组。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)usi原创 2017-11-14 16:36:33 · 680 阅读 · 0 评论