树状数组
v5zsq
新的一天,新的不会
展开
-
Newcoder 4 A.Contest(逆序对-BIT)
Descriptionnnn支队伍一共参加了三场比赛。一支队伍xxx认为自己比另一支队伍yyy强当且仅当xxx在至少一场比赛中比yyy的排名高。求有多少组(x,y)(x,y)(x,y),使得xxx自己觉得比yyy强,yyy自己也觉得比xxx强。$ (x, y), (y, x)$算一组。Input第一行一个整数nnn,表示队伍数; 接下来nnn行,每行三个整数a[i],b[i],c[i]...原创 2018-11-01 12:14:15 · 400 阅读 · 0 评论 -
HDU 5892 Resident Evil(二维BIT)
Description给出一个n×nn×nn\times n的矩阵,有505050种动物,初始时矩阵每个位置都没有动物,mmm次操作,操作分两种P x1 y1 x2 y2 k a1 b1 ... ak bkP x1 y1 x2 y2 原创 2018-04-05 12:04:27 · 364 阅读 · 0 评论 -
HDU 6200 mustedge mustedge mustedge(树链剖分LCA+并查集+BIT)
Description给出一个nnn个点mmm条边的无向图,无重边无自环两种操作1 u v:1 u v:1\ u\ v:在u,vu,vu,v之间加一条边2 u v:2 u v:2\ u\ v:查询uuu到vvv的路径上割边数量Input第一行输入一整数TTT表示用例组数,每组用例首先输入两个整数n,...原创 2018-02-14 16:19:20 · 298 阅读 · 0 评论 -
HDU 6203 ping ping ping(在线倍增LCA+BIT)
Description给出一棵n+1n+1n+1个节点的树,要求破坏尽可能少的点使得所给mmm对点对均不可互达Input第一行一整数nnn,之后nnn行每行两个整数u,vu,vu,v表示一条树边,然后输入一整数mmm,最后mmm行每行两个整数u,vu,vu,v表示需要使得u,vu,vu,v不可互达(3≤n≤104,1≤p≤5⋅104)(3≤n≤104,1≤p≤5⋅104)(3\le n...原创 2018-02-14 16:59:21 · 438 阅读 · 0 评论 -
CodeForces 396 D.On Sum of Number of Inversions in Permutations(组合数学+BIT)
Description给出一个长度为nn的排列p1,p2,...,pnp_1,p_2,...,p_n,求出所有字典序小于pp的排列的逆序对数之和Input第一行一整数nn表示排列长度,之后输入nn个整数pip_i表示该排列(1≤n≤106)(1\le n\le 10^6)Output输出字典序比pp小的排列的逆序对数之和,结果模109+710^9+7Sample Input22 1Sample Ou原创 2018-01-08 20:10:26 · 494 阅读 · 0 评论 -
GYM 100796 E.Permutation Polygon(BIT)
Description正nn边形上nn个点顺时针编号11~nn,连nn条边,ii和pip_i连边,问在多边形内部交点个数Input第一行一整数nn表示点数,之后输入nn个整数p1,p2,...,pn(3≤n≤105,pi≠i)p_1,p_2,...,p_n(3\le n\le 10^5,p_i\neq i)Output输出在多边形内部交点个数Sample Input5原创 2018-01-16 11:02:37 · 385 阅读 · 0 评论 -
CodeForces 587 E.Duff as a Queen(线性基+线段树+树状数组)
Description给出一个长度为nn的序列aia_i,有两种操作1 l r k1\ l\ r\ k: 表示将al,al+1,...,ara_l,a_{l+1},...,a_r每一个数都异或上kk2 l r2\ l\ r: 查询al,al+1,...,ara_l,a_{l+1},...,a_r这些数选取子集异或可以得到的不同数字个数Input第一行两整数n,qn,q表示序列长原创 2018-01-11 21:59:14 · 1066 阅读 · 0 评论 -
HDU 6133 Army Formations(树状数组)
Description给出一棵nn个节点的二叉树,11为根节点,第ii个点的点权为viv_i,对于一个点,设以其为根的子树有mm个节点,其花费定义为这mm个节点的权值与1,...,m1,...,m的点乘,问每个点的最小花费Input第一行一整数TT表示用例组数,每组用例首先输入一整数nn表示树上节点数,之后输入nn个整数viv_i表示第ii个点的权值,之后n−1n-1行每行两个整数u,vu,v表示一原创 2017-09-26 15:40:32 · 414 阅读 · 0 评论 -
HDU 6102 GCDispower(容斥原理+数论+树状数组)
Description给出一个11~NN的排列PP,MM次查询,每次查询给出一个区间[L,R][L,R],求∑i=LR∑j=i+1R∑k=j+1R[gcd(P[i],P[j])=P[k]]⋅P[k]\sum\limits_{i=L}^R\sum\limits_{j=i+1}^R\sum\limits_{k=j+1}^R[gcd(P[i],P[j])=P[k]]\cdot P[k]Input第一行一整原创 2017-09-09 14:28:42 · 709 阅读 · 0 评论 -
CodeForces 627 B.Factory Repairs(BIT)
Description 一家工厂一天可以产出a件商品,但是设备需要维修,维修前每天只能产出b件商品,维修需要k天,这k天没有产出,修好后就可以恢复正常每天a件,现在给出一些订单的日期和数量以及一些查询,每次查询给出一个维修开始日期p表示第p天开始维修在n天内最多可以接多少单,注意订单只能当天完成 Input 第一行输入五个整数n,k,a,b,q表示总天数,维修需要天数,设备正常时每天的产出,设原创 2017-04-27 10:47:04 · 417 阅读 · 0 评论 -
CodeForces 641 E.Little Artem and Time Machine(BIT+map)
Description 一个初始为空的可重集,给出n种操作: 1 t x:在t时刻插入一个x 2 t x:在t时刻删除一个x 3 t x:查询t时刻x的数量 Input 第一行一整数n表示操作数,之后n行每行一个操作(1<=n<=1e5,1<=t,x<=1e9) Output 对于每次查询,输出查询结果 Sample Input 6 1 1 5 3 5 5 1 2 5 3原创 2017-04-28 13:36:45 · 493 阅读 · 0 评论 -
SPOJ 25179 KAOS - Kaos(逆序对-BIT)
Description 给出n个字符串s[1]~s[n],找合法的(i,j)对满足s[i]的字典序比s[j]小而s[j]的反串的字典序比s[i]的反串的字典序小 Input 第一行一整数n表示串的数量,之后n个串长不超过10的串(2<=n<-=1e5) Output 输出一整数表示合法的(i,j)对数量 Sample Input 4 lova novac aron sunce原创 2017-04-10 09:04:09 · 422 阅读 · 0 评论 -
GYM 101755 G.Underpalindromity(BIT)
Description给出一个长度为nnn的序列,对于这个序列的n−k+1n−k+1n-k+1个长度为kkk的子序列,定义每个子序列的权值为把该子序列变成回文序列的最小代价,每次可以花费一代价把该序列的任一元素加一,问这n−k+1n−k+1n-k+1个子序列的权值和Input第一行两个整数n,kn,kn,k,之后输入nnn个整数a1,...,ana1,...,ana_1,...,a_n...原创 2018-05-01 15:35:11 · 490 阅读 · 0 评论 -
HDU 6318 Swaps and Inversions(逆序对-BIT)
Description给出一个长度为nnn的序列aaa,该序列一个逆序对代价为xxx,交换相邻两元素代价为yyy,问该序列的最小代价Input多组用例,每组用例首先输入三个整数n,x,yn,x,yn,x,y,之后输入nnn个整数aiaia_i(1≤n,x,y≤105,−109≤ai≤109)(1≤n,x,y≤105,−109≤ai≤109)(1\le n,x,y\le 10^5,-...原创 2018-09-04 08:19:12 · 243 阅读 · 0 评论 -
HDU 6406 Taotao Picks Apples(BIT+二分)
Description给出一个长度为nnn的序列aiaia_i,如果aiaia_i是前iii个数中的严格最大值则算一个贡献,有mmm种操作,操作不继承,每次操作将apapa_p改成qqq,操作后查询贡献Input第一行一整数TTT表示用例组数,每组用例首先输入两个整数n,mn,mn,m表示序列长度和操作数,之后输入nnn个整数a1,...,ana1,...,ana_1,...,a_n,...原创 2018-09-11 21:18:18 · 211 阅读 · 0 评论 -
Newcoder 13 F.监视任务(贪心+BIT)
Description链接:https://www.nowcoder.com/acm/contest/13/F来源:牛客网原创 2018-11-01 12:12:26 · 364 阅读 · 0 评论 -
Newcoder 16 A.Laptop(逆序对-BIT)
DescriptionFSTFSTFST是一名可怜的小朋友,他很强,但是经常fstfstfst,所以ratingratingrating一直低迷。但是重点在于,他非常适合ACMACMACM!并在最近的区域赛中获得了不错的成绩。拿到奖金后FSTFSTFST决定买一台新笔记本,但是FSTFSTFST发现,在价格能承受的范围内,笔记本的内存和速度是不可兼得的。可是,有一些笔记本是被另外一些“完虐...原创 2018-10-31 22:10:40 · 354 阅读 · 0 评论 -
Newcoder 38 E. 珂朵莉的数列(逆序对-BIT)
Description珂朵莉给了你一个序列,有n(n+1)2\frac{n(n+1)}{2}2n(n+1)个子区间,求出她们各自的逆序对个数,然后加起来输出Input第一行一个数$n $表示这个序列 aaa 的长度之后一行 nnn 个数,第iii个数表示aia_iai(1≤n≤106)(1\le n\le 10^6)(1≤n≤106)Output输出一行一个数表示答案Sample...原创 2018-10-24 17:29:00 · 482 阅读 · 0 评论 -
HDU 6447 YJJ's Salesman(dp+BIT)
Description给出二维平面上的nnn个不同的点(xi,yi)(x_i,y_i)(xi,yi),现在要从(0,0)(0,0)(0,0)走到(109,109)(10^9,10^9)(109,109),每次只能从(x,y)(x,y)(x,y)走到(x,y+1),(x+1,y),(x+1,y+1)(x,y+1),(x+1,y),(x+1,y+1)(x,y+1),(x+1,y),(x+1,y+...原创 2018-09-30 12:40:46 · 329 阅读 · 0 评论 -
Newcoder 132 E.简单数据结构1(BIT+数论)
Description给一个长为nnn的序列,mmm次操作,每次操作:1.区间[l,r][l,r][l,r]加xxx2.对于区间[l,r][l,r][l,r],查询alal+1al+2... mod pa_l^{a_{l+1}^{a_{l+2}...}}\ mod\ palal+1al+2... mod p,一直到ara_rar请注意每次的模...原创 2018-10-01 17:12:19 · 250 阅读 · 0 评论 -
Newcoder 147 H.Prefix Sum(组合数学+BIT)
Description对于一个(k+1)⋅n(k+1)\cdot n(k+1)⋅n的矩阵,行编号从000~kkk,列编号从111到nnn,每次修改第一行元素,之后通过递推式ai,1=ai−1,1,ai,j=ai,j−1+ai−1,j,j≥2a_{i,1}=a_{i-1,1},a_{i,j}=a_{i,j-1}+a_{i-1,j},j\ge 2ai,1=ai−1,1,ai,j=ai,j...原创 2018-09-25 20:17:13 · 235 阅读 · 0 评论 -
Newcoder 139 J.Different Integers(BIT)
Description给出一个长度为nnn的序列a1,...,ana1,...,ana_1,...,a_n和qqq查询,每次查询(l,r)(l,r)(l,r)表示a1,a2,...,ai,aj,aj+1,...,ana1,a2,...,ai,aj,aj+1,...,ana_1,a_2,...,a_i,a_j,a_{j+1},...,a_n中不同数字的个数Input多组用例,每组用例首先...原创 2018-09-14 17:08:09 · 135 阅读 · 0 评论 -
Newcoder 143 I.vcd(BIT)
Description一个点集SSS是合法的当且仅当对该集合的每个子集TTT,都存在三元组(a,l,r)(a,l,r)(a,l,r),使得h(a,l,r)∩S=Th(a,l,r)\cap S=Th(a,l,r)∩S=T,其中h(a,l,r)={(x,y)∣x≥a,l≤y≤r}h(a,l,r)=\{(x,y)|x\ge a,l\le y\le r\}h(a,l,r)={(x,y)∣x≥a,l≤y≤...原创 2018-09-17 20:44:10 · 287 阅读 · 0 评论 -
Newcoder 143 H.subseq(BIT)
Description给出一个长度为nnn的序列a1,...,ana_1,...,a_na1,...,an,定义序列b1,...,bmb_1,...,b_mb1,...,bm是好的当且仅当以下条件成立:1.1≤bi≤n,1≤i≤m1\le b_i\le n,1\le i\le m1≤bi≤n,1≤i≤m2.bi&lt;bi+1,1≤i&lt;mb_i&lt;...原创 2018-09-17 20:43:47 · 189 阅读 · 0 评论 -
Newcoder 142 G.Maximum Mode(BIT)
Description给出nnn个数a1,...,ana_1,...,a_na1,...,an,要求删除其中mmm个数字使得剩余数字的众数只有一个且其值最大Input第一行一整数TTT表示用例组数,每组用例首先输入两个整数n,mn,mn,m,之后输入nnn个整数a1,...,ana_1,...,a_na1,...,an(1≤T≤105,0≤m&lt;n,1≤ai≤109)(...原创 2018-09-17 20:39:38 · 196 阅读 · 0 评论 -
HDU 6393 Traffic Network in Numazu(树形DP+在线倍增LCA+BIT+并查集)
Description给出一个nnn个点nnn条边的连通无向图,边有边权,qqq次操作,操作分两种0 X Y0 X Y0\ X\ Y:将第XXX条边边权修改为YYY1 X Y1 X Y1\ X\ Y:查询X,YX,YX,Y两点间的最短路Input第一行一整数TTT表示用例组数,每组用例首先输入两个整...原创 2018-09-10 13:24:56 · 267 阅读 · 0 评论 -
GYM 100971 H.Pavel's Party(BIT)
Description 一个人想邀请k个朋友来做客,给第i个朋友打电话他会告诉一个[ai,bi]表示包括这个人自己在内有ai到bi个人去这个人就会去,每次打电话都是从第一个朋友开始按顺序打,叫够k个人就不打电话了,问对1~n中每个k要打多少个电话恰能邀请到k个人 Input 第一行一整数n表示朋友数量,之后n行两个整数ai和bi表示该朋友去做客对人数的要求(1<=n<=2e5,1<=ai<=b原创 2017-03-23 10:27:04 · 605 阅读 · 0 评论 -
GYM 101147 F.Bishops Alliance(dp+BIT)
Description 一个棋盘,上面有一些棋子,第i个棋子有一个p[i]值,现在要选择在同一条对角线上的某些棋子,使得对任意两个棋子i和j,i到j之间所隔格子数不小于pi^2+pj^2+c,其中c是一给定常数,问最多可以选多少个棋子 Input 第一行一整数T表示用例组数,每组用例首先输入三个整数n,m,c分别表示棋盘规格,棋子数量和常数c,之后m行每行三个整数xi,yi,pi表示第i个棋子原创 2017-03-21 20:57:07 · 484 阅读 · 0 评论 -
FZU 2082 过路费(树链剖分+BIT)
Description 有n座城市,由n-1条路相连通,使得任意两座城市之间可达。每条路有过路费,要交过路费才能通过。每条路的过路费经常会更新,现问你,当前情况下,从城市a到城市b最少要花多少过路费。 Input 有多组样例,每组样例第一行输入两个正整数n,m(2 <= n<=50000,1<=m <= 50000),接下来n-1行,每行3个正整数a b c,(1 <= a,b <= n ,原创 2015-12-06 12:54:04 · 526 阅读 · 0 评论 -
HDU 1892 See you~(二维BIT)
Description 一个书架有很多格,每个格子里面有一本书,现在有四种操作: 1.S x1 y2 x2 y2:查询(x1,y1)格子到(x2,y2)格子之间书的总数 2.A x1 y2 n1:往(x1,y1)格子中放进n1本书 3.D x1 y1 n1:从(x1,y1)格子中拿出n1本书(如果不够就全拿走) 4.M x1 y1 x2 y2 n1:从(x1,y1)格子往(x2,y2)格子原创 2016-01-03 19:28:48 · 532 阅读 · 0 评论 -
HDU 2689 Sort it(逆序对-BIT)
Description 给出一个长度为n的序列,输出其逆序对数 Input 多组输入,每组用例第一行为一整数n表示序列长度,第二行n个整数表示该序列,以文件尾结束输入 Output 对于每组用例,输出其逆序对数 Sample Input 3 1 2 3 4 4 3 2 1 Sample Output 0 6 Solution 树状数组求逆序对 Code#inclu原创 2015-10-03 10:34:17 · 714 阅读 · 0 评论 -
HDU 4911 Inversion(逆序对-BIT)
Description 给出一个长度为n的序列,你每次可以反转两个值,在反转不超过k次的情况下问反转后序列最小的逆序对数 Input 多组输入,每组用例第一行为两个整数n和k分别表示序列长度和最大反转次数,第二行n个整数表示这个序列,以文件尾结束输入 Output 对于每组用例,输出反转次数不超过k次后序列的最小逆序对数 Sample Input 3 1 2 2 1 3 0 2原创 2015-08-31 11:29:07 · 842 阅读 · 0 评论 -
HDU 3743 Frosh Week(逆序对-BIT)
Description 给出一个长度为n的序列,求序列逆序对 Input 第一行为序列长度n,之后n行每行一个整数表示该序列 Output 输出逆序对数 Sample Input 3 3 1 2 Sample Output 2 Solution 数据太大,所以要离散化后再用树状数组求逆序对即可 Code#include#include#include#i原创 2015-08-31 11:10:43 · 656 阅读 · 0 评论 -
HDU 1556 Color the ball(BIT)
Description N个气球排成一排,从左到右依次编号为1,2,3….N.每次给定2个整数a b(a Input 每个测试实例第一行为一个整数N,(N Output 每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。 Sample Input 3 1 1 2 2 3 3 3 1 1 1 2 1 3 0 Sample Output 1原创 2015-08-30 12:22:25 · 543 阅读 · 0 评论 -
HDU 1166 敌兵布阵(BIT)
Description 给你一个序列,然后会根据题意选择序列中的一个值增加或减少,或者询问某区间和 Input 第一行一个整数T,表示有T组数据。 每组数据第一行一个正整数N(N接下来每行有一条命令,命令有4种形式: (1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) (2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30);原创 2015-09-06 08:28:24 · 462 阅读 · 0 评论 -
POJ 2352 && HDU 1541 Stars(BIT)
Description 在坐标上有n个星星,如果某个星星坐标为(x, y), 它的左下位置为:(x0,y0),x0Input 第一行为星星数量n,之后n行每行两个整数表示星星的坐标 Output 依次输出level 0到level n-1的值 Sample Input 5 1 1 5 1 7 1 3 3 5 5 Sample Output 1 2 1 1 0原创 2015-08-31 08:39:23 · 541 阅读 · 0 评论 -
POJ 2029 Get Many Persimmon Trees(二维BIT)
Description 给出一个矩形某几个坐标有树,然后给你一个给定的大小的矩形放置到里面,问如何才能让这个矩形里面的树最多 Input 多组用例,每组用例第一行为树的数量n,第二行为矩形的宽w和高h,之后n行每行两个整数表示树的坐标,最后一行两个整数s和t表示小矩形的宽和高,以n=0结束输入 Output 对于每组用例,输出小矩形中树的最大数量 Sample Input 16 1原创 2015-08-31 08:39:08 · 484 阅读 · 0 评论 -
POJ 2481 Cows(BIT)
Description 给你很多线段的头S和尾E,问每一条线段中包含了多少个线段,(S和E相同不计在内) Input 第一行为线段数量n,之后n行每行两个整数s和e表示该线段端点 Output 输出每一条线段包含的线段数量 Sample Input 3 1 2 0 3 3 4 0 Sample Output 1 0 0 Solution 将线段的s和e当做是(s,e)原创 2015-07-21 09:29:43 · 492 阅读 · 0 评论 -
POJ 3067 Japan(BIT)
Description 有两排城市,这两排之间有一些城市之间有连接的道路,给出所有道路,问有多少道路是相交的 Input 第一行为用例组数t,对于每组用例,第一行三个整数n,m,k分别表示两排城市的数量以及之间的道路数量,之后k行每行两个整数x和y表示x城市和y城市有一条道路相连 Output 对于每组用例,输出道路相交的数量 Sample Input 1 3 4 4 1 4原创 2015-07-21 09:34:47 · 515 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers(BIT)
Description 一个数列,每次操作可以是将某区间数字都加上一个相同的整数,也可以是询问一个区间中所有数字的和(这里区间指的是数列中连续的若干个数)对每次询问给出结果 Input 第一行两个整数N和Q表示数列长度和操作次数,第二行为N个整数表示该数列,之后Q行每行表示一次操作,Q a b表示查询区间[a,b]所有数字之和,C a b c表示将区间[a,b]所有数字都加上c Outpu原创 2015-08-30 08:47:43 · 793 阅读 · 0 评论