D. Say No to Palindromes
题意:
定义一个字符串是好串,当且仅当 sss 不包含任何长度大于等于 222 的回文子串。
给定一个长度为 nnn 的字符串(仅包含 a,b,ca,b,ca,b,c 三种字符)和 mmm 个询问,每次询问查询一个区间 [l,r][l,r][l,r],求将字符串 Sl...rS_{l...r}Sl...r​ 变成好串至少需要修改多少字符。
思路:
因为字符串的组成仅有 333 种字符
模拟一下好串的特征,初始为 aaa,添加一个 bbb,下一个只能添加 ccc,否则 abaabaaba 或者 abbabbabb 都不是好串,再往后加只能加 aaa,就进入循环了,也就是好串仅有 abcabcabc 这样的子串循环构成,abcabcaabcabcaabcabca
abcabcabc 这样的子串有 A33A_3^3A33​ 种
维护一个由第 jjj 种子串构成字符串时,需要修改的字符个数的前缀和
code:

#include<bits/stdc++.h>
#define endl '\n'
#define ll long long
#define ull unsigned long long
#define ld long double
#define all(x) x.begin(), x.end()
#define mem(x, d) memset(x, d, sizeof(x))
#define eps 1e-6
using namespace std;
const int maxn = 2e5 + 9;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
ll n, m;
string s;
char t[6][5] = {"abc", "acb", "bac", "bca", "cab", "cba"};
int f[maxn][6];void work()
{cin >> n >> m;cin >> s; s = "@" + s;for(int i = 1; i <= n; ++i){int k = (i - 1) % 3;for(int j = 0; j < 6; ++j)f[i][j] = f[i-1][j] + (s[i] != t[j][k]);}while(m--){int l, r;cin >> l >> r;int ans = inf;for(int i = 0; i < 6; ++i) ans = min(ans, f[r][i] - f[l-1][i]);cout << ans << endl;}
}int main()
{ios::sync_with_stdio(0);
//  int TT;cin>>TT;while(TT--)work();return 0;
}

D.Say No to Palindromes(前缀和优化查询相关推荐

  1. 第十一届山东省大学生程序设计竞赛 L. Construction of 5G Base Stations(概率期望,递推前缀和优化)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 第十一届山东省大学生程序设计竞赛 L. Construction of 5G Base Station ...

  2. codeforces #274 C. Riding in a Lift dp+前缀和优化

    codeforces #274  C. Riding in a Lift   dp+前缀和优化 Imagine that you are in a building that has exactly  ...

  3. 前缀和优化+计蒜客 泡咖啡

    题目: 蒜头君想泡咖啡喝.现在他得到了 nn 份菜谱,每个菜谱上都给了两个数l,rl,rl,r代表温度区间在[l,r][l,r][l,r] 度泡出来的咖啡会很好喝. 可是菜谱太多了,蒜头君一度感到疑惑 ...

  4. 序列计数(动态规划/自动机/前缀和优化)

    序列计数 对于一个小写字母的序列每次可以将相邻两个不同的小写字母都变为二者之一,可以进行无限次这样的操作,求解可以产生多少种不同的序列. 首先我们不能考虑操作,而是考虑合法序列,显然最后会形成若干个区 ...

  5. [APIO2016] 划艇(dp + 组合数 + 前缀和优化)

    problem luogu-P3643 solution 有个显然的暴力 dpdpdp.设 dp(i,j):dp(i,j):dp(i,j): 到了第 iii 个学校,其参加且派出 jjj 个划艇的方案 ...

  6. bzoj 3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛——前缀和优化dp / 排列组合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 好简单呀.而且是自己想出来的. dp[ i ]表示最后一个牡牛在 i 的方案数. 当前 ...

  7. 玲珑oj 1032 (容斥原理或前缀和优化dp)

    题面十分简单,n个球放m个盒子,可以空,盒子不同,要求球数最多的盒子唯一,方案数题面十分简单,n个球放m个盒子,可以空,盒子不同,要求球数最多的盒子唯一,方案数 n,m都是500,考虑复杂度O(n3) ...

  8. #798. 徐老师的二维动规(二维前缀和优化+dp)

    考虑进行 DP,记 dp[i][j] 为 (1, 1) 到 (i, j) 的方案数,此时暴力求dp的复杂度为 O(WHK^2) ,可以通过 70分的数据.注意到转移的本质其实就是子矩阵求和,用二维前缀 ...

  9. MySQL怎么打开explain_MySQL干货之-利用EXPLAIN优化查询

    ​ 在工作中,经常会碰到一些慢查询,Explain可以帮我们更详细的了解MySQL查询的执行计划,用法也很简单Explain 后面跟上SELECT语句即可.执行完之后,会显示一行有多个列的记录,可能很 ...

最新文章

  1. Json返回时间中出现乱码问题的两种解决方法
  2. 【错误记录】国际化报错 ( “xxx“ is not translated in “zh“ (Chinese) )
  3. Java Review - Queue和Stack 源码解读
  4. 以太坊是什么 - 以太坊开发入门指南
  5. android 之 TabHost
  6. Kubernetes详解(十三)——Pod详解
  7. 记录linq.js神器之gorup by 多个字段的方法
  8. nginx做文件服务器
  9. 异速联虚拟打印出来格式不对,如何处理
  10. 网页中播放RTSP(1)
  11. 慕课课程《简明世界史》课堂笔记二
  12. static taint IoT vul location
  13. 高版本node,无法编译程序,删除所有文件
  14. mysql reads sql data_mysql – CREATE FUNCTION错误“此函数没有确定,否SQL或READS SQL DATA”...
  15. python实现问卷网的自动填写详解
  16. LeetCode——线段树
  17. 码神军训(四,五)——代码跳舞军体拳
  18. 【每日早报】2019/08/08
  19. android自定义插值器_自定义缓动插值器,可在Android中实现有意义的动作
  20. #千锋逆战班 Java

热门文章

  1. 基于VGG16网络的花卉识别
  2. 原版软件工程图书阅读指南 刘艺
  3. 蓝牙ibeacon技术实现低成本、高精度室内定位
  4. java投屏 dlna 安卓_dlna投屏软件下载-DLNA投屏 安卓版v1.0.1.1-PC6安卓网
  5. 3-1.1、windows系统?
  6. 高考电子计算机改卷,高考电子阅卷潜规则,看看你的卷子在电脑中成什么样?...
  7. 复信号的傅里叶变换是什么?频谱是什么样子的?3D频谱图长啥样子?
  8. 侯捷C++课程笔记01: 面向对象高级编程(上)
  9. 3dmax2022 python配置使用
  10. gnome3返回经典主题