3374专题

hdu 3374 String Problem (最小表示法+KMP)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=3374 1 题目要求给定一个字符串求出最小和最大表示的rank和出现的times。 利用最小/大表示法求出位置,然后利用KMP,next求出循环节,就能计算次数。 代码: #include <stdio.h>#include <string.h>const int N = 1000005;i

#树状数组,线段树#洛谷 3374 【模(mú)板】树状数组 1

树状数组单点修改和区间查询不想多讲 #include <cstdio>#include <cctype>using namespace std;int a[500001],n,m;int in(){char c=getchar(); int ans=0,f=1;while (!isdigit(c)&&c!='-') c=getchar();if (c=='-') f=-f,c=getch

【树状数组】洛谷_3374 树状数组1

题意 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 思路 用树状数组,然后我们就可以求出它们的前缀和,利用前缀和我们就也可以求出x到y的区间和。 代码 #include<cstdio>int n,m,tree[500001],z,x,y;int lowbit(int x){return x&-x;}void insert(int

HDIU 3374 String Problem(字符串最小最大表示法模板+kmp)

String Problem Problem Description Give you a string with length N, you can generate N strings by left shifts. For example let consider the string “SKYLONG”, we can generate seven strings: String Ran

洛谷3374 树状数组1

题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来M行每行包含3或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x k 含义:将第x个数加上k 操作2: 格式:

数据结构实验:SDUT2482二叉排序树+3374平衡二叉树

SDUT3374 平衡二叉树的思路和代码参考清华版《数据结构》,但是对于其中的LR型以及RL型的调整不太明白。虽然书上没有给出右平衡调整的代码但是可以根据左平衡的对称性写出来。 #include<cstdio>#include<cstring>#define LH +1#define RH -1#define EH 0using namespace std;const int