题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5358

一开始一直以为是一道数学题,在找有什么规律化简Log2(S(i,j)),结束了以后才造  ⌊log2(x)⌋ 即表示x的二进制的最高位。

总结了以下几点:

1、直接暴力肯定会T,status上基本上都是T

2、⌊log2(S(i,j))⌋ +1,表示S(i,j)用二进制表示的位数

3、S(i,j)可以由S(j) - S(i) 表示

4、用尺取法进行枚举区间在区间[2^(k-1),2^k]内的[ i, [ l, r ]],方法如下

1)固定 i

2)找到大于等于L的第一个 l,和大于等于R的第一个 r+1(即 r 小于 R )

3)排除不符合条件的 l 和 r

3)计算 ( i + j ) 的值

4)改变 i 值重复以上过程

#include<stdio.h>
#include<math.h>
;
int T;
int n;
long long a[MAXN], sum[MAXN];

long long solve(long long L, long long R){

    ;
    int l, r;
    l = ; r = ;
    //定义两个标记,l和r
    ; i <= n; ++i){
        if( l < i )
            l = i;
         < i)
            r = i - ;
        ] < L)
            l++;
         <= n && sum[r+] - sum[i-] < R )
            r++;
        //循环,使得 sum(i,l) >= L  sum(i,r) < R,即上界和下界
        if( l > r)
            continue;
        ] < L || sum[r] - sum[i-] >= R )
            continue;
        ] < L || sum[l] - sum[i-] >= R )
            continue;
        //排除不符合条件的情况
        ans += ( )*i+()*(r+l)/;
        //求(i,l)到(i,r) 的 i+j 和
    }
    return ans;

}
int main(){
    long long ans;
    scanf("%d", &T);
    while(T--){
        ans = ;
        scanf("%d", &n);
        sum[] = ;
        ; i <= n; ++i){
            scanf("%I64d",&a[i]);
            sum[i] = sum[i-] + a[i];
        }
        //数据读取,sum存储从第一个元素到第i个元素的和
        ; k <= ; ++k){
            ans += (,k-),pow(,k));
        }
        ans += solve(,);
        //加上[0,1)区间
        printf("%I64d\n",ans);
    }
}

代码学习了:http://blog.csdn.net/zjck1995/article/details/47321881

ACM毕竟是编程竞赛,数学问题也要结合计算机相关知识进行考虑。

hdoj 5358 First One的更多相关文章

  1. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. HDOJ 1326. Box of Bricks 纯水题

    Box of Bricks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. HDOJ 1004 Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  5. hdoj 1385Minimum Transport Cost

    卧槽....最近刷的cf上有最短路,本来想拿这题复习一下.... 题意就是在输出最短路的情况下,经过每个节点会增加税收,另外要字典序输出,注意a到b和b到a的权值不同 然后就是处理字典序的问题,当松弛 ...

  6. HDOJ(2056)&HDOJ(1086)

    Rectangles    HDOJ(2056) http://acm.hdu.edu.cn/showproblem.php?pid=2056 题目描述:给2条线段,分别构成2个矩形,求2个矩形相交面 ...

  7. 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ

    前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...

  8. 最近点对问题 POJ 3714 Raid && HDOJ 1007 Quoit Design

    题意:有n个点,问其中某一对点的距离最小是多少 分析:分治法解决问题:先按照x坐标排序,求解(left, mid)和(mid+1, right)范围的最小值,然后类似区间合并,分离mid左右的点也求最 ...

  9. BFS(八数码) POJ 1077 || HDOJ 1043 Eight

    题目传送门1 2 题意:从无序到有序移动的方案,即最后成1 2 3 4 5 6 7 8 0 分析:八数码经典问题.POJ是一次,HDOJ是多次.因为康托展开还不会,也写不了什么,HDOJ需要从最后的状 ...

随机推荐

  1. VFL示例

    •[cancelButton(72)]-12-[acceptButton(50)] •取消按钮宽72point,accept按钮宽50point,它们之间间距12point • •[wideView( ...

  2. 使用phantomjs生成网站快照

    http://phantomjs.org/ 昨天(2013/08/12)在代码区看到一个生成站点快照的代码,看了半天才发现,作者仅仅贴出来业务代码,最核心的生成快照图片的代码反而没有给出来. 以前记得 ...

  3. activiti学习资料(架构描述)

    Activiti学习资料 Activiti是业界很流行的java工作流引擎,关于Activiti与JBPM5的关系和如何选择不是本文要讨论的话题,相关内容可以baidu一下.Activiti从架构角度 ...

  4. 关于微信扫描二维码下载apk文件的细节设计

    微信使用的人数越来越多,渐渐的用户形成了一种习惯,扫描二维码的时候,也会打开微信去扫描,但是微信不支持第三方的链接下载,有些厂商已经发现了这一特点,所以在使用二维码下载自家的app时,会做一个提示,引 ...

  5. 更改 input type 的值

    需要实现的效果:一个输入框,当输入框未获得焦点的时候,value 值为 “密码”:当输入框失去焦点的时候,输入内容显示为”*****” <input name=”password” type=” ...

  6. DevExpress控件GridView挂下拉控件无法对上值

    下拉控件使用RepositoryItemLookUpEdit,加入如下事件进行处理. repositoryItemLookUpEdit1.CustomDisplayText += new DevExp ...

  7. 如何用HTML5+PhoneGap写个Path项目

    最近Path这个应用很火爆,网上也出现了不少仿Path菜单的项目.即使在原生APP里边,Path的效果也是非常赞的.我突然想,Web APP是不是也能做出类似Path那样的效果呢?于是就有了OPath ...

  8. XX.frame.origin.x 赋值问题

    can't use that myView.frame.origin.x=25.0; 因为.操作 和 = 一起用的话会调用 set方法.所以上式是行不通的. 可以用下面的方式来实现. that I h ...

  9. 使用java写入excel文件

    要操作excle文件,首先要下载jxl.jar文件,我用的版本是2.6.下载地址:http://www.andykhan.com/jexcelapi/download.html. Java Excel ...

  10. Yii表单验证

    我之前在朋友的公司拿到他们oa的代码,发现是用Yii写的,oa系统比较简单,但是程序员对Yii的运用比较好,我拿来学习一下.如果有需要,我可以私下分享这个程序,因为是人家的功劳,不在网上公布代码了,只 ...