2015 多校第三场 Solve this interesting problem

来源:互联网 发布:淘宝sns是什么 编辑:程序博客网 时间:2024/06/05 08:45

任意给定一个区间,求包含此区间的线段数的最小根节点N,不存在输出-1

注意各种剪枝


# include <stdio.h># include <string.h># include <algorithm>using namespace std;const long long INF=1e18;long long  ans;void  dfs (long long l,long long r){  //  printf("%d %d\n",l,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);}int main (){    long long r,l;    while(scanf("%I64d%I64d",&l,&r)!=EOF)    {        ans=INF;        dfs(l,r);        if(ans==INF) printf("-1\n");        else printf("%I64d\n",ans);    }    return 0;}


0 0
原创粉丝点击