hdu-6983 线段树节点个数

hdu-6983
hdu-6983 线段树节点个数

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
map <ll, ll> ma;
ll n, k;
ll f(ll x)//  x是区间长度
{
	if(ma[x]) return ma[x];
	if(x <= k) return ma[x] = 1;
	else return ma[x] = f(x / 2) + f(x - x / 2) + 1;
}
void work()
{
	ma.clear();
	cin >> n >> k;
	cout << f(n) << endl;
}

int main()
{
	int T;cin>>T;while(T--)
	work();
	return 0;
}
上一篇:HDU 2112 - HDU Today (优先队列)


下一篇:HDU 2560 拓展 dfs解决矩阵中的分组问题