codeforce 768B Code For 1
生活随笔
收集整理的這篇文章主要介紹了
codeforce 768B Code For 1
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:將n分解為n/2, n%2, n/2三部分,再將n/2分解。。得到一個(gè)序列只有0和1,給出[l, r]問l到r有幾個(gè)1 #include <stdio.h>
#define ll __int64
ll query(ll L,ll R,ll l,ll r,ll n){if(l == r) return n;ll mid = (l+r)>>1, ans=0;if(L <= mid-1) ans += query(L, R, l, mid-1, n>>1);if(mid+1 <= R) ans += query(L, R, mid+1 ,r, n>>1);if(mid <= R && mid >= L) ans += n%2;return ans;
}
ll f(ll n){if(n == 1||n == 0) return 1;return 2*f(n>>1)+1;
}
int main()
{ll n, l, r;scanf("%I64d%I64d%I64d", &n, &l, &r);printf("%I64d\n", query(l, r, 1, f(n), n));return 0;
}
題解:可以畫出一棵樹,發(fā)現(xiàn)是左右對(duì)稱,直接DFS會(huì)超時(shí),用到二分思想,分為左右區(qū)間遞歸處理
轉(zhuǎn)載于:https://www.cnblogs.com/Noevon/p/6532965.html
總結(jié)
以上是生活随笔為你收集整理的codeforce 768B Code For 1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Firewalld 允许指定IP访问端口
- 下一篇: AppTheme 属性详解