HDU 5323 Solve this interesting problem

搜索。。。

Solve this interesting problemTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 422Accepted Submission(s): 98

Problem Description

Have you learned something about segment tree? If not, don’t worry, I will explain it for you.Segment Tree is a kind of binary tree, it can be defined as this:- For each node u in Segment Tree, u has two values:.- If, u is a leaf node.- If, u has two children x and y,with,.Here is an example of segment tree to do range query of sum.

Given two integers L and R, Your task is to find the minimum non-negative n satisfy that: A Segment Tree with root node’s valuecontains a node u with.

Input

The input consists of several test cases.Each test case contains two integers L and R, as described above.

Output

For each test, output one line contains one integer. If there is no such n, just output -1.

Sample Input

6 710 1310 11

Sample Output

7-112

Source

#include <bits/stdc++.h>using namespace std;typedef long long ll;#define prt(k) cout<<#k" = "<<k<<endl;const ll inf = 1e18;ll ans;void dfs(ll L, ll R){if (R>=ans) return;if (L < 0) return;if(L==0) {ans = R;return;}if (R – L + 1 > L) return;dfs(2*L – R – 1, R);dfs(2*L – R – 2, R);dfs(L, 2*R – L);dfs(L, 2*R – L + 1);}ll L, R;int main(){while (cin>>L>>R){ans = inf;dfs(L, R);if (ans == inf) ans = -1;cout<<ans<<endl;}}

版权声明:本文为博主原创文章,,未经博主允许不得转载。

别人失去了信心,他却下决心实现自己的目标。

HDU 5323 Solve this interesting problem

相关文章:

你感兴趣的文章:

标签云: