首页 > 其他 > 详细

Xor Sum

时间:2020-05-11 17:03:39      阅读:43      评论:0      收藏:0      [点我收藏+]

传送门:https://abc050.contest.atcoder.jp/tasks/arc066_b

怎么说呢

这题一上来就只会头铁地硬算...

首先打表,可以发现前几项有:1、2、4、5、8、10、13、14、18、21、26、28、33、36、40、41、46、50、57、60、68

可以发现:技术分享图片

因此直接用数组记录前面已有的项目,再开一个 map 用于记忆化搜索,然后递归即可。

这就是莽夫解法了...

然后正解请参见:https://blog.csdn.net/axuhongbo/article/details/79169565?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158918292419724839261409%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=158918292419724839261409&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-2-79169565.nonecase&utm_term=Xor+Sum+dp

我还没看懂...等我想明白了再补上题解...

#include <map>
#include <iostream>
using namespace std;
#define ll long long
const int mod=1e9+7;
map<ll,ll> f;
ll Dp(ll x){
    if(f[x]) return f[x];
    return (f[x]=(Dp(x/2)+Dp((x-1)/2)+Dp((x-2)/2))%mod);
}
int main(){
    ll n;
    cin>>n;
    f[0]=1;
    f[1]=2;
    cout<<Dp(n)<<endl;
    return 0;
}

Xor Sum

原文:https://www.cnblogs.com/Zfio/p/12869723.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!