ACM_树状数组
luke2834
A junior researcher~
展开
-
hdu1556 树状数组 区间修改,点查询
#include #include using namespace std; const int maxn = 100005; int tree[maxn]; int n; inline int lowbit(int x) { return x&(-x); } void update(int i,int x) { while(i<=n) { tree[i] += x; i原创 2015-03-23 18:28:40 · 362 阅读 · 0 评论 -
hdu2689 树状数组 逆序数
#include #include #define maxn 1003 int tree[maxn]; int n; inline int lowbit(int x) { return x&(-x); } void update(int i,int x) { while(i <= n) { tree[i] += x; i += lowbit(i); } } int que原创 2015-03-23 18:38:20 · 402 阅读 · 0 评论 -
hdu5192 BC#34 树状数组维护
问题描述 乐乐又开始搭积木了。 他想在昨天搭完的积木上,重新搭建,使得其中有连续W堆积木具有相同的高度,同时他希望高度最少为H。 乐乐的积木都这了,也就是说不能添加新的积木,只能移动现有的积木。 他可以把一个积木从一堆移动到另一堆或者新的一堆,但是不能移动到两堆之间。比如,一次移动之后,"3 2 3" 可以变成 "2 2 4" 或者 "3 2 2 1",但是不能变成"3 1 1 3". 请你帮他原创 2015-03-24 11:15:33 · 519 阅读 · 0 评论 -
Codeforces 597C Subsequences dp + 树状数组
题意 给你n的一个排列,问你包含k个数的子序列个数有多少。 n <= 10^5,k <= 11 思路 dp 状态dp[i][j] 表示前i个数,包含k个数的子序列个数有多少 f[i][j]表示前i个数,以a[i]结尾的,包含k个数的子序列有多少 dp[i][j] = dp[i-1][j] + f[i][j] 这个转移很容易想到 具体f[i][j]怎么转移,稍微有点麻烦 f[i][j] = sum f原创 2015-12-21 22:10:57 · 667 阅读 · 0 评论