C - Concatenation Gym - 100801C

2024-04-16 01:08
文章标签 gym concatenation 100801c

本文主要是介绍C - Concatenation Gym - 100801C,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

题意:
A A A中取出一个前缀, B B B中取出一个后缀,问问拼出多少个字符串

思路:
感觉很巧妙的一道题。
首先能构造出的字符串总数为 l e n a ∗ l e n b lena*lenb lenalenb
那么假设从 A A A中取出的前缀结尾字符为 x x x,那么从 B B B中取出的后缀首字符为 x x x的有 m m m个,那么将 A A A的结尾去掉或者将 B B B的首部去掉,拼成的字符串是一样的,也就是重复算了 m m m次。

假设 A A A中结尾为字符 x x x的有 n n n个,那么对于字符 x x x来说,一共多算了 n ∗ m n*m nm次。
所以统计出 A A A中前缀结尾字符出现次数和 B B B中所有后缀开头字符出现次数,减去所有相同字符个数乘积。

但是注意A串第一个字符和B串最后一个字符不统计,因为首字符往前和尾字符往后是空的,发生不了重复。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>using namespace std;typedef long long ll;
const int maxn = 1e5 + 9;
char a[maxn],b[maxn];
ll vis1[30],vis2[30];int main() {freopen("concatenation.in","r",stdin);freopen("concatenation.out","w",stdout);scanf("%s%s",a + 1,b + 1);int n1 = strlen(a + 1);int n2 = strlen(b + 1);ll num = 1ll * n1 * n2;for(int i = 2;i <= n1;i++) {vis1[a[i] - 'a']++;}for(int i = 1;i < n2;i++) {vis2[b[i] - 'a']++;}for(int i = 0;i < 26;i++) {num -= vis1[i] * vis2[i];}printf("%lld\n",num);return 0;
}

这篇关于C - Concatenation Gym - 100801C的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907423

相关文章

Creating OpenAI Gym Environment from Map Data

题意:从地图数据创建 OpenAI Gym 环境 问题背景: I am just starting out with reinforcement learning and trying to create a custom environment with OpenAI gym. However, I am stumped with trying to create an enviro

【codeforces】gym 101137 K - Knights of the Old Republic【用最小生成树对图做集合dp】

题目链接:【codeforces】gym 101137 K - Knights of the Old Republic 考虑对图集合dp,一个连通块的dp值为两个连通块的值的和或者强制加一条新边后的最小值,取个最小值(边从小到大枚举,则强制加一条最大的边会导致连通块内较小的边一定都选,则会构成一个生成树)。用kruskal实现这个dp过程即可。 #include <bits/stdc++.h>

【codeforces】gym 101138 K. The World of Trains【前缀和优化dp】

题目链接:K. The World of Trains 记录一个横着的前缀dp和以及斜着的前缀dp,复杂度 O(n2) O(n^2) #include <bits/stdc++.h>using namespace std ;typedef pair < int , int > pii ;typedef long long LL ;#define clr( a , x ) memset (

LeetCode 30 Substring with Concatenation of All Words

题意: 给出字符串s和许多等长(len)单词w,找出所有s中的满足子串为w中所有单词的一种组合的位置。 思路: 因为w中的单词要满足的是组合而不是排列,因此用“区间[L,R]中包含单词的计数”来维护比较合适。 一是满足了组合对顺序的不要求,二是方便处理重复的单词。 首先可以统计一下,w中各种单词个数。如果s的长度为size(w) * len的子串单词计数与w相同,则找到一个答案。

How to user “Discrete“ object in openai-gym environments?

题意:怎样在 OpenAI Gym 环境中使用 “Discrete” 对象 问题背景: I am trying to create a Q-Learning agent for a openai-gym "Blackjack-v0" environment. I am trying to get the size of the observation space but its in

OpenAI Gym custom environment: Discrete observation space with real values

题意:OpenAI Gym 自定义环境:具有实数值的离散观测空间 问题背景: I would like to create custom openai gym environment that has discrete state space, but with float values. To be more precise, it should be a range of valu

GYM 100685 K

乱搞题 统计每一个不是magic word的单词,然后每个make_pair 然后按照公式计算答案。 因为这里是乱序的统计make_pair的情况,所以如果相邻的是相同的就会多统计一倍,在计算答案的是就要去掉,如果你保证字典序小的在前面,那就无所谓啦。 // whn6325689// Mr.Phoebe// http://blog.csdn.net/u01

GYM 100685 G【并查集】

一开始看题就水了一发bitset,本地是没有什么问题,但是交上去果断地MLE了。 那么就想到乱搞,假设将其变成一颗有根树,如果dfs的时候走的是正的边,就在正的并查集里面merge,如果走的是负的边,就在反的并查集里面merge。 对于一个查询,查询一下他们的LCA,如果他们的LCA,在u(或者v)正的并查集中,在另一个反的并查集内,那么就是可以访问,否则不行。 大家可以脑补一下图像,必然是

GYM 100685 J【交互题】

俄罗斯的人经常出一些交互题,比如强制离线之类的题目 这题是二分+交互 对于每一盏灯 i i,我们假设前面的灯位置都排好了位置,那么就二分那些这一盏灯所在的位置,询问的次数是nlog(n)nlog(n)次。 另外如果死循环的话,那就是没有方案,设置一个cnt上限来判断死循环。

How can OpenAI Gym‘s visualizations work within Docker?

题意:OpenAI Gym 的可视化功能如何在 Docker 中运行? 问题背景: I'd like to get OpenAI Gym working with the rendered OpenGL visualizations within a docker container. 我想在 Docker 容器中让 OpenAI Gym 与渲染的 OpenGL 可视化一起工作