【CUGBACM15级BC第16场 A】Revenge of Segment Tree
来源:互联网 发布:淘宝商家怎么交保证金 编辑:程序博客网 时间:2024/05/29 07:56
Revenge of Segment Tree
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1708 Accepted Submission(s): 635
Total Submission(s): 1708 Accepted Submission(s): 635
Problem Description
In computer science, a segment tree is a tree data structure for storing intervals, or segments. It allows querying which of the stored segments contain a given point. It is, in principle, a static structure; that is, its content cannot be modified once the structure is built. A similar data structure is the interval tree.
A segment tree for a set I of n intervals uses O(n log n) storage and can be built in O(n log n) time. Segment trees support searching for all the intervals that contain a query point in O(log n + k), k being the number of retrieved intervals or segments.
---Wikipedia
Today, Segment Tree takes revenge on you. As Segment Tree can answer the sum query of a interval sequence easily, your task is calculating the sum of the sum of all continuous sub-sequences of a given number sequence.
A segment tree for a set I of n intervals uses O(n log n) storage and can be built in O(n log n) time. Segment trees support searching for all the intervals that contain a query point in O(log n + k), k being the number of retrieved intervals or segments.
---Wikipedia
Today, Segment Tree takes revenge on you. As Segment Tree can answer the sum query of a interval sequence easily, your task is calculating the sum of the sum of all continuous sub-sequences of a given number sequence.
Input
The first line contains a single integer T, indicating the number of test cases.
Each test case begins with an integer N, indicating the length of the sequence. Then N integer Ai follows, indicating the sequence.
[Technical Specification]
1. 1 <= T <= 10
2. 1 <= N <= 447 000
3. 0 <= Ai <= 1 000 000 000
Each test case begins with an integer N, indicating the length of the sequence. Then N integer Ai follows, indicating the sequence.
[Technical Specification]
1. 1 <= T <= 10
2. 1 <= N <= 447 000
3. 0 <= Ai <= 1 000 000 000
Output
For each test case, output the answer mod 1 000 000 007.
Sample Input
21231 2 3
Sample Output
220HintFor the second test case, all continuous sub-sequences are [1], [2], [3], [1, 2], [2, 3] and [1, 2, 3]. So the sum of the sum of the sub-sequences is 1 + 2 + 3 + 3 + 5 + 6 = 20.Huge input, faster I/O method is recommended. And as N is rather big, too straightforward algorithm (for example, O(N^2)) will lead Time Limit Exceeded.And one more little helpful hint, be careful about the overflow of int.
解题思路:
给定n个数的数列,求所有连续区间的和。。最简单的一道题,智商捉急啊,没想到。。。。
对于当前第i个数(i>=1),我们只要知道有多少个区间包含a[i]就可以了,答案是 i*(n-i+1), i代表第i个数前面有多少个数,包括它自己,(n-i+1)代表第i个数后面有多少个数,包括它自己,然后相乘,代表前面的标号和后边的标号两两配对。
如图:
#include <bits/stdc++.h>#define _ ios_base::sync_with_stdio(0);cin.tie(0);using namespace std;#define ll long longconst ll mod = 1000000007;ll n;int main(){ _ int t; cin >> t; while (t--) { cin >> n; ll x, ans = 0; for (ll i = 1; i <= n; i++) { cin >> x; ans = (ans + i * (n - i + 1) % mod * x % mod) % mod; } cout << ans << endl; } return 0;}
阅读全文
0 0
- 【CUGBACM15级BC第16场 A】Revenge of Segment Tree
- 【CUGBACM15级BC第10场 A】hdu 5018 Revenge of Fibonacci
- 【CUGBACM15级BC第9场 A】hdu 4993 Revenge of ex-Euclid
- 【CUGBACM15级BC第16场 B】Revenge of LIS II
- 【CUGBACM15级BC第10场 B】hdu 5019 Revenge of GCD
- 【CUGBACM15级BC第9场 B】hdu 4994 Revenge of Nim
- 【CUGBACM15级BC第15场 A】hdu 5083 Love
- 【CUGBACM15级BC第17场 A】hdu 5100 Chessboard
- 【CUGBACM15级BC第23场 A】hdu 5146 Sequence
- 【CUGBACM15级BC第8场 A】hdu 4989 Summary
- 【CUGBACM15级BC第31场 A】hdu 5178 pairs
- 【CUGBACM15级BC第1场 A】hdu 4857 逃生
- 【BestCoder#16A / HDU5086】Revenge of Segment Tree
- 【CUGBACM15级BC第12场 A】【STL】hdu 5058 So easy
- 【CUGBACM15级BC第11场 A】hdu 5054 Alice and Bob
- 【CUGBACM15级BC第13场 A】hdu 5062 Beautiful Palindrome Number
- 【CUGBACM15级BC第14场 A】Harry And Physical Teacher
- 【CUGBACM15级BC第18场 A】hdu 5104 Primes Problem
- java web基础大总结
- 最长上升子数列
- 基于XILINX FPGA的卷积神经网络(三)
- PAT L2-022 重排链表 (deque双向队列)
- 【HDU 1950】 Bridging signals (最长上升子序列nlogn算法)(二分,动态规划)
- 【CUGBACM15级BC第16场 A】Revenge of Segment Tree
- awk详解(1)
- 最简单的python 爬虫
- myeclipse 导入 play项目
- 递归问题学习三之生成指定字符串的全排序
- 【NOIP2017】Day7
- Centos 7安装 pgplot
- 数据结构与算法之动态规划
- Java注解