博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 5358 First One 2015多校联合训练赛#6 枚举
阅读量:6758 次
发布时间:2019-06-26

本文共 1926 字,大约阅读时间需要 6 分钟。

First One

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 142    Accepted Submission(s): 37


Problem Description
soda has an integer array 
a1,a2,,an. Let 
S(i,j) be the sum of 
ai,ai+1,,aj. Now soda wants to know the value below:
i=1nj=in(log2S(i,j)+1)×(i+j)
Note: In this problem, you can consider 
log20 as 0.
 

Input
There are multiple test cases. The first line of input contains an integer 
T, indicating the number of test cases. For each test case:
The first line contains an integer 
n 
(1n105), the number of integers in the array.
The next line contains 
n integers 
a1,a2,,an 
(0ai105).
 

Output
For each test case, output the value.
 

Sample Input
 
1 2 1 1
 

Sample Output
 
12
 

Source
 
因为下取整log(sum)的值是非常小的。

能够枚举每一个位置为開始位置,然后枚举每一个log(sum)仅仅需36*n的。

中间j的累加和

推公式就可以。

可是找log值同样的区间,须要用log(sum)*n的复杂度预处理出来,假设每次二分位置会超时。

#include
#include
#include
#include
#include
using namespace std;#define ll long long#define maxn 100007ll num[maxn];ll pos[maxn][36];int main(){ int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); for(int i = 0;i < n; i++){ scanf("%I64d",&num[i]); } num[n] = 0; for(ll i = 0;i < 36; i++){ ll di = 1LL<<(i+1); ll su = num[0]; int p = 0; for(int j = 0;j < n; j++){ if(j) su -= num[j-1]; while(su < di && p < n){ su += num[++p]; } pos[j][i] = p; } } ll ans = 0,res; for(int i = 0;i < n; i++){ ll p = i,q; for(int j = 0;j < 36 ;j ++){ q = pos[i][j]; res = (j+1)*((i+1)*(q-p)+(p+q+1)*(q-p)/2); ans += res; p = q; } } printf("%I64d\n",ans); } return 0;}

转载地址:http://tfweo.baihongyu.com/

你可能感兴趣的文章
C#强化系列文章三:实验分析C#中三种计时器使用异同点
查看>>
Linux 进程间通信(一)
查看>>
通用对象池ObjectPool的一种简易设计和实现方案
查看>>
HTTP压缩仍让加密连接处于风险之中
查看>>
乐视阿里达成百亿元销售框架
查看>>
戴尔通过提升大数据分析能力巩固“全数据”战略 帮助企业在现代数据经济中蓬勃发展...
查看>>
⑤Windows Server 8 RemoteFX体验
查看>>
《企业云桌面实施》-小技巧-03-vSAN6.5中SAS和SSD的使用建议
查看>>
cocos2d-x学习笔记番外篇02:获取系统毫秒时间
查看>>
perl学习笔记(1)
查看>>
连接第三方 腾讯QQ家校.师生群向智慧教学一路狂奔
查看>>
简单三步,搞定“量产”Windows 2008
查看>>
excel查找替换转义问号
查看>>
初始化游戏状态数据
查看>>
delphi 显示窗体系统目录 源码
查看>>
PowerDesigner 业务处理模型( BPM ) 说明
查看>>
Redis内存存储结构分析
查看>>
OCP终于考完了
查看>>
Cocos2D:滚动滚屏黑边问题
查看>>
Android 4.1最终版SDK和ADT Plugin全线发布
查看>>