题意:定义F(i,j)为数组a中从ai到aj的或运算,求使F(i,j)<m的对数。

思路:或运算具有单调性,也就是只增不减,如果某个时刻结果大于等于m了,那么再往后一定也大于等于m。所以可以用两个指针i,j来维护一段区间,同时开一个数组记录二进制每位上的1的个数(类似于前缀和),利用该数组可以得到区间或的值。一旦大于m则i前移。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<set>
#include<cmath>
#include<cstring>
#include<vector>
#define ll long long
#define len 31
using namespace std;
];
];
int n,m;
void add(int val)
{
    ; i<len; ++i)
        <<i))
            num[i]++;
}
void sub(int val)
{
    ; i<len; ++i)
        <<i))
            num[i]--;
}
int convers()
{
    ;
    ; i>=; --i)
        res=res*+(bool)num[i];
    return res;
}
int main()
{
    ;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        memset(num,,sizeof(num));
        ; i<n; ++i)
            scanf("%d",&arr[i]);
        ll ans=;
        ,lst=,res=;
        while(lst<n)
        {
            if(arr[lst]>=m)
            {
                fst=++lst;
                memset(num,,sizeof*(num));
                continue;
            }
            add(arr[lst]);
            ans+=(lst-fst+);
            <n)&&(convers()|arr[lst+])>=m)))
            {
                ])>=m)
                    sub(arr[fst++]);
            }
            lst++;
        }
        printf("Case #%d: %I64d\n",++kase,ans);
    }
    ;
}

HDU 4737 A Bit Fun的更多相关文章

  1. HDU 4737 A Bit Fun 2013成都 网络赛 1010

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4737 题目大意:给定一系列数,F(i,j)表示对从ai到aj连续求或运算,(i<=j)求F(i, ...

  2. hdu 4737

    题目链接 直接暴力,或运算只会越来越大 #include <cstdio> #include <cstring> using namespace std; #define N ...

  3. HDU 4737 A Bit Fun (2013成都网络赛)

    A Bit Fun Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. 2013成都网赛1010 hdu 4737 A Bit Fun

    题意:定义f(i, j) = ai|ai+1|ai+2| ... | aj (| 指或运算),求有多少对f(i,j)<m.1 <= n <= 100000, 1 <= m &l ...

  5. hdu 4737 A Bit Fun 尺取法

    A Bit Fun Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Proble ...

  6. 2013 ACM/ICPC 成都网络赛解题报告

    第三题:HDU 4730 We Love MOE Girls 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4730 水题~~~ #include < ...

  7. 基础数位DP小结

    HDU 3555 Bomb dp[i][0] 表示含 i 位数的方案总和. sp[i][0] 表示对于位数为len 的 num 在区间[ 10^(i-1) , num/(10^(len-i)) ] 内 ...

  8. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

随机推荐

  1. MySQL初级培训

    按照一个MySQL DBA在工作中接触到部分的先后顺序,编排培训目录如下. 字段选取 int , decimal, char , varchar , blob ,timestamp SQL优化 exp ...

  2. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  3. Loadrunner基础:Loadrunner Controller基本概念和使用

    Loadrnner Controller 介绍 当Vuser脚本开发完成以后,可以使用Controller将这个执行脚本的用户从单用户转化为多用户,从而模拟大量用户的操作,形成负载(多用户单循环,多用 ...

  4. WPF:行列显示

    新建显示病人信息控件PatientElement Add-->NewItem-->WPF-->UserControl(WPF),名称:PatientElement.xmal < ...

  5. C线程同步/异步

    #include<windows.h> #include<stdio.h> #include<string.h> //#include <afxmt.h> ...

  6. 3.1 关系数据库标准语言SQL综述

    一.SQL语言的特点 SQL结构查询语言 1.综合统一: 2.高度非过程化:不需要指定存储路径 3.面向集合的操作方式 4.以同一种语法提供两种使用方式:独立语言.嵌入式语言 5.语言简单,易学易用 ...

  7. 用Google Analytics跟踪JavaScript Errors (译)

    通过custom events来实施 // Track basic JavaScript errors window.addEventListener('error', function(e) { _ ...

  8. html5 <input> placeholder 属性

    带有 placeholder 文本的搜索字段: <form action="demo_form.asp" method="get"> <inp ...

  9. SQL Server之字符串函数

    以下所有例子均Studnet表为例:   计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() ...

  10. windows直接安装