CF1990C Mad MAD Sum 题解
好题。考虑操作一次之后序列的性质,不难发现存在单调性。因为定义为出现至少两次的最大值,而从左到右最大值是可以继承的,所以单升不降。
然后,手玩一下发现之后的操作相当于把整个序列向后移动一位,左边使用 \(0\) 自动补齐。特别的,如果一个元素数量不足 \(2\) 个,会被左边满足要求的最大值替代。根据位置求出每个元素被计算的次数累加即可。
#include <bits/stdc++.h>
using namespace std;
long long t,n,a[300000],c[300000];
int main()
{
scanf("%lld",&t);
while(t--)
{
long long sum=0,mx=0;
scanf("%lld",&n);
for(int i=1;i<=n;i++)c[i]=0;
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]),sum+=a[i];
c[a[i]]++;
if(c[a[i]]>=2)mx=max(mx,a[i]);
a[i]=mx;
}
mx=0;
for(int i=1;i<=n;i++)c[i]=0;
for(int i=1;i<=n;i++)
if(a[i]!=0)
{
c[a[i]]++;
if(c[a[i]]>=2)mx=max(mx,a[i]);
if((a[i]==mx)||(a[i]==a[i+1]))sum+=a[i]*(n-i+1);
else sum+=(a[i]+mx*(n-i));
}
printf("%lld\n",sum);
}
return 0;
}
CF1990C Mad MAD Sum 题解的更多相关文章
- Ural 1248 Sequence Sum 题解
目录 Ural 1248 Sequence Sum 题解 题意 题解 程序 Ural 1248 Sequence Sum 题解 题意 给定\(n\)个用科学计数法表示的实数\((10^{-100}\s ...
- LeetCode Continuous Subarray Sum 题解 同余前缀和 Hash表
文章目录 题意 思路 特殊情况k=0 Source Code 1 Source Code 2 题意 给定一个数组和一个整数k,返回是否存在一个长度至少为2的连续子数组的和为k的倍数. 思路 和上一篇博 ...
- Hdoj 1003.Max Sum 题解
Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum ...
- [LeetCode]Combination Sum题解(DFS)
Combination Sum Given a set of candidate numbers (C) (without duplicates) and a target number (T), f ...
- [LeetCode] Three Sum题解
Three Sum: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? ...
- 01Two Sum题解
Tow Sum 原题概述: Given an array of integers, return indices of the two numbers such that they add up to ...
- 【CF1445D】Divide and Sum 题解
题目链接 题意简介 将一个长度为 2n 的数列平均分为两个子数列 p 和 q 后,p 按从小到大排序,q 按从大到小排序. 排序后,记 p 为 \(\{x_i\}\) ,q 为 \(\{y_i\}\) ...
- CF1779C Least Prefix Sum 题解
CF链接:Least Prefix Sum Luogu链接:Least Prefix Sum $ {\scr \color {CornflowerBlue}{\text{Solution}}} $ 先 ...
- BZOJ3155:Preprefix sum——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3155 最朴素的想法是两棵树状数组,一个记录前缀和,一个记录前缀前缀和,但是第二个我们非常不好修改 ...
- HDU4825:Xor Sum——题解
http://acm.hdu.edu.cn/showproblem.php?pid=4825 Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含 ...
随机推荐
- .net WorkFlow 流程会签
WikeFlow官网:www.wikesoft.com WikeFlow学习版演示地址:workflow.wikesoft.com WikeFlow学习版源代码下载:https://gitee.com ...
- CountDownLatch的countDown()方法的底层源码
一.CountDownLatch的构造方法 // 创建倒数闩,设置倒数的总数State的值 CountDownLatch doneSignal = new CountDownLatch(N); 二.c ...
- Python3正则表达式(一)
Python3正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...
- 腾讯出品!这款Markdown神器让你码字效率翻倍,双模式编辑太香了!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 由腾讯开源的CherryMarkdown编辑器,集思维导图式大纲写作与专业分屏模式于一身,支 ...
- 通过adb访问SQLite数据库
根据<第一行代码>第二版进入到数据库的文件夹,但是如果照书本直接cd data/data/包名/databases 的话是会报错的,错误信息如下 cd: /data/data/包名 /da ...
- 【记录】Python3|用百度语音 API 朗读你的小说TXT
百度语音合成官方教程_AI开放平台 百度语音合成官方demo_github.com 简单地写了一个按段落朗读文本的demo:DEMO链接_gitee.com. 有时候会请求不到数据,不知道是网络原因还 ...
- Linux环境使用apt-get安装telnet、curl、ifconfig、vim、ping等工具【转】
当在Linux服务器执行Telnet命令时,如果提示command not found: telnet,说明服务器上并未安装Telnet命令,需要安装此命令.下面介绍在linux服务器如何安装te ...
- HTTP请求使用http、socks代理demo,包含有认证和无认证
package cn.daenx.myadmin.email.utils; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpU ...
- Web前端入门第 63 问:JavaScript 图解 for 循环执行顺序
神奇的 for 循环代码执行顺序并不是按照代码书写顺序执行,这就导致在看很多程序算法的时候,会有那么一点打脑壳. for 语法 for 循环的语法很简单,重点是小括号里面的三个部分,这三部分的执行顺序 ...
- 垃圾qt,毁我青春
一.前言说明 在软件开发的漫漫征途中,我与 Qt 的邂逅本以为是一场美妙的合作,然而,现实却给了我沉重的一击."垃圾 qt,毁我青春",这句看似过激的话语,实则饱含了我在 Qt 开 ...