zoukankan      html  css  js  c++  java
  • CodeForces

    题意:询问区间[l,r]上有多少个有序对(a,b)满足a+b=a xor b

    相加等于异或,言外之意就是两个数每一个二进制位上都不能同时为1,那就让两个数从最高位同时往下走好了,设两个数的f,g分别表示是否撞到上界或者下界,然后dp即可。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int N=3e5+10,inf=0x3f3f3f3f;
     5 ll dp[35][2][2][2][2];
     6 int l,r;
     7 int main() {
     8     int _;
     9     for(scanf("%d",&_); _--;) {
    10         scanf("%d%d",&l,&r);
    11         memset(dp,0,sizeof dp);
    12         dp[32][1][1][1][1]=1;
    13         for(int u=32; u>=1; --u)
    14             for(int f1=0; f1<=1; ++f1)
    15                 for(int g1=0; g1<=1; ++g1)
    16                     for(int f2=0; f2<=1; ++f2)
    17                         for(int g2=0; g2<=1; ++g2)
    18                             for(int i=0; i<=1; ++i)
    19                                 for(int j=0; j<=1; ++j) {
    20                                     if(i&&j)continue;
    21                                     if(f1&&i>(r>>(u-1)&1))continue;
    22                                     if(g1&&i<(l>>(u-1)&1))continue;
    23                                     if(f2&&j>(r>>(u-1)&1))continue;
    24                                     if(g2&&j<(l>>(u-1)&1))continue;
    25                                     int f11=f1&&i==(r>>(u-1)&1);
    26                                     int g11=g1&&i==(l>>(u-1)&1);
    27                                     int f22=f2&&j==(r>>(u-1)&1);
    28                                     int g22=g2&&j==(l>>(u-1)&1);
    29                                     dp[u-1][f11][g11][f22][g22]+=dp[u][f1][g1][f2][g2];
    30                                 }
    31         ll ans=0;
    32         for(int f1=0; f1<=1; ++f1)
    33             for(int g1=0; g1<=1; ++g1)
    34                 for(int f2=0; f2<=1; ++f2)
    35                     for(int g2=0; g2<=1; ++g2)
    36                         ans+=dp[0][f1][g1][f2][g2];
    37         printf("%lld
    ",ans);
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    c#中的命名空间、类
    C#编写“hello,world”
    django1.9中manage.py的操作命令
    JS原生Ajax操作(XMLHttpRequest)
    Jquery百宝箱
    jQuery与Ajax入门
    JSON
    JSTL与EL表达式
    知识点整理
    Servlet与JSP进阶
  • 原文地址:https://www.cnblogs.com/asdfsag/p/12686830.html
Copyright © 2011-2022 走看看