ZOJ-3872-Beauty of Array-思维
ZOJ-3872-Beauty of Array
传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3872
参考:https://blog.csdn.net/u013050857/article/details/45285515
题意:
定义Beauty数是一个序列里所有不相同的数的和,求一个序列所有子序列的Beauty和
1 <= N <= 100000
【解题思路】由于数据比较大,常规方法求子序列和肯定是行不通的,我们不妨这样想:
因为要区别不同的数,可以看成序列里的数是一个一个加进去的,每次加入一个数,统计前面序列里第一次出现新加入的这个数的序列的dp(就是找到前面最近的相同数,从这个位子后面开始计算),
注意到每次多的x,一定是在所在序列独一无二的,不然相当于没有加上,考虑完独一无二,再考虑重复的,只用加上前一项的dp即可。
举个例子:
1 2 3 1
定义dp(当前元素前面(包括自己)所有包含自己的子序列的和)
定义sum(当前元素前面所有子序列的和,包括此元素)
//输入 1 2 3 1
//dp 1 5 14 14+3
//sum 1 6 20 37
//a[i] 1 2 3
理解了思路,代码很容易实现,也是比较短,精髓都在for循环里,因为只用了一个for循环,每次新加入一个元素,就可以求出当前所有子序列的Beauty和,所以复杂度为O(n).
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = ;
int a[maxn]; int main(){
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
memset(a,,sizeof(a));
long long dp=,sum=;
for(int i=;i<=n;i++)
{
int x;
scanf("%d",&x);
dp+=(i-a[x])*x;
sum+=dp;
a[x]=i;
}
printf("%lld\n",sum);
}
return ;
}
ZOJ-3872-Beauty of Array-思维的更多相关文章
- DP ZOJ 3872 Beauty of Array
		题目传送门 /* DP:dp 表示当前输入的x前的包含x的子序列的和, 求和方法是找到之前出现x的位置(a[x])的区间内的子序列: sum 表示当前输入x前的所有和: a[x] 表示id: 详细解释 ... 
- ZOJ 3872 Beauty of Array
		/** Author: Oliver ProblemId: ZOJ 3872 Beauty of Array */ /* 需求: 求beauty sum,所谓的beauty要求如下: 1·给你一个集合 ... 
- ZOJ 3872 Beauty of Array【无重复连续子序列的贡献和/规律/DP】
		Edward has an array A with N integers. He defines the beauty of an array as the summation of all dis ... 
- ZOJ 3872 Beauty of Array 连续子序列求和
		Edward has an array A with N integers. He defines the beauty of an array as the summation of all dis ... 
- ZOJ 3872 Beauty of Array DP 15年浙江省赛D题
		也是一道比赛时候没有写出来的题目,队友想到了解法不过最后匆匆忙忙没有 A 掉 What a pity... 题意:定义Beauty数是一个序列里所有不相同的数的和,求一个序列所有字序列的Beauty和 ... 
- ZOJ 3872 Beauty of Array (The 12th Zhejiang Provincial Collegiate Programming Contest )
		对于没有题目积累和clever mind的我来说,想解这道题还是非常困难的,也根本没有想到用dp. from: http://blog.csdn.net/u013050857/article/deta ... 
- Beauty of Array(思维)
		Beauty of Array Time Limit: 2 Seconds Memory Limit: 65536 KB Edward has an array A with N integ ... 
- Zoj 3842 Beauty of Array
		Problem地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5520 根据题目的要求,需要算出所有连续子数组的the be ... 
- ZOJ 3872: Beauty of Array(思维)
		Beauty of Array Time Limit: 2 Seconds Memory Limit: 65536 KB Edward has an array A with N integers. ... 
- zoj  The 12th Zhejiang Provincial Collegiate Programming Contest Beauty of Array
		http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5496 The 12th Zhejiang Provincial ... 
随机推荐
- FormLayout and FormData
			FormLayout通过为小窗口部件创建四边的Form附加值(attachment)来进行工作,并且把这些Form附加值存储在布局数据中.一个附加值让一个小窗口部件指定的一边粘贴(attach)到父C ... 
- python虚拟环境完美部署
			一.前言 预处理 建议仔细看完本文章之后在进行操作,避免失误,本环境可以用于生产环境,有利于生产环境python之间的环境隔离,互相不会产生环境冲突:pyenv和pyenv-virtualenv可以完 ... 
- prometheus-kafka-exporter部署
			chart地址:https://gkarthiks.github.io/helm-charts/charts/prometheus-kafka-exporter/ 1.下载chart $ helm r ... 
- 先定一个小目标:10天自学C语言编程,教你如何改变一生
			C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ... 
- Docker 核心技术
			docker是什么?为什么会出现? 容器虚拟化技术:轻量级的虚拟机(但不是虚拟机) 开发:提交代码 ——> 运维:部署 在这中间,因为环境和配置,出现问题 ——> 把代码/配置/系统/数据 ... 
- Python3 反射
			反射 python面向对象中的反射:通过字符串的形式操作对象相关的属性 hasattr(obj,name) # hasattr(obj, name) # 判断一个对象是否有指定的属性name,返回Tr ... 
- Java实现ZooKeeper的zNode监控
			上一篇文章已经完成了ZooKeeper的基本搭建和使用的介绍,现在开始用代码说话.参考 https://zookeeper.apache.org/doc/current/javaExample.htm ... 
- centos7单机安装kafka,进行生产者消费者测试
			[转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11364852.html 作者:jstarseven 码字挺辛苦的..... 一.k ... 
- .NET中使用WebService,以及和一般处理程序、类库的区别
			首先我们来看一下如何创建Web Service 首先在解决方案中新建项,选择ASP.NETWeb应用程序 然后选择一个空的项目就可以,单击确定 项目建完之后,在项目上右键-->添加-->新 ... 
- 如何利用jenkins插件查看allure报告-----完整篇(解决404和无数据问题)
			背景: python3+appium+pytest+allure写了安卓的自动化脚本,在windows本机pycharm上跑通过后生成了allure报告. 公司jenkins搭建在linux服务器上 ... 
