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

我自己做个网站怎么做徐州网站建设

我自己做个网站怎么做,徐州网站建设,陕西省西咸新区开发建设管理委员会官方网站,网站建站论坛CSP模拟53联测15 D. 子序列 文章目录 CSP模拟53联测15 D. 子序列题目大意思路code 题目大意 (seq / 3s / 512 MiB) 给定一个长为 n n n 的仅有小写英文字母构成字符串 S S 1 S 2 ⋯ S n SS_1S_2\cdots S_n SS1​S2​⋯Sn​。我们定义一个字符串是好…

CSP模拟53联测15 D. 子序列

文章目录

  • CSP模拟53联测15 D. 子序列
    • 题目大意
    • 思路
    • code

题目大意

(seq / 3s / 512 MiB)

给定一个长为 n n n 的仅有小写英文字母构成字符串 S = S 1 S 2 ⋯ S n S=S_1S_2\cdots S_n S=S1S2Sn。我们定义一个字符串是好的,当且仅当它可以用两个不同的字母 xy 表示成 xyxyxyx... 的形式。例如,字符串 ababtotz 是好的,但字符串 abcaa 不是好的。

现在有 q q q 组询问,每次给定 1 ≤ l ≤ r ≤ n 1 \le l \le r \le n 1lrn,你想要求出,对于串 S S S 的子串 S [ l ⋯ r ] S[l \cdots r] S[lr],它最长的一个好的子序列的长度是多少,以及它可以被哪两个不同字符 xy 来表示。如果有多个最长的串,则输出字典序最小的一个串的 xy

思路

观察时限发现大概是 O ( 26 n ) O(26n) O(26n) 的做法

我们预处理两个数组 p r e v i , n e x t i prev_i , next_i previ,nexti 分别表示第 i i i 为的上一个、下一个字符 j j j 在什么位置。

再维护 a n s i , j ans_{i , j} ansi,j 表示 i → n i\to n in 里类似于 s [ i ] , j s[i] , j s[i],j 这样的排列的数量

考虑这个怎么维护。

从后往前枚举 i i i 和字符 j j j ,用 n e x t i , j next_{i , j} nexti,j 转移就好了

对于每个询问 l , r {l , r} l,r ,直接从小到枚举答案,用类似前缀和的方法求答案就好了。

前缀和的时候要考虑是否最后的那组字符都在区间内。

注意判断一下有没有多出来一个字符的情况。

code

#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
#define fd(x , y , z) for(int x = y ; x >= z ; x --)
using namespace std;
const int N = 1500005;
int n , lst[27] , pre[N][27] , nxt[N][27] , ans[N][27] , l , r;
char s[N] , c1 , c2;
int main () {freopen ("seq.in" , "r" , stdin);freopen ("seq.out" , "w" , stdout);scanf ("%s" , s + 1);n = strlen (s + 1);fu (i , 1 , n) {lst[s[i] - 'a' + 1] = i;fu (j , 1 , 26) pre[i][j] = lst[j]; }fu (i , 1 , 26) lst[i] = 0;fd (i , n , 1) {lst[s[i] - 'a' + 1] = i;fu (j , 1 , 26) nxt[i][j] = lst[j];}int now , k;fd (i , n , 1) {now = s[i] - 'a' + 1;fu (j , 1 , 26) {if (now == j) continue;k = nxt[i][j];if (k) ans[i][j] = 2 + ans[nxt[k][now]][j];else ans[i][j] = 1;}}int ans1 , ans2 , T , p , x , y;scanf ("%d" , &T);while (T --) {ans2 = 0;scanf ("%d%d" , &l , &r);fu (i , 1 , 26) {fu (j , 1 , 26) {if (i == j) continue;p = nxt[l][i];if (p > r) continue;x = pre[r][i] , y = pre[r][j];if (x > y) ans1 = ans[p][j] - ans[x][j] + 1;elseans1 = ans[p][j] - ans[nxt[r][i]][j];if (ans2 < ans1) {ans2 = ans1;c1 = i + 'a' - 1;c2 = j + 'a' - 1;}}}printf ("%d %c%c\n" , ans2 , c1 , c2);}return 0;
}
http://www.mnyf.cn/news/36256.html

相关文章:

  • wordpress 年月归档seo销售话术开场白
  • 旅游网站建设研究综述seo优化方法
  • 网站制作方案怎么写十大最靠谱培训机构
  • 深圳宝安区必去景点seo交流qq群
  • 如何用电脑主机做网站微指数查询入口
  • 传统文化传播公司网站建设谷歌外链工具
  • 做网站外包的公司好干嘛杭州疫情最新消息
  • 查网站备案号矿产网站建设价格
  • 建设网站之前都需要准备什么问题百度收录需要多久
  • 如何写代码做网站网页制作官方网站
  • 昆明营销型网站制作设计广州seo快速排名
  • 专业网站开发技术北京seo推广系统
  • 公司做网站的流程作图的步骤站长之家域名查询
  • 东莞三网合一网站制作网站优化平台
  • 电脑自带的做网站叫什么营销软文范例
  • 我有网站 怎么做淘宝推广的关键词快速排名seo怎么优化
  • js网站计数器代码智能建站abc
  • 企业网站建立步骤网络营销课程
  • 做网站费用多少抖音搜索引擎优化
  • 昆明网站外包上海广告推广
  • 网站建设用什么系统百度竞价推广收费
  • 西山区城市建设局网站宁波关键词排名优化
  • 常州网站推广州推动优化防控措施落地
  • 学校网站注重服务平台建设企业管理培训
  • 网站怎么做本地映射搜易网提供的技术服务
  • 做电影下载网站需要什么软件好优化大师卸载不了
  • 深圳高端保姆公司大型seo公司
  • 常见的分类信息网站有哪些360搜索引擎
  • 免费asp主机网站新网站快速收录
  • 房县网站建设百度一下你就知道搜索引擎