首页 > 其他分享 >贡献思想

贡献思想

时间:2022-10-06 15:01:08浏览次数:59  
标签:贡献度 数字 思想 ai 贡献 答案 区间 舍去

贡献度思想是什么,贡献度思想就是把对答案有贡献的区间都列出来,把对答案没贡献的区间都舍去。为什么会有对答案没贡献的区间呢,因为在这个区间里,这个数字前面有和它相同的数字,我们只需要保留前面那个区间就行。

例如:

对没有重复数字的样例1来说

序号 1 2 3 4 5
ai 1 2 3 4 5
①a1=1对答案的贡献度区间为[1,1],[1,2],[1,3],[1,4],[1,5] 有1*5个

②a2=2对答案的贡献度区间为

[1,2],[1,3],[1,4][1,5]

[2,2],[2,3],[2,4],[2,5] 有2*4个

③a3=3对答案的贡献度区间为

[1,3],[1,4],[1,5]

[2,3],[2,4],[2,5]

[3,3],[3,4],[3,5] 有3*3个

④a4=4对答案的贡献度区间为

[1,4],[1,5]

[2,4],[2,5]

[3,4],[3,5]

[4,4],[4,5] 有4*2个

⑤a5=5对答案的贡献度区间为

[1,5]

[2,5]

[3,5]

[4,5]

[5,5] 有5*1个

由样例1我们可以知道,在序列中,对ai来说,当前面没有与之相同的数的时候,那么ai对答案的贡献度区间为i*(n-i+1).

答案就是1*5*1+2*4*2+3*3*3+4*2*4+5*1*5=105.

以上就是没有重复数字时,这道题的解法。

对有重复数字的样例3来说

序号 1 2 3 4
ai 2 3 3 2
①a1=2对答案的贡献度区间为[1,1],[1,2],[1,3],[1,4] 有1*4个

②a2=3对答案的贡献度区间为

[1,2],[1,3],[1,4]

[2,2],[2,3],[2,4] 有2*3个

③a3=3对答案的贡献度区间为

[3,3],[3,4] 有1*2个 (由于第2个数字也为3,因此[1,3],[1,4] [2,3],[2,4]与上面的重复了,我们舍去)

④a4=2对答案的贡献度区间为

[2,4]

[3,4]

[4,4] 有3*1个 (由于第1个数字也为3,因此[1,4]与上面的重复了,我们舍去)

从样例3我们可以知道,我们设前面第一个与ai相同的数字的位置是pos[a[i]],那么ai的贡献度区间有(i-pos[a[i]])*(n-i+1).

那么答案就是1*4*2+2*3*3+1*2*3+3*1*2=38.

好处:

如果直接使用暴力的算法的话,时间复杂度为O(n^2),避免不了求区间的情况,但如果使用求贡献度的思维去求,可以在O(n)的时间复杂度内完成

摘自原文链接:https://blog.csdn.net/qq_45328552/article/details/109023946

例题:B-Beauty Values_2022牛客国庆集训派对day6 (nowcoder.com)

标签:贡献度,数字,思想,ai,贡献,答案,区间,舍去
From: https://www.cnblogs.com/ljm-xiada/p/16757615.html

相关文章

  • 41st 2022/9/2 CSP前思想准备
    面临虽说上次过了第一轮,但是仍然很慌因为上次只是第一次过了第一轮,虽然有些把握,但却不是百分百怎么说呢,我不太相信自己第二轮会多烂,但是如果烂在了第一轮,那就真的是哑巴......
  • 分解思想和抽象思想
    理解松耦合的设计思想。理解设计原则比掌握某一个具体的设计模式更重要。设计模式伴随的方法——重构。面向对象的设计模式——GOF23种为主干。为什么要设计模......
  • c++ -- 做题思想
    二分思想:比较显然的就是求某一个确定的值,那么看看他是不是单调的,连续的.        其次就是,把问题通过二分来进行转化,之前的不好做,通过二分转化一......
  • 流式思想概述和两种获取Stream流的方式
    流式思想概述整体来看,流式思想类似于工厂车间的“生产流水线”。 当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个“模型”步......
  • 深入理解CAS思想之原子操作类详解
    前置知识(CAS部分)(1)什么是CAS1.CAS(CompareAndSwap,比较并交换),通常指的是这样一种原子操作:针对一个变量,首先比较它的内存值与某个期望......
  • Java集合类思想(一)
    Java集合类思想(一)一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可......
  • 如何贡献OpenHarmony开发样例
    单丝不成线,独木不成林,一个社区想要健康蓬勃发展离不开社区参与者的持续贡献。而社区贡献点有很多种,本文以贡献OpenAtomOpenHarmony(以下简称“OpenHarmony”)开发样例为例,围......
  • Java并发编程解析 | 基于JDK源码解析Java领域中并发锁之同步器Semaphore,CyclicBarrier
    苍穹之边,浩瀚之挚,眰恦之美;悟心悟性,善始善终,惟善惟道!——朝槿《朝槿兮年说》写在开头在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享......
  • Java并发编程解析 | 基于JDK源码解析Java领域中ReentrantLock锁的设计思想与实现原理
    苍穹之边,浩瀚之挚,眰恦之美;悟心悟性,善始善终,惟善惟道!——朝槿《朝槿兮年说》写在开头在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享......
  • 排序算法基本思想及实现
    一、插入排序1、直接插入排序基本思想:类似抓扑克牌,待排序元素在已排序的序列中从后往前遍历,遇到小于他的元素向后移一位,直至遇到小于或等于他的元素,在其后插入即......