
树状数组
shengweisong
只有行动,才能解除所有的不安
展开
-
nyoj 228 士兵杀敌(五)【树状数组】
分析:这道题因为是更新是和询问分开的,所以我们先更新,然后在将c[i]表示成1~i之间的和,之后减一下就好了。 #include #include #define M 1000005 #define INF 10003 int c[M]; int main(){ int x, y, z, n, s, q; scanf("%d%d%d", &n, &s, &q); memset(c,原创 2014-10-06 20:26:43 · 997 阅读 · 0 评论 -
nyoj 123 士兵杀敌(四)【树状数组】+【插线问点】
树状数组有两种情况:插点问线和插线问点。这道题是插线问点。 因为树状数组最简单的作用是计算1~x的和,所以给出(a, b, c),表示(a,b)区间增加c, 那我们只需要在a点原来的基础上增加c,然后在b点原来的基础上更新-c,这样我们算最终结果的时候在(a, b)之间的就是增加了c,在区间之外的就是没有增加。 代码: #include #include #define M 100000原创 2014-10-06 20:18:59 · 968 阅读 · 0 评论 -
nyoj 322 Sort 【树状数组】
这道题其实就是考试树状数组。 代码: #include #include int c[1005]; int lowbit(int x){ return x&(-x); } int getsum(int x){ int sum = 0; while(x){ sum += c[x]; x -= lowbit(x); } return sum; } void add(int原创 2014-10-06 20:44:00 · 890 阅读 · 0 评论 -
nyoj 117 求逆序数 【树状数组】+【离散化】
这道题的解法真的很好!!! 思路:建立一个结构体包含val和id, val就是输入的数,id表示输入的顺序。然后按照val从小到大排序,如果val相等,那么就按照id排序。 如果没有逆序的话,肯定id是跟i(表示拍好后的顺序)一直一样的,如果有逆序数,那么有的i和id是不一样的。所以,利用树状数组的特性,我们可以简单的算出逆序数的个数。 如果还是不明白的话举个例子。(输入4个数)原创 2014-10-08 17:52:33 · 1153 阅读 · 0 评论 -
hdoj 1556 Color the ball 【树状数组】
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9769 Accepted Submission(s): 5028 Problem Description N个气球排成一排,原创 2014-10-29 00:27:48 · 1015 阅读 · 0 评论 -
蓝桥杯 历届试题 小朋友排队 【树状数组】+【逆序数】
历届试题 小朋友排队 时间限制:1.0s 内存限制:256.0MB 问题描述 n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他原创 2015-03-19 20:58:38 · 1642 阅读 · 0 评论