平方串

如果一个字符串由完全相同的两段字符串组成,我们称其为平方串,例如“aa”,"abab", 略去。

分析:输入长度为50,时间限制为1s,还要考虑判重,暴力枚举的复杂度为50*25*50=62500,在一秒的时间限制内完全可以,判重采用unordered_set来做,就可以了。

 1 #include<bits/stdc++.h>
 2 #define pb push_back
 3 #define FOR(i, n) for (int i = 0; i < (int)n; ++i)
 4 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
 5 typedef long long ll;
 6 using namespace std;
 7 typedef pair<int, int> pii;
 8 const int maxn = 1e3 + 10;
 9 void solve() {
10     string s;
11     cin >> s;
12     int n = s.size();
13     unordered_set<string> se;
14     for (int i = 0; i < n; i++) {
15         for (int j = 2; i + j - 1 < n; j += 2) {
16             int left = i, right = i + j / 2, len = j / 2;
17             bool f = 1;
18             for (int k = 0; k < len; k++) {
19                 if(s[left + k] != s[right + k]) {
20                     f = 0; break;
21                 }
22             }
23             if(f) {
24                 se.insert(s.substr(i, j));
25             }
26         }
27     }
28     cout << se.size() << endl;
29 }
30 int main() {
31     freopen("test.in", "r", stdin);
32     //freopen("test.out", "w", stdout);
33     solve();
34     return 0;
35 }
时间: 2024-10-14 00:44:11

平方串的相关文章

八校联考第二场(二试)(20170924)

NOIP 信心赛zzq题目名称函数排列数字串代码文件名func perm num输入文件名func.in perm.in num.in输出文件名func.out perm.out num.out时间限制1s 2s 2s空间限制512MB 512MB 512MB子任务分值10 20 30 40 10 20 20 10 40 20 30 30 20题目类型传统传统传统比较方式全文比较(忽略行末空格和文末换行)全文比较(忽略行末空格和文末换行)全文比较(忽略行末空格和文末换行)1. 题目难度和顺序大致

爱奇艺2018秋季校招算法工程师(第一场)

欢迎fork and star:Nowcoder-Repository-github 括号匹配深度 题目: 链接:https://www.nowcoder.com/questionTerminal/a2d5b1875bb0408384278f40d1f236c9 来源:牛客网 一个合法的括号匹配序列有以下定义: 1.空串""是一个合法的括号匹配序列 2.如果"X"和"Y"都是合法的括号匹配序列,"XY"也是一个合法的括号匹配序

杂题口胡

$Bitwise\ Xor$:给定一个长度为$n$的整数序列$a$和一个整数$k$,求$a$有多少子序列,两两异或值大于等于$k$.$n \leq 3e5,k<2^{60}$ 题解:发现两两异或值的最小值一定是排序后相邻的两个数,首先把$a$排序,设f[i]表示以i结尾的序列个数.用$trie$树优化$dp$,$trie$上每个节点维护子树$f$值的和,根据当前位要大于$x$应该是$0$还是$1$向下递归.$f[i]=query(a[i],x)+1$.加上他自己单独成串.$O(nlogk)$ $

「总结」杂题选讲

Bitwise Xor 我们可以发现一个序列中的最小的异或值是两个大小相邻的数的\(xor\)取\(min\). 那么我们对序列排序. 只需要计算相邻的\(xor\)是大于等于\(k\)的方案. \(dp[i]\)是以\(i\)结尾最小\(xor\)大于\(K\)的方案. 然后我们可以类似于用树状数组来搞最长升降转移. 这次用\(trie\)来转移. MOD Problem 大水题 \[\begin{aligned} ans&=\sum\limits_{i=1}^{n}n\ mod\ I\&

和为s的两个数,一串连续数 41

? ? 引言 ? ? 第一问题很简单,leetcode上也有相应的题,2Sum问题,leetcode上还有2Sum的进阶版3Sum,只是在这个问题上增加了一层循环而已,另外还有3Sum_Close问题,就是和接近s的三个数,本文将依次介绍2Sum问题,3Sum问题,以及3Sum_close,以及一串连续数问题 ? ? 对于3Sum的问题,本文除了常用的退化为2Sum的n平方的解法外,还提供了一种hash的方法,使得利用hash的方法使得4Sum问题不再是n三次方的时间复杂度,可以降到n平方的时间

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十二课(迭代器、字节串)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰 Python人工智能从入门到精通 迭代器 Iterator: 用<>括号表示的一定是对象 什么是迭代器? 迭代器是访问可迭代对象的工具 迭代器是指用iter(obj) 函数返回的对象(实例) 迭代器可以用next(it) 函数获取可迭代对象的数据 迭代器函数iter和next iter(iterable) 从可迭代对象中返回一个迭代器,iterable 必须是能提供一个迭代器的对象 next(iterator

字串符笔记

本章单词: quual:相等的 ignore:忽视 lower:低的 last:最后 trim:忽略不计 concatenate:链接 buffer:缓冲区 final:最终的 &预习一下代码输出结果是什么:  euqals的区别 一.字符串概述 &字符串是一系列字符组成的序列 (1)如何使用字符串: 简单来说,使用字符串主要分为两步 1.定义并初始化字符串 2.使用字符串,对字符串进行一些处理 语法: String s="hello"; 创建String对象的另外两种

最少回文串--牛客网(秋招备战专场三模)-C++方向

题目描述:一个字符串从左向右和从右向左读都完全一样则是回文串,给定一个字符串,问该字符串中的字符所能组成的最少的回文串的个数为多少 解题思路:如果一个字符出现的次数为偶数,则必能组成回文串,如果一个字符出现奇数次,只能自己组成回文串,题目中问最少的回文串数目,即求出现次数为奇数次的字符个数即可,定义a存储每个字符出现的次数,统计出现奇数次的字符的个数,即为输出 1 #include <iostream> 2 #include <string> 3 using namespace s

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?