HDU-5086-Revenge of Segment Tree
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=5086
这题太不应该了,比赛时没做出来,本来呢,以现在的水平这题是能够做出来的,可就是题目理解错了,按题目的意四的话很好做,直接找规律,
题意
给定一个序列,求这个序列的子序列的和,再求所有子序列总和,这些子序列是连续的。
例如
1 2 4
{1 } { 2 } { 4 } { 1 2 } {2 4} {1 2 4}
1+2+4+1+2+2+4+1+2+4=23
找规律
我们假设n等于5。序列为1、2、3、4、5。然后我们将它们如下排列,每行表示一个序列
1
2
1 2
3
2 3
1 2 3
4
3 4
2 3 4
1 2 3 4
5
4 5
3 4 5
2 3 4 5
1 2 3 4 5
我们从中会发现序列中的a[i](表示序列第i个数),不管在那堆里面,a[i]有i个。总共有几个a[i]*i呢,可以看出有n-i+1个。
所以推出公式为∑a[i]*i*(n-i+1)就是正确的答案了
为什么我们要推公式,是因为我们暴力做的话时间复杂度是O(n^2),根据题目给的数据,肯定会超时。
推出的公式的时间复杂度是O(n),题目给的数据,是不会超时的。
代码
#include<stdio.h>
const int mod=1000000007;
int main(void)
{
int t;
__int64 n,num,sum,i;
scanf("%d",&t);
while(t--)
{
sum=0;
scanf("%I64d",&n);
for(i=1;i<=n;i++)
{
scanf("%I64d",&num);
sum=(sum+(num*i)%mod*(n-i+1)%mod)%mod;
}
printf("%I64d\n",sum);
}
return 0;
}
错误的地方在我理解的是:a[i]数的连续和
如按我的理解
1 2 4
的结果是
{1} {2} {4} {1 2}
答案是10 而不是23 也不是那么好做了。
HDU-5086-Revenge of Segment Tree的更多相关文章
- hdu 5086 Revenge of Segment Tree(BestCoder Round #16)
Revenge of Segment Tree Time Limit: 4000/20 ...
- [ACM] HDU 5086 Revenge of Segment Tree(全部连续区间的和)
Revenge of Segment Tree Problem Description In computer science, a segment tree is a tree data struc ...
- HUD 5086 Revenge of Segment Tree(递推)
http://acm.hdu.edu.cn/showproblem.php?pid=5086 题目大意: 给定一个序列,求这个序列的子序列的和,再求所有子序列总和,这些子序列是连续的.去题目给的第二组 ...
- HDU5086——Revenge of Segment Tree(BestCoder Round #16)
Revenge of Segment Tree Problem DescriptionIn computer science, a segment tree is a tree data struct ...
- hdu5086——Revenge of Segment Tree
Revenge of Segment Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- HDU5086:Revenge of Segment Tree(规律题)
http://acm.hdu.edu.cn/showproblem.php?pid=5086 #include <iostream> #include <stdio.h> #i ...
- BestCoder#16 A-Revenge of Segment Tree
Revenge of Segment Tree Problem Description In computer science, a segment tree is a tree data struc ...
- hdu 5086(递推)
Revenge of Segment Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- HDU 1542/POJ 1151 Atlantis (scaning line + segment tree)
A template of discretization + scaning line + segment tree. It's easy to understand, but a little di ...
- HDU5086Revenge of Segment Tree(数论)
HDU5086Revenge of Segment Tree(数论) pid=5086" target="_blank" style="">题目 ...
随机推荐
- codeforces 665A Buses Between Cities
简单题 #include<cstdio> #include<cstring> #include<cmath> #include<vector> #inc ...
- java中的装饰设计模式,浅谈与继承之间的区别
最初接触装饰设计模式,一直搞不懂这么做的意义是什么,看了网上很多的资料,对于与继承的区别并没有很清楚的分析,直到看到这篇博客:http://www.cnblogs.com/rookieFly-tdii ...
- 前端UI
一个非常好的前端UI,值得研究下 http://semantic-ui.com/
- PL\SQL学习笔记
注释 单行--多行 一.declare一般用于做变量的申明.begin 程序体开始执行 end; 程序体结束exception .. dbms_output.put_line('绝对值'||v_ab ...
- Android的init过程详解(一)
Android的init过程详解(一) Android的init过程(二):初始化语言(init.rc)解析 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几 ...
- 利用fiddler给android模拟器抓包
启动模拟器 setting---wireless&networks----mobile networks----access pointnames -------------------- 然 ...
- 如何创建一个要素数据类 IField,IFieldEdit,IFields,IFieldsEditI,GeometryDef,IGeometryDefEdit接口
如何创建一个要素数据类 创建要素类用到了IFeatureWorkspace.CreateFeatureClass方法,在这个方法中有众多的参数,为了满足这些参数,我们要学习和了解下面的接口. IFie ...
- 汇总博客常见的api接口地址(windows live write)
汇总博客常见的api接口地址(windows live write) 1. cnblogs 日志地址,直接输入 http://www.cnblogs.com/xxxxx/ api接口 http://w ...
- PDF 补丁丁 0.5 正式版发布
经过了两年的测试,新版本的 PDF 补丁丁已经比较稳定了.在农历新年前发布这个 0.5 版,作为正式稳定版吧. 新的 PDF 补丁丁比旧的 0.3 版增加了许多功能: PDF 可视化编辑文档书签,可从 ...
- mongodb 分片群集(sharding cluster)
实际环境架构 分别在3台机器运行一个mongod实例(称为mongod shard11,mongod shard12,mongod shard13)组织replica set1,作为cluster的s ...