? 解题记录 ? ? UVa ? ? 筛法 ?    2017-09-14 21:19:03    516    0    0
这是蓝书上一道很经典的数论题,位于P124页,只不过题意有一些细微偏差,但是不影响本题结论的正确性,做法可以看:洛谷P2398。我们只需要进行一次预处理,下底分块,保留SQRT(n)的查询就行了。虽然时间上Vjudge垫底,但是毕竟我弱啊……,下面是一段代码。#include<cstdio> #include<algorithm> using namespace std; const int maxn = 4e6 + 5; long long f[maxn]; int&n
? 解题记录 ? ? 洛谷 ? ? 筛法 ?    2017-09-14 12:00:40    264    0    0
题目描述for i=1 to n for j=1 to n  sum+=gcd(i,j)给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式输入格式:   n   输出格式:   sum   输入输出样例输入样例#1:2 输出样例#1:5 说明数据范围 30% n<=3000 60% 7000<=n<=7100 100% n<=100000 题目十分奇特,我们知道1e6的数据n^2 log n 卡不死你也能卡爆你。我们需要将复杂度控制在O(n log n)以内。我们这样想,首先这些GCD可以被重新分
? 解题记录 ? ? 杂OJ ? ? 动态规划 ?    2017-09-13 21:27:22    406    0    0
有一个字符串S,求S最少可以被划分为多少个回文串。 例如:abbaabaa,有多种划分方式。 a|bb|aabaa - 3 个回文串 a|bb|a|aba|a - 5 个回文串 a|b|b|a|a|b|a|a - 8 个回文串 其中第1种划分方式的划分数量最少。 Input输入字符串S(S的长度<= 5000)。Output输出最少的划分数量。Sample Input abbaabaaSample Output 3​首先我们看见回文串问题可以模仿Manacher向空隙中填满'#'符号。然后可以推知DP转移方程dp[i + j] = min(dp[i + j], dp[i - j
? 解题记录 ? ? 洛谷 ? ? 树状数组 ? ? 差分 ? ? 模板 ?    2017-09-09 21:08:49    892    0    0
题目描述如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式输入格式:   第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来M行每行包含2或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x y k 含义:将区间[x,y]内每个数加上k 操作2: 格式:2 x 含义:输出第x个数的值   输出格式:   输出包含若干行整数,即为所有操作2的结果。   输入输出样例输入样例#1:5 5
? 解题记录 ? ? 洛谷 ? ? 筛法 ?    2017-09-09 20:52:39    411    0    0
题目背景题目名称是吸引你点进来的 实际上该题还是很水的 题目描述区间质数个数 输入输出格式输入格式:   一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间   输出格式:   对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line   输入输出样例输入样例#1:2 5 1 3 2 6 输出样例#1:2 Crossing the line 说明【数据范围和约定】 对于20%的数据 1<=n<=10 1<=m<=10 对于100%的数据 1<=n<=1000 1
? 解题记录 ? ? 洛谷 ? ? 可持久化数据结构 ? ? 线段树 ? ? 模板 ?    2017-09-09 19:23:12    482    0    0
题目背景这是个非常经典的主席树入门题——静态区间第K小 数据已经过加强,请使用主席树。同时请注意常数优化 题目描述如题,给定N个正整数构成的序列,将对于指定的闭区间查询其区间内的第K小值。 输入输出格式输入格式:   第一行包含两个正整数N、M,分别表示序列的长度和查询的个数。 第二行包含N个正整数,表示这个序列各项的数字。 接下来M行每行包含三个整数l, r, kl,r,k , 表示查询区间[l, r][l,r]内的第k小值。   输出格式:   输出包含k行,每行1个正整数,依次表示每一次查询的结果   输入输出样例输入样例#1:5&nbs
? 解题记录 ? ? 洛谷 ? ? 线段树 ? ? 模板 ?    2017-09-09 17:31:17    417    0    0
题目描述如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式输入格式:   第一行包含三个整数N、M、P,分别表示该数列数字的个数、操作的总个数和模数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来M行每行包含3或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x y k 含义:将区间[x,y]内每个数乘上k 操作2: 格式:2 x y k 含义:将区间[x,y]内每个数加上k 操作3: 格式:3 x y 含义:输出区间[x,y]内每个数的和对P取模所得
? 解题记录 ? ? SPOJ ? ? 后缀自动机 ? ? 补档计划第一期 ?    2017-08-31 20:19:13    545    0    0
LCS - Longest Common Substringno tags  A string is finite sequence of characters over a non-empty finite set Σ. In this problem, Σ is the set of lowercase letters. Substring, also called factor, is a consecutive sequence of characters occurrences at least once in a string. Now your task is si
? 解题记录 ? ? 洛谷 ? ? 欧拉函数 ? ? 筛法 ?    2017-08-22 11:23:59    342    0    0
题目描述作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。 现在,C君希望你告诉他队伍整齐时能看到的学生人数。 输入输出格式输入格式:  共一个数N   输出格式:  共一个数,即C君应看到的学生人数。   输入输出样例输入样例#1:4 输出样例#1:9 说明【数据规模和约定】 对于 100% 的数据,1 ≤ N ≤ 40000 考虑对于一个矩形,站在左下角如何才能看到右上角的人?不难发现,如果有遮挡
? 解题记录 ? ? 洛谷 ? ? 扩展欧几里得 ? ? 模板 ?    2017-08-21 17:17:21    563    0    0
题目背景这是一道模板题 题目描述给定n,p求1~n中所有整数在模p意义下的乘法逆元。 输入输出格式输入格式:   一行n,p   输出格式:   n行,第i行表示i在模p意义下的逆元。   输入输出样例输入样例#1:10 13 输出样例#1:1 7 9 10 8 11 2 5 3 4 说明1 \leq n \leq 3 \times 10 ^ 6, n < p < 200005281≤n≤3×10​6​​,n<p<20000528 输入保证 pp 为质数。 突然觉得之前太傻了……居然拿逆元硬转成了线