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

news/2025/10/30 21:12:32/文章来源:https://www.cnblogs.com/yerosius/p/19178144

题目简介

  • 题源:1073 - 小龙的字符串函数 | CCUT OJ
  • 题意:给定 \(n\) 个等长字符串,定义函数 \(f(s_i,s_j)\) 表示字符串 \(s_i\)\(s_j\) 中位置和字符相同的总数。输出 \(\sum f(s_i,s_j)\) ( 其中 \(i<j\) )。
  • 数据范围:\(1\le n\le 2000,1\le |s_i|\le 2000\)
  • 注:若无特殊说明,博主的代码模板如下,通过 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(n^2 \cdot |s_i|)\),超时。

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],表示这些字符串第 \(i\) 位上各字母出现的频率。根据排列组合知识,假设字符 \(j\) 在第 \(i\) 位上出现了 cnt[i][j] 次,则其在该位上可两两配对的次数为\(C_{cnt[i][j]}^2=\dfrac{cnt[i][j]\cdot (cnt[i][j]-1)}{2}\) 次。时间复杂度 \(O(n \cdot|s_i|\cdot 26)\)

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.mzph.cn/news/951129.shtml

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

相关文章

OceanBase系列---【oceanbase的oracle模式新增分区表】

OceanBase系列---【oceanbase的oracle模式新增分区表】TIPS分区选择建议 按天分区: 适用于数据量极大(每天千万级以上)、需要频繁删除历史数据的场景 按月分区: 适用于数据量中等(每月百万到千万级)、最常用的分区方式…

cursor 数据路径 防止试用账号误删数据

C:\Users\xxx\.cursor C:\Users\xxx\AppData\Local\Programs\cursor C:\Users\xxx\AppData\Roaming\Cursor C:\Users\xxx\AppData\Roaming\Cursor\User 备份这个路径就行

Bettercap(中间人攻击神器)

Bettercap(中间人攻击神器)https://github.com/bettercap/bettercap/releaseshttps://github.com/bettercap/bettercap/releases/download/v2.41.4/bettercap_windows_amd64.zip 安装完运行会提示缺少 libusb.dll ht…

PHP代码加密方法

1. 新建一个 待加密的php文件:/routes_plain.php 注意不要带“<?php” var_dump(666);2.新建运行加密的文件: /jiami.php $plain = file_get_contents(__DIR__ . /routes_plain.php); // 压缩 + base64 $payload…

why is making friends, love bad

any relationship will let one be unreasonable.

DP题解

[P6772 [NOI2020] 美食家] (https://www.luogu.com.cn/problem/P6772) ZAK解题思路 蒟蒻语 wtcl, 只会最简单的题目 这道题目与 [P6569 NOI Online #3 提高组]魔法值(民间数据) 类似, 都是倍增优化矩阵乘法。 蒟蒻解…

逆序对略解

逆序对 定义 在一个数列中,如果前面的数字大于后面的数字,那么这两个数字就构成了一个逆序对 求逆序对 有3种方法:暴力,归并排序,线段树 1.暴力算法 枚举i和j(i<j),并判断是否满足a[j]<a[i] for(int i=1;i…

解码Shell 脚本编程

Shell 脚本基础 编程语言的分类 编程语言主要分为编译型语言和解释型语言,核心区别在于代码执行前是否需要 “编译” 步骤:类型 核心特点 优势 劣势 典型例子编译型语言 用平台相关编译器将源码一次性翻译成机器码(…

第10天(中等题 滑动窗口)

打卡第十天 2道中等题两个函数: 1.ans = move(t) 是将字符串 t 的内容转移给 ans,而不是进行拷贝。 详细2.substr 是 C++ 字符串的标准成员函数,用于从原字符串中提取子串。 详细 函数原型: string substr(size_t po…

树形dp部分题目总结

树形dp树形dp还是太难了 No.1 P2664 树上游戏 题目直接点开即可,这里不再赘述 我们发现其实直接统计每条路径上的颜色个数并不好统计,即使拆开贡献也是如此 举个例子,你要统计一个节点的贡献,那么你的贡献区间是不…

人工智能之编程基础 Python 入门:第三章 基础语法

人工智能之编程基础 Python 入门:第三章 基础语法人工智能之编程基础 Python 入门 第三章 基础语法@目录人工智能之编程基础 Python 入门前言一、基本语法第一个程序编码标识符行与缩进注释运算符一、算术运算符(Ari…

模块-文本

模块-文本模块:__init__文件中经常方常用的模块名用于快速导入 匿名函数递归:函数自己调用自己的写法叫递归异常处理 try: except excption as e:(报错执行) else: (没报错执行) finally:(无论是否报错都执行)

oier的呻吟

题记: 得之我幸,失之我命哎,马上就要考csp-j/s了 总感觉没复习好,啥都不会 好累 赛前遗言 如果这次没上,也不知道以后会有没有机会碰oi 那个oier曾没有远大的志向 突然想到那一句话 得之我幸,失之我命可能明后天…

进销存软件和ERP是包含关系吗?

进销存软件和ERP是包含关系吗?很多企业老板都会问我这个问题。 尤其是第一次接触信息化系统的时候,常常听人说:ERP比进销存高级、ERP包含进销存、我们先上个进销存,后面再上ERP。 听起来都对,但很多人其实并不清楚…

jenkins 权限控制(用户只能看指定的项目)

jenkins 权限控制(用户只能看指定的项目)转自:https://www.cnblogs.com/lfxx/p/17394304.html 1、在插件管理下载Role-based Authorization Strategy插件 2、打开全局安全设置,设置授权策略3、在管理角色里新增一个全…

CF1784C Monsters (hard version)

对于添加操作难做考虑时空倒流改为删数。我们先考虑不带修怎么做,显然考虑维护一个指针排序后从左往右扫。如果当前指针如果还是 \(\leq a_i\),则 \(x\leftarrow x+1\),答案加上 \(a_i-x\)。那么我们发现,答案只跟…

[Programming Tips]Teach Yourself Programming in Ten Years by Peter Norvig

https://www.norvig.com/21-days.html中文翻译版: https://web.archive.org/web/20090216071944/http://www.javaresearch.org/article/12568.htm10年编程无师自通FooSleeper 翻译 更新:2005-01-12 10:18:06 版本…

世界上最牛逼的人—黄景行

黄景行是世界上最牛逼的人

X991CN-个人自制计算器

实物图PCB-3D视图硬件架构图:应用处理器: ESP32-S3 CORE: Xtensa LX7 32bit 240MHZ SRAM:320KB SPI-NORFLASH:16MB PSRAM:8MB SPI-NANDFLASH:256MB TF卡(SPI模式) NORFLASH和NANDFLASH均采用6线QSPI模式,由于ESP32-S…