算法——贡献法

news2024/9/21 23:24:08

前天的AtCoder Beginner Contest 371 D题碰到了这个贡献法,刚好之前的第十一届蓝桥杯省赛第二场真题AcWing 2868. 子串分值也是用的这个方法hh,但是赛时没有搞出来。。。

AcWing 2868. 子串分值

对于一个字符串 SS,我们定义 SS 的分值 f(S)f(S) 为 SS 中恰好出现一次的字符个数。

例如 f(“aba”)=1f(“aba”)=1,f(“abc”)=3f(“abc”)=3, f(“aaa”)=0f(“aaa”)=0。

现在给定一个字符串 S[0…n−1]S[0…n−1](长度为 nn),请你计算对于所有 SS 的非空子串 S[i…j](0≤i≤j<n)S[i…j](0≤i≤j<n), f(S[i…j])f(S[i…j]) 的和是多少。

输入格式

输入一行包含一个由小写字母组成的字符串 SS。

输出格式

输出一个整数表示答案。

数据范围

对于 20%20% 的评测用例,1≤n≤101≤n≤10;
对于 40%40% 的评测用例,1≤n≤1001≤n≤100;
对于 50%50% 的评测用例,1≤n≤10001≤n≤1000;
对于 60%60% 的评测用例,1≤n≤100001≤n≤10000;
对于所有评测用例,1≤n≤1000001≤n≤100000。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int l[N],r[N],p[26];
char str[N];
typedef long long ll;
int main(){
    cin>>str+1;
    int n=strlen(str+1);
    for(int i=1;i<=n;i++){
        int t=str[i]-'a';
        l[i]=p[t];
        p[t]=i;
    }
    for(int i=0;i<26;i++)p[i]=n+1;
    for(int i=n;i;i--){
        int t=str[i]-'a';
        r[i]=p[t];
        p[t]=i;
    }
    ll res=0;
    for(int i=1;i<=n;i++){
        res+=(ll)(i-l[i])*(r[i]-i);
    }
    cout<<res;
    return 0;
}

 这道题里面一个字符只有恰好出现一次才贡献为1,出现了多次就贡献为0;

所以,只有在L[i]~~R[i]区间内贡献1,超过了就贡献0;

然后,乘法原理得res+=(ll)(i-l[i])*(r[i]-i);。。。记得加(ll)强制类型转换。

p[]的作用是临时数组。

AtCoder Beginner Contest 371 D题

E - I Hate Sigma Problems (atcoder.jp)

Problem Statement

You are given a sequence of integers A=(A1,A2,…,AN)A=(A1​,A2​,…,AN​) of length NN. Define f(l,r)f(l,r) as:

  • the number of distinct values in the subsequence (Al,Al+1,…,Ar)(Al​,Al+1​,…,Ar​).

Evaluate the following expression:

∑i=1N∑j=iNf(i,j)i=1∑N​j=i∑N​f(i,j).

Constraints

  • 1≤N≤2×1051≤N≤2×105
  • 1≤Ai≤N1≤Ai​≤N
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

NN
A1A1​ …… ANAN​

Output

Print the answer.

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
int a[N],r[N],p[N];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)p[i]=n+1;
    for(int i=n;i;i--){
        int t=a[i];
        r[i]=p[t];
        p[t]=i;
    }
    ll  res=0;
    for(int i=1;i<=n;i++)
    {
        res+=(ll)(i-0)*(r[i]-i);
    }
    // for(int i=1;i<=n;i++){//用左端点的写法
    //     int t=a[i];
    //     l[i]=p[t];
    //     p[t]=i;
    // }
    // ll res=0;
    // for(int i=1;i<=n;i++){
    //     res+=(ll)(i-l[i])*(n-i+1);
    // }
    cout<<res;
    return 0;
}

记得开long long 否则过不了 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2141728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UDS 诊断 - TransferData(传输数据)(0x36)服务

UDS 诊断服务系列文章目录 诊断和通信管理功能单元 UDS 诊断 - DiagnosticSessionControl&#xff08;诊断会话控制&#xff09;&#xff08;0x10&#xff09;服务 UDS 诊断 - ECUReset&#xff08;ECU重置&#xff09;&#xff08;0x11&#xff09;服务 UDS 诊断 - SecurityA…

芯片制造过程(科普版)

tip&#xff1a;是搬运过来的&#xff0c;vx公众号&#xff1a;胖虎说可科普(感觉它的视频也是不知道哪里搞过来的&#xff0c;bushi) 目录 1 芯片结构2 制造过程2.1 晶圆的制造2.2 晶圆的加工2.3 掩膜电路2.4 光刻2.5 离子注入2.6 切割 封装等 最后 记录一下编写过程&#xff…

IM系统完结了,那简历该怎么写?(含简历项目描述)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 星球项目地址&#xff1a;https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…

在线仿真器ST-Link为例的整体认知

仿真器的作用 参考 简单来说&#xff0c;仿真器拥有下载和实时程序控制两个功能&#xff0c;而且下载的地址直接指向flash而不需要设置引脚启动单片机内部的bootloader程序&#xff0c;而实际中更加实用的是程序控制调试&#xff0c;这可以减少很多下载操作。 仿真器的在调试…

信息安全工程师(6)网络信息安全现状与问题

一、网络信息安全现状 威胁日益多样化&#xff1a;网络攻击手段不断翻新&#xff0c;从传统的病毒、木马、蠕虫等恶意软件&#xff0c;到勒索软件、钓鱼攻击、DDoS攻击、供应链攻击等&#xff0c;威胁形式多种多样。这些攻击不仅针对个人用户&#xff0c;还广泛影响企业、政府等…

[数据集][图像分类]茶叶病害分类数据集6749张7类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;6749 分类类别数&#xff1a;7 类别名称:["Unlabeled","alg…

【设计模式】UML类图和六大设计原则

前言 在实践中经常看到工厂模式、观察者模式等字眼&#xff0c;渐觉设计模式的重要性&#xff0c;于是开刷设计模式。 本文讲述了UML类图以及设计模式的六大原则 参考资料&#xff1a; 课程视频&#xff1a;黑马程序员Java设计模式 一、UML类图 1. 类和接口的表示方式 如…

【Elasticsearch系列八】高阶使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

在线教育平台项目

介绍 基于SpringBootVue前后端分离的在线教育平台项目&#xff0c;单体应用服务架构。系统共设计三种角色&#xff1a;管理员、讲师和学员&#xff0c;三个角色分别对应一个操作端。也就是本系统1个后台项目&#xff0c;三个前端项目。管理员端没有引入角色和权限管理&#xf…

YoloV8 trick讲解

1.将 YOLOv5 的 C3结构换成了梯度流更丰富的 C2f结构: C3 C3 模块的设计灵感来自 CSPNet&#xff0c;其核心思想是将特征图的部分通道进行分割和并行处理&#xff0c;目的是减少冗余梯度信息&#xff0c;同时保持较高的网络表达能力。C3 结构与传统的残差结构类似&#xff0c;但…

【23-24年】年度总结与迎新引荐

文章目录 相关连接前言1 忙碌的备研与本科毕设2 暑期阿里之旅3 团队荣誉与迎新引荐4 项目合作意向 相关连接 个人博客&#xff1a;issey的博客 - 愿无岁月可回首 前言 自从2023年4月更新了两篇关于NLP的文章后&#xff0c;我便消失了一年半的时间。如今&#xff0c;随着学业…

软考高级:存储系统IO 数据传输方式:程序控制方式、程序中断方式、DMA 方式、通道方式、IO 处理机 AI 解读

关于计算机中的IO数据传输方式&#xff0c;有几种不同的策略可以用来进行数据的传输和控制。我们分别讲解一下它们。 生活化例子 假设你在一条生产线上工作&#xff0c;有几种方式可以处理不同的任务&#xff08;如搬运、检查、修理产品&#xff09;&#xff1a; 程序控制方…

Linux基础---09Find文件查找

百分之八十的财富掌握在百分之二十的手里&#xff0c;这就是著名的二八法则。这里列出关键字表&#xff0c;希望大家复习的时候看到关键字&#xff0c;脑袋里就自动浮现出整句命令。 查询方式主要参数文件名-name文件大小-size忽略大小写-iname按天-atime&#xff0c;-mtime,-…

目标检测基本知识

目标检测 一、目标检测二、常用的评价指标2.1 IOU2.2 NMS(非极大值抑制) 三、R-CNN网络基础3.1 Overfeat模型3.2 RCNN模型3.3FastRCNN模型 四、Faster-RCNN网络4.1 网络工作流程 五、yolo系列5.1 yoloV3 六、SSD算法 一、目标检测 目标检测的任务是找出图像中所有感兴趣的目标…

从index_put出发全面学习cuda和pytorch技术

一 前言 深感目前对于cuda和pytorch所涉及知识的广度和深度,但一时又不知道该如何去学习,经过多日的考虑,还是决定管中窥豹,从一个算子出发,抽丝剥茧,慢慢学习,把学习中碰到的问题都记录下来,希望可以坚持下去。 二 函数功能描述 【torch算子】torch.index_put和tor…

SOMEIP_ETS_112: SD_Empty_Option

测试目的&#xff1a; 验证DUT能够拒绝长度为0的IPv4选项的SubscribeEventgroup消息&#xff0c;并以SubscribeEventgroupNAck作为响应。 描述 本测试用例旨在确保DUT遵循SOME/IP协议&#xff0c;当接收到一个IPv4选项长度为0的SubscribeEventgroup消息时&#xff0c;能够正…

不同编程语言如何统计代码执行时间

在软件开发过程中&#xff0c;统计代码执行时间是一个非常有用的工具&#xff0c;可以帮助开发者优化程序性能、识别瓶颈以及进行基准测试。不同的编程语言提供了不同的方法来测量代码执行时间。以下是一些常见编程语言中测量代码执行时间的方法&#xff0c;并详细解释每一步的…

I2C/IIC学习笔记

I2C/IIC 有些同学I2C和IIC分不清&#xff0c;I2C和IIC实际上是指同一种通信协议。I2C是Inter-Integrated Circuit的缩写&#xff0c;而IIC是它的另一种表述方式&#xff0c;代表的是同一个意思&#xff0c;即“集成电路间总线”。I2C是一种由飞利浦公司&#xff08;现恩智浦半…

数据结构(7.3_2)——平衡二叉树

平衡二叉树&#xff0c;简称平衡树(AVL树)----树上任一结点的左子树和右子树的高度之差不超过1. 结点的平衡因子左子树高-右子树高 //平衡二叉树结点 typedef struct AVLNode {int key;//数据域int blalance;//平衡因子struct AVLNode* lchild, * rchild; }AVLNode,*AVLTree; …

中秋:明月寄相思,灯笼映团圆

文章目录 前言项目概述实现步骤创建基础 HTML 结构添加动态背景和月亮创建 SVG 灯笼实现动态动画效果闪烁的星星效果调整灯笼和月亮尺寸 完整代码结语 前言 今天是中秋&#xff0c;这里先祝大家节日快乐&#xff01;&#x1f386;&#x1f386;&#x1f386; 在这篇博客中&…