zoukankan      html  css  js  c++  java
  • CF1245F Daniel and Spring Cleaning(数位dp)

    这道题求取的本质是二进制不进位加法的队数,因此模型比较常见,因为我们不太会维护有下界的数位dp

    所以往往使用容斥原理变成无下界的dp

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef pair<ll,ll> pll;
    const int N=4e6+10;
    ll f[40][2][2];
    ll L,R;
    ll dfs(int u,int sign,int flag){
        if(u==-1)
            return 1;
        auto &x=f[u][sign][flag];
        if(x!=-1)
            return x;
        int upx=sign?(L>>u&1):1;
        int upy=flag?(R>>u&1):1;
        ll ans=0;
        for(int i=0;i<=upx;i++){
            for(int j=0;j<=upy;j++){
                if(!(i&j)){
                    ans+=dfs(u-1,sign&&(i==upx),flag&&(j==upy));
                }
            }
        }
        return x=ans;
    }
    ll solve(int l,int r){
        if(l<0)
            return 0;
        memset(f,-1,sizeof f);
        L=l,R=r;
        return dfs(log2(R+1)+1,1,1);
    }
    int main(){
        ios::sync_with_stdio(false);
        int t;
        cin>>t;
        while(t--){
            int l,r;
            cin>>l>>r;
            cout<<solve(r,r)-2*solve(l-1,r)+solve(l-1,l-1)<<endl;
        }
    }
    View Code
    没有人不辛苦,只有人不喊疼
  • 相关阅读:
    Spring boot 请求接口404
    Windows下安装Redis
    利用maven的profiles灵活的配置多环境
    各个JSON技术的比较
    常用工具软件
    Java方法 传值方式
    JVM内存模型
    spring-task解决定时问题
    quartz Cron表达式解读
    maven 常用命令
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13904785.html
Copyright © 2011-2022 走看看