HDU4455
来源:互联网 发布:同步推mac 编辑:程序博客网 时间:2024/06/15 17:12
Substrings
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2581 Accepted Submission(s): 798
Problem Description
XXX has an array of length n. XXX wants to know that, for a given w, what is the sum of the distinct elements’ number in all substrings of length w. For example, the array is { 1 1 2 3 4 4 5 } When w = 3, there are five substrings of length 3. They are (1,1,2),(1,2,3),(2,3,4),(3,4,4),(4,4,5)
The distinct elements’ number of those five substrings are 2,3,3,2,2.
So the sum of the distinct elements’ number should be 2+3+3+2+2 = 12
The distinct elements’ number of those five substrings are 2,3,3,2,2.
So the sum of the distinct elements’ number should be 2+3+3+2+2 = 12
Input
There are several test cases.
Each test case starts with a positive integer n, the array length. The next line consists of n integers a1,a2…an, representing the elements of the array.
Then there is a line with an integer Q, the number of queries. At last Q lines follow, each contains one integer w, the substring length of query. The input data ends with n = 0 For all cases, 0<w<=n<=106, 0<=Q<=104, 0<= a1,a2…an <=106
Each test case starts with a positive integer n, the array length. The next line consists of n integers a1,a2…an, representing the elements of the array.
Then there is a line with an integer Q, the number of queries. At last Q lines follow, each contains one integer w, the substring length of query. The input data ends with n = 0 For all cases, 0<w<=n<=106, 0<=Q<=104, 0<= a1,a2…an <=106
Output
For each test case, your program should output exactly Q lines, the sum of the distinct number in all substrings of length w for each query.
Sample Input
71 1 2 3 4 4 531230
Sample Output
71012
Source
2012 Asia Hangzhou Regional Contest
Recommend
We have carefully selected several similar problems for you: 5539 5538 5537 5536 5535
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define LL long long#define N 1000000 + 10int n, a[N], pre[N];LL dp[N], cnt[N];int main(){ while(~scanf("%d", &n) && n) { memset(pre, 0, (n + 2) * sizeof(int)); memset(cnt, 0, (n + 2) * sizeof(int)); for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); cnt[i - pre[a[i]]]++; pre[a[i]] = i; } for(int i = n - 1; i >= 1; i--) cnt[i] += cnt[i + 1]; memset(pre, 0, (n + 2) * sizeof(int)); dp[1] = n; LL num = 1; pre[a[n]] = 1; for(int i = 2; i <= n; i++) { dp[i] = dp[i - 1] + cnt[i] - num; if(pre[a[n - i + 1]] == 0) { num++; pre[a[n - i + 1]]++; } } int q, w; scanf("%d", &q); while(q--) { scanf("%d", &w); printf("%I64d\n", dp[w]); } } return 0;}
0 0
- HDU4455
- hdu4455(DP)
- hdu4455 dp
- hdu4455 dp
- hdu4455——dp
- hdu4455 线性DP
- HDU4455 Substrings(DP)
- hdu4455(递推)
- hdu4455之树状数组+DP
- soj 3085: windy's cake V
- IOS tableView自适应高度
- JQuery 简介
- 陈正冲老师讲c语言之内存的申请malloc() 和释放free()
- Linux下的段错误(Segmentation fault)产生的原因及调试方法(经典)
- HDU4455
- java_笔记-9
- JavaScript HTML DOM 事件
- 威佐夫博弈(介绍)
- Node.js实践HTTP安全认证之一~~基本认证
- Python_List对象内置方法详解
- org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role
- LeetCode----Word Pattern
- 大整数取模