C. Mad MAD Sum(cf960)

题意:定义MAD为数组中至少出现两次的最大数字,如果没有就是0.给定一个长度为n的数组a,sum=0,下面的过程将依次循环执行,直到a中的所有数字都变成0:

设置sum+=∑ai;设bi=MAD(a1,a2..ai),ai=bi

求过程结束后sum的值。

分析:经历操作一次后的数组是非递减的,以后每次都是将数组向右移动,为了防止数组从左往右,不含0的第一个数字在数组里只出现1此,我们可以再执行一次操作,所以只要执行两次操作就能知道剩下的操作次数。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+10;
bool c[N];
ll n,a[N];
void g(){
	for(ll i=1;i<=n;i++)c[i]=false;
	ll ma=0;
	for(ll i=1;i<=n;i++){
		if(c[a[i]])ma=max(ma,a[i]);
		c[a[i]]=true;
		a[i]=ma;
	}
}
void sol(){
    cin>>n;
	ll ans=0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		ans+=a[i];
	}
	g();
	for(ll i=1;i<=n;i++)ans+=a[i];
	g();
	for(ll i=1;i<=n;i++){
		ans+=(n-i+1)*a[i];
	}
	cout<<ans<<endl;
}
int main(){
	int t;cin>>t;
	while(t--)sol();
	return 0;
}

相关推荐

  1. B - Array Craft(cf960

    2024-07-22 14:58:04       14 阅读
  2. Codeforces Round 960 (Div. 2)VP

    2024-07-22 14:58:04       20 阅读
  3. C. Mad MAD Sum(cf960

    2024-07-22 14:58:04       17 阅读
  4. 【LintCode】920.会议室

    2024-07-22 14:58:04       48 阅读
  5. LeetCode906. Super Palindromes

    2024-07-22 14:58:04       42 阅读
  6. 906. 区间分组(贪心)

    2024-07-22 14:58:04       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 14:58:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 14:58:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 14:58:04       45 阅读
  4. Python语言-面向对象

    2024-07-22 14:58:04       55 阅读

热门阅读

  1. 【数据治理】数据治理:数据质量关键技术

    2024-07-22 14:58:04       18 阅读
  2. nginx虚拟主机配置项

    2024-07-22 14:58:04       16 阅读
  3. 在 CentOS 7 上编译安装 Python 3.11

    2024-07-22 14:58:04       14 阅读
  4. 算法学习3——搜索算法

    2024-07-22 14:58:04       16 阅读
  5. IaaS是什么的简称?关于IaaS的介绍

    2024-07-22 14:58:04       17 阅读
  6. [C++]——常见内存泄漏场景

    2024-07-22 14:58:04       15 阅读
  7. element表单disabled功能失效问题

    2024-07-22 14:58:04       16 阅读
  8. 塔子哥的浏览记录-小红书2024笔试(codefun2000)

    2024-07-22 14:58:04       20 阅读