当前位置: 首页 > news >正文

CCUT应用OJ——小龙的字符串函数

题目简介

  • 题源:1073 - 小龙的字符串函数 | CCUT OJ
  • 题意:给定 nnn 个等长字符串,定义函数 f(si,sj)f(s_i,s_j)f(si,sj) 表示字符串 sis_isisjs_jsj 中位置和字符相同的总数。输出 ∑f(si,sj)\sum f(s_i,s_j)f(si,sj) ( 其中 i<ji<ji<j )。
  • 数据范围:1≤n≤2000,1≤∣si∣≤20001\le n\le 2000,1\le |s_i|\le 20001n2000,1si2000
  • 注:若无特殊说明,博主的代码模板如下,通过 solve 函数处理多组测试用例。本文后续代码仅给出 solve 函数。
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
#define ln '\n'int solve(){}int main(){ios::sync_with_stdio(0),cin.tie(0);int T;cin>>T;while(T--){cout<<solve()<<ln;}return 0;
}

朴素想法

朴素想法极其简单,双循环两两遍历字符串,逐位检查是否相同即可。复杂度 O(n2⋅∣si∣)O(n^2 \cdot |s_i|)O(n2si),超时。

int solve(){int n;cin >> n;vector<string> strs(n);for (auto &i:strs) cin >> i;int L = strs[0].size();i64 ans = 0;for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) for (int k = 0; k < L; k++) if (strs[i][k] == strs[j][k]) ans++;return ans;
}

题解

定义权值数组 cnt[i][26],表示这些字符串第 iii 位上各字母出现的频率。根据排列组合知识,假设字符 jjj 在第 iii 位上出现了 cnt[i][j] 次,则其在该位上可两两配对的次数为Ccnt[i][j]2=cnt[i][j]⋅(cnt[i][j]−1)2C_{cnt[i][j]}^2=\dfrac{cnt[i][j]\cdot (cnt[i][j]-1)}{2}Ccnt[i][j]2=2cnt[i][j](cnt[i][j]1) 次。时间复杂度 O(n⋅∣si∣⋅26)O(n \cdot|s_i|\cdot 26)O(nsi26)

int solve() {int n; cin >> n;vector<string> strs(n);for (auto &i:strs) cin >> i;int L = strs[0].size();int cnt[2000][26] = {0};for (int k = 0; k < n; k++)for (int i = 0; i < L; i++)cnt[i][strs[k][i]-'a']++;i64 ans = 0;for (int i = 0; i < L; i++)for (int j = 0; j < 26; j++)ans += 1LL * cnt[i][j] * (cnt[i][j]-1) / 2;return ans;
}
http://www.dtcms.com/a/549396.html

相关文章:

  • 突飞猛进的AI时代(01)
  • 网站设计的重要性怎么运行wordpress
  • 如何实现快速批量裁剪处理3000+图片
  • 项目管理系统排行:Top15工具选型指南
  • 整数MCU实现FOC控制:深度解析与优化实践
  • Rust 自定义迭代器深度解析:从 next 方法到零成本抽象
  • 日常学习--ICP资产批量查询工具
  • 解决 Node.js 启动报错:digital envelope routines 错误全记录
  • 油猴脚本开发解释
  • 招远网站建设哪家好h5网页制作素材
  • 有没有做任务给钱的网站自己做的网站搜索不到
  • Linux 系统入门:环境变量虚拟地址空间
  • <FreeRTOS>
  • Kubernetes Namespace 详解:资源隔离与多租户管理
  • Cursor 发布 2.0 与 全新 Composer
  • Rust + WASM + Svelte 深度实战:内存管理、性能权衡与图像处理进阶
  • 做个电商网站需要怎么做免费的个人简历模板文档
  • 【叩富网 -注册安全分析报告-无验证方式导致安全隐患】
  • 【.net framework】WINDOWS服务和控制台程序简单介绍
  • PDFelement 万兴PDF,简单好用的PDF阅读编辑批注器
  • 建设商城网站的书籍钱广东网站开发软件
  • android studio开发UniComponent<SurfaceView>组件
  • android studio 签名打包教程
  • 做网站之前的前期徐州市网站开发
  • opencv 获取图像中物体的坐标值
  • 乐鑫推出的第三颗RISC-V物联网芯片ESP32-H2,融合蓝牙与Thread技术!
  • 08_集成学习
  • 建设平台型网站多少钱微商网站模板
  • 温州网站建设方案维护软件服务外包
  • 分享几个开源的系统,包括小程序、商城系统、二手交易等常见的系统、很容易进行二次开发 【可以参考学习】