[dp] zoj 3872 Beauty of Array
2015-04-27 20:47
405 查看
题意:
给n个数,求连续子序列的和。子序列内的相同元素只计算一次。
思路:
举例 2 3 3.
i=1
2
i=2
2 3
3
i=3
2 3 3
3 3
3
i=1的时候和是2,i=2的时候和是2+3+3=8,i=3的时候和是2+3+3+3=11
其实我们只要考虑当前的a[i]被用了多少次就好了。
那么我们用used[j]记录j前一次出现的位置。
那么当前的a[i]用的次数便是i-used[a[i]]次,所增加的和就是(i-used[a[i]])*a[i]。
代码:
给n个数,求连续子序列的和。子序列内的相同元素只计算一次。
思路:
举例 2 3 3.
i=1
2
i=2
2 3
3
i=3
2 3 3
3 3
3
i=1的时候和是2,i=2的时候和是2+3+3=8,i=3的时候和是2+3+3+3=11
其实我们只要考虑当前的a[i]被用了多少次就好了。
那么我们用used[j]记录j前一次出现的位置。
那么当前的a[i]用的次数便是i-used[a[i]]次,所增加的和就是(i-used[a[i]])*a[i]。
代码:
#include"cstdlib" #include"cstdio" #include"cstring" #include"cmath" #include"queue" #include"algorithm" #include"iostream" #include"map" #include"stack" #include"vector" #define ll long long using namespace std; int used[123456]; int main() { int t; cin>>t; while(t--) { int n; ll ans=0,sum=0; scanf("%d",&n); memset(used,0,sizeof(used)); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); sum+=(i-used[x])*x; ans+=sum; used[x]=i; } printf("%lld\n",ans); } return 0; }
相关文章推荐
- ZOJ 3872 Beauty of Array (思维 dp思想)
- ZOJ - 3872 —— Beauty of Array —— dp
- DP ZOJ 3872 Beauty of Array
- ZOJ3872 Beauty of Array---规律 | DP| 数学能力
- ZOJ 3872 Beauty of Array DP 15年浙江省赛D题
- ZOJ 3872 Beauty of Array(DP)
- ZOJ 3872 Beauty of Array( DP思想 )
- ZOJ 3872-Beauty of Array(递推||DP)
- ZOJ14省赛3872——DP——Beauty of Array
- [dp] zoj 3872 Beauty of Array
- ZOJ 3872 Beauty of Array【dp】
- ZOJ - 3872 Beauty of Array (技巧&模拟)好题
- ZOJ 3872 Beauty of Array(数学啊)
- ZOJ 3872 Beauty of Array
- D - Beauty of Array ZOJ - 3872
- ZOJ 3872 — Beauty of Array
- ZOJ 3872 Beauty of Array
- zoj--3872--Beauty of Array(思维)
- ZOJ Problem Set - 3872||Beauty of Array
- ZOJ 3872 Beauty of Array