摘要: 原文链接:OIwiki 描述 给定一个长度为 n 的字符串 ,请找到所有对 (i, j) 使得子串 s[i...j] 为一个回文串。 解法 不能发现,如果s是回文串,那么s的所有回文串个数等于s的回文半径,因此,求回文串个数等价于求最长回文串半径。 设d[i]表示以i为对称中心的回文串个数。 为了快 阅读全文
posted @ 2022-01-26 17:09 Endergarten 阅读(65) 评论(2) 推荐(0)
摘要: 原文链接:OIwiki Hash的思想 核心思想 Hash 的核心思想在于,将输入映射到一个值域较小、可以方便比较的范围。 定义 我们定义一个把字符串映射到整数的函数 f ,这个 f 称为 Hash 函数。 通常我们采用的是多项式 Hash 的方法,对于一个长度为l的字符串s来说,我们可以这样定义多 阅读全文
posted @ 2022-01-26 16:30 Endergarten 阅读(277) 评论(0) 推荐(0)
摘要: 1.输出n的全排列 这个比较简单,用递归就行了 1 void permutation(int now){ 2 3 if(now > n){//如果已经排完 4 for (int i = 1; i <= n; i++) 5 printf("%d", a[i]); 6 printf("\n"); 7 r 阅读全文
posted @ 2022-01-24 20:19 Endergarten 阅读(92) 评论(0) 推荐(0)
摘要: 题目链接 思路: 首先,不难看出,每类题目是独立的,因此仅考虑一类题目就行 要使总时间最小,显然要使左右脑所花费的时间尽可能地接近 我先想到了贪心,按时间排序,然后每次取最大的,将它分配给当前耗时最少的大脑 自信满满秒杀全WA了呜呜呜呜呜呜 其实可以发现,问题可以看出是,让一个大脑耗时不超过sumt 阅读全文
posted @ 2021-11-23 16:49 Endergarten 阅读(178) 评论(0) 推荐(0)
摘要: 首先我想到应该枚举每一种情况,但是怎么去枚举是一个很大的问题 观察计算过程,我发现算24点的本质其实就是每次计算两个数,得出一个新的数,然后再进行运算 例如 计算 3*(3- 3/8) = 24时 先计算3/8然后我们可以将问题转化为 3,3,3/8三个数是否能得到24以此类推 于是,我想到可以从4 阅读全文
posted @ 2021-11-08 19:32 Endergarten 阅读(480) 评论(0) 推荐(0)
摘要: 控制台实现书记舞 i了i了 阅读全文
posted @ 2020-10-02 15:45 Endergarten 阅读(267) 评论(0) 推荐(1)