题目链接: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. Java 图片转换为字符图 CharMaps (整理)

      /* * Java 图片转换成字符图 CharMaps (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * @(#)CharMaps.java 2014/1/16 * 1.这个一 ...

  2. (二)win7下用Intelij IDEA 远程调试spark standalone 集群

    关于这个spark的环境搭建了好久,踩了一堆坑,今天 环境: WIN7笔记本  spark 集群(4个虚拟机搭建的) Intelij IDEA15 scala-2.10.4 java-1.7.0 版本 ...

  3. (五)用正则化(Regularization)来解决过拟合

    1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...

  4. yii2.0 事务

    $transaction=\Yii::$app->db->beginTransaction(); $model=Customer::findOne(1); $model->name= ...

  5. 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群

    一.环境搭建 Linux下Vagrant搭建Tomcat7.Java7 二.Nginx的安装配置与测试 *虚拟机下转至root sudo -i 1)下载并解压(目前官网最新版本) 创建安装目录:mkd ...

  6. 构建高性能web站点--读书大纲

    用户输入你的站点网址,等了半天..还没打开,裤衩一下就给关了.好了,流失了一个用户.为什么会有这样的问题呢.怎么解决自己站点“慢”,体验差的问题呢. 在这段等待的时间里,到底发生了什么?事实上这并不简 ...

  7. html asp php java 清除缓存

    HTML页面 <META HTTP-EQUIV="pragma" CONTENT="no-cache"><META HTTP-EQUIV=&q ...

  8. Android服务之Service

    android中服务是运行在后台的东西,级别与activity差不多.既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西.你可以启动一个服务Service来播放音乐,或者记录你 ...

  9. Redis 对String数据类型的操作

    Redis的 Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.使用Strings类型,你可以完全实现目前 Memcached 的功能,并且效率更 ...

  10. 动态定义数组 .xml

    pre{ line-height:1; color:#3c3c3c; background-color:#d2c39b; font-size:16px;}.sysFunc{color:#627cf6; ...