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 题解的更多相关文章

  1. Ural 1248 Sequence Sum 题解

    目录 Ural 1248 Sequence Sum 题解 题意 题解 程序 Ural 1248 Sequence Sum 题解 题意 给定\(n\)个用科学计数法表示的实数\((10^{-100}\s ...

  2. LeetCode Continuous Subarray Sum 题解 同余前缀和 Hash表

    文章目录 题意 思路 特殊情况k=0 Source Code 1 Source Code 2 题意 给定一个数组和一个整数k,返回是否存在一个长度至少为2的连续子数组的和为k的倍数. 思路 和上一篇博 ...

  3. 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 ...

  4. [LeetCode]Combination Sum题解(DFS)

    Combination Sum Given a set of candidate numbers (C) (without duplicates) and a target number (T), f ...

  5. [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? ...

  6. 01Two Sum题解

    Tow Sum 原题概述: Given an array of integers, return indices of the two numbers such that they add up to ...

  7. 【CF1445D】Divide and Sum 题解

    题目链接 题意简介 将一个长度为 2n 的数列平均分为两个子数列 p 和 q 后,p 按从小到大排序,q 按从大到小排序. 排序后,记 p 为 \(\{x_i\}\) ,q 为 \(\{y_i\}\) ...

  8. CF1779C Least Prefix Sum 题解

    CF链接:Least Prefix Sum Luogu链接:Least Prefix Sum $ {\scr \color {CornflowerBlue}{\text{Solution}}} $ 先 ...

  9. BZOJ3155:Preprefix sum——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3155 最朴素的想法是两棵树状数组,一个记录前缀和,一个记录前缀前缀和,但是第二个我们非常不好修改 ...

  10. HDU4825:Xor Sum——题解

    http://acm.hdu.edu.cn/showproblem.php?pid=4825 Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含 ...

随机推荐

  1. .net WorkFlow 流程会签

    WikeFlow官网:www.wikesoft.com WikeFlow学习版演示地址:workflow.wikesoft.com WikeFlow学习版源代码下载:https://gitee.com ...

  2. CountDownLatch的countDown()方法的底层源码

    一.CountDownLatch的构造方法 // 创建倒数闩,设置倒数的总数State的值 CountDownLatch doneSignal = new CountDownLatch(N); 二.c ...

  3. Python3正则表达式(一)

    Python3正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...

  4. 腾讯出品!这款Markdown神器让你码字效率翻倍,双模式编辑太香了!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 由腾讯开源的CherryMarkdown编辑器,集思维导图式大纲写作与专业分屏模式于一身,支 ...

  5. 通过adb访问SQLite数据库

    根据<第一行代码>第二版进入到数据库的文件夹,但是如果照书本直接cd data/data/包名/databases 的话是会报错的,错误信息如下 cd: /data/data/包名 /da ...

  6. 【记录】Python3|用百度语音 API 朗读你的小说TXT

    百度语音合成官方教程_AI开放平台 百度语音合成官方demo_github.com 简单地写了一个按段落朗读文本的demo:DEMO链接_gitee.com. 有时候会请求不到数据,不知道是网络原因还 ...

  7. Linux环境使用apt-get安装telnet、curl、ifconfig、vim、ping等工具【转】

      当在Linux服务器执行Telnet命令时,如果提示command not found: telnet,说明服务器上并未安装Telnet命令,需要安装此命令.下面介绍在linux服务器如何安装te ...

  8. HTTP请求使用http、socks代理demo,包含有认证和无认证

    package cn.daenx.myadmin.email.utils; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpU ...

  9. Web前端入门第 63 问:JavaScript 图解 for 循环执行顺序

    神奇的 for 循环代码执行顺序并不是按照代码书写顺序执行,这就导致在看很多程序算法的时候,会有那么一点打脑壳. for 语法 for 循环的语法很简单,重点是小括号里面的三个部分,这三部分的执行顺序 ...

  10. 垃圾qt,毁我青春

    一.前言说明 在软件开发的漫漫征途中,我与 Qt 的邂逅本以为是一场美妙的合作,然而,现实却给了我沉重的一击."垃圾 qt,毁我青春",这句看似过激的话语,实则饱含了我在 Qt 开 ...