自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小蒟蒻yyb的博客

我真的很水,我只是小蒟蒻。。。

  • 博客(97)
  • 收藏
  • 关注

原创 【Luogu4137】Rmq Problem/mex (莫队)

题面洛谷题解裸的莫队 暴力跳ansans就能ACAC考虑复杂度有保证的做法 每次计算的时候把数字按照大小也分块 每次就枚举答案在哪一块里面就好#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#incl

2018-01-27 10:45:36 219

原创 【BZOJ4199】【NOI2015】品酒大会(后缀数组)

题面BZOJ Uoj 洛谷题解考虑最裸的暴力 枚举每次的长度 以及两个开始的位置 检查以下是否满足条件,如果可以直接更新答案 复杂度O(n3)O(n^3) 15~2015~20分#include#include#include#include#include#include#include#include#include#includeusi

2018-01-27 09:55:34 250

原创 【BZOJ4650】【NOI2016】优秀的拆分(后缀数组)

题面BZOJ Uoj题解如果我们知道以某个位置为开始/结尾的AAAA串的个数 那就直接做一下乘法就好 这个怎么求? 枚举一个位置 枚举串的长度 直接暴力算就好啦 至于是否可行,用SASA求lcplcp就好啦 这样就是9595分 NOI这么好拿部分分的???#include#include#include#include#include#inclu

2018-01-26 10:01:44 345

原创 【BZOJ4698】Sandy的卡片(后缀数组)

题面讨厌权限题!!! 因为我交不了。。。 洛谷题面做完差之后就是裸的最长公共子串 没了。。 数组往死里开吧。。。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#include<map>#incl

2018-01-25 11:19:33 236

原创 【SPOJ】Distinct Substrings/New Distinct Substrings(后缀数组)

题面Vjudge1 Vjudge2题解要求的是串的不同的子串个数 两道一模一样的题目 其实很容易: 总方案-不合法方案数对于串进行后缀排序后 不合法方案数=相邻两个串的不合法方案数的和 也就是height" role="presentation">heightheightheight的和 所以(8)ans=n(n+1)2−∑i=1len

2018-01-25 10:53:16 279

原创 【hihoCoder1419】重复旋律4(后缀数组)

题面hihoCoder题解求重复次数最多的连续字串假如知道了这个连续子串的开始位置 并且知道了它的长度 那么,此时我们就通过lcp(i,i+len)lcp(i,i+len)来进行比较即可但是,如果枚举长度和开始的位置的话 尽管lcplcp通过stst表可以O(1)O(1)查询 但是这个枚举的复杂度是O(n2)O(n^2)的 很显然,需要更快所以,枚举了长度lenlen之后 我们只需要考虑

2018-01-24 23:27:34 386

原创 【BZOJ1006】神奇的国度(弦图)

题面BZOJ题解直接参考弦图的做法#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#include<map>#include<vector>#include<queue>using namespace

2018-01-24 22:31:28 213

原创 弦图

考试正好有一道题目可以用弦图的方法来做 所以就正好看一下CDQCDQ的论文 论文戳我看 把中间的一些定义啥的直接蒯(手打)下来了子图: 从一个图中随意选一些点,一些边组成的图诱导子图: 从一个图的点集中选择一个子集,以及链接了子集中点的所有的边, 组成的子图团: 一个子图,且是完全图极大团: 不是别的团的子图的团最大团: 点数最多的团最小染色: 用最少的

2018-01-24 22:17:11 429

原创 【BZOJ2946】公共串(后缀数组)

题面权限题。。。 只有CJOJ题面啦Description给出几个由小写字母构成的单词,求它们最长的公共子串的长度。 任务: 读入单词,计算最长公共子串的长度Input第一行是整数 n,1<=n<=5,表示单词的数量。 接下来n行每行一个单词,只由小写字母组成,单词的长度至少为1,最大为2000。Output仅一行,一个整数,最长公共子串的长度。Sample Input3 abcb bc

2018-01-24 10:12:25 217

原创 【POJ1743】Musical Theme(后缀数组)

题面洛谷,这题是弱化版的,O(n2)dpO(n^2)dp能过 hihoCoder 有一点点区别 POJ 多组数据题解要求的是最长不可重叠重复子串 也就是找两个最长的相同子串 使得它们不相交先求出SA,heightSA,height 考虑一下如果两个子串相同 那么也就是两个后缀的前缀相同还是一样吧。 二分答案,长度为KK 那么,现在要找的就是连续长度不小于KK的heightheight

2018-01-23 17:19:37 200

原创 【BZOJ1717】产奶的模式(后缀数组)

题面权限题 hihocoder 洛谷题解hihocoderhihocoder里面讲的非常好了这题要求的就是最长可重叠重复K次子串所谓相同的子串 我们可以理解为如果有两个后缀的前缀相同 那么就有一个相同的子串如果两个后缀的前缀相同 那么他们在SASA中的排名是接近的再说清楚点 如果两个后缀的前缀相同 必然是在后缀排序中一段连续的后缀都拥有这个相同的前

2018-01-23 17:10:51 182

原创 【POJ2774】Long Long Message(后缀数组)

题面VjudgeDescriptionLittle cat在Byterland的首都读物理专业。这些天他收到了一条悲伤地信息:他的母亲生病了。担心买火车票花钱太多(Byterland是一个巨大的国家,因此他坐火车回家需要16小时),他决定只给母亲发短信。 Little cat的家境并不富裕,因此他经常去营业厅查看自己发短信花了多少钱。昨天营业厅的电脑坏掉了,打印出两条很长的信息。

2018-01-23 14:46:10 208

原创 SA 后缀数组

首先一定要确定SASA是个什么东西 SA[i]SA[i]表示的是排名为ii的后缀是哪一个 至于后缀ii的排名是多少,那个是rank[i]rank[i]当然啦 最最最难懂的就是基数排序 要是不用基数排序,每次对于一个二元组直接sortsort一下 这样的复杂度是O(nlog2)O(nlog^2)对于二元组的基数排序应该是这样做的: 首先把所有元素按照最后一维丢到依次对应的桶里

2018-01-23 12:54:27 300

原创 【Luogu2444】病毒(AC自动机)

题面洛谷题解如果存在一个无限长的串 证明可以在ACAC自动机上找到一个环 然后在上面可以无限跳所以构建ACAC自动机 在上面跑dfsdfs就好啦#include#include#include#include#include#include#include#include#include#includeusing namespace std;

2018-01-23 08:17:29 327

原创 【BZOJ2959】长跑(Link-Cut Tree,并查集)

题面BZOJ题解如果保证不出现环的话 妥妥的LCTLCT傻逼题现在可能会出现环 环有什么影响? 那就可以沿着环把所有点全部走一遍吧 所以,相当于把环看成一个点来搞一搞所以,维护一个并查集 记录一下每个点被缩成了哪个点 然后再用LCTLCT维护缩点后的树就行啦#include<iostream>#include<cstdio>#include<cstdlib>#include<cst

2018-01-22 22:00:22 204

原创 【BZOJ2006】超级钢琴(主席树,优先队列)

题面BZOJ题解既然是一段区间 首先就要变成单点 所以求一个前缀和这个时候贪心很明显了: 枚举每一个点和可以和它组成一段的可行的点 全部丢进一个堆里面 取出最大的KK个就行了但是,很显然,我们做不到都取出来 所以,考虑怎么优化这个过程每次堆里面对于每个点就

2018-01-22 20:42:37 224

原创 【BZOJ4869】相逢是问候(线段树,欧拉定理)

题面BZOJ题解根据欧拉定理递归计算(类似上帝与集合的正确用法) 所以我们可以用线段树维护区间最少的被更新的多少次 如果超过了φ\varphi的限制 就不用再计算了 如果需要计算就每次暴力算 这样的复杂度O(nlog2)O(nlog^2)#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#incl

2018-01-22 17:26:44 207

原创 【BZOJ4530】大融合(Link-Cut Tree)

题面讨厌权限题!!! Loj链接题目描述小强要在 N个孤立的星球上建立起一套通信系统。这套通信系统就是连接 N个点的一个树。这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够联通的树上路过它的简单路径的数量。例如,在上图中,现在一共有五条边。其中,(3,8)这条边的负载是 6,因为有六条简单路径 2−3−8, 2−3−8−7, 3−8, 3−8−7, 4−3−8, 4−3

2018-01-22 15:32:09 221

原创 【BZOJ2434】阿狸的打字机(AC自动机,树状数组)

先写个暴力: 每次打印出字符串后,就插入到TrieTrie树中 搞完后直接搭ACAC自动机 看一看匹配是怎么样的: 每次沿着ACAC自动机走,在每一个节点都跳failfail指针 如果有xx串的末节点,就给答案+1+1 这样的话没有必要存下每个串 只要给ACAC自动机存一个父亲节点 记录一下每个串的结束位置 倒着往上跳就可以了 这样能够拿到4040分#include<iostre

2018-01-20 15:47:26 195

原创 【BZOJ2186】沙拉公主的困惑(数论)

题面BZOJ题解考虑答案是啥 先假设n=mn=m 现在求的就是φ(m!)\varphi(m!) 但是现在n!n!是m!m!的若干倍 我们知道 gcd(x,y)=gcd(x+ky,y)gcd(x,y)=gcd(x+ky,y) 所以,相当于 每隔m!m!,答案增长的值都是φ(m!)\varphi(m!) 所以 我们可以得出 ans=n!m!φ(m!)ans=\fra

2018-01-20 11:54:47 227

原创 【BZOJ3671】【NOI2014】随机数据生成器(贪心)

题面BZOJ题解前面的模拟 真的就是语文阅读理解题目 理解清楚题目意思然后就会发现要求的就是一个贪心 从小往大枚举,检查当前数能不能选 如果能选 就会限制其他行的左右能够到达的范围 暴力修改一下 然后就很愉快的ACAC了这题别的不卡 卡空间,卡格式 我也是醉了#include<iostream>#include<cstdio>#include<cstdlib>#include

2018-01-19 21:49:33 192

原创 【Luogu1501】Tree(Link-Cut Tree)

题面洛谷题解LCTLCT版子题 看到了顺手敲一下而已 注意一下,别乘爆了#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<set>#include<map>#include<vector>#include<q

2018-01-19 20:32:14 165

原创 【BZOJ3884】上帝与集合的正确用法(欧拉定理,数论)

题面BZOJ题解我们有欧拉定理: 当b⊥pb \perp p时 ab≡ab%φ(p)(modp)a^b≡a^{b\%\varphi(p)}\pmod p 否则 当b≥φ(p)b≥\varphi(p)时 ab≡ab%φ(p)+φ(p)(modp)a^b≡a^{b\%\varphi(p)+\varphi(p)}\pmod p 这道题里面22的无穷次方显然会比φ(p)\varphi(p)大 所以

2018-01-19 19:52:49 231

原创 【BZOJ3530】数数(AC自动机,动态规划)

题面BZOJ题解很套路的ACAC自动机+DPDP 首先,如果长度小于NN 就不存在任何限制 直接大力DPDP 然后强制限制不能走到带有标记的点上面如果长度恰好为NN的长度 那么,要考虑是否恰好卡在范围里面 于是DPDP状态多记一维 表示是否卡在范围里面最后求一下和就行啦#include<iostream>#include<cstdio>#include<cstdlib>#incl

2018-01-19 19:27:46 254

原创 【BZOJ1212】L语言(AC自动机)

题面BZOJ题解很自然的,既然要匹配单词,那就全部都丢到ACAC自动机里面去现在想想怎么匹配 先是ACAC自动机正常的匹配 如果此时这个位置能够匹配上一个串 我们就需要判断一下这个串覆盖到这个文本串中 它的前一位是否恰好被覆盖 如果有的话 我们也不能直接计算 因为可能是其他不同的串拼起来的 所以,就开一个数组差分 表示当前位置可以匹配最后,对于每个文本串 从前往后扫一遍差分数组

2018-01-18 21:14:51 277

原创 【BZOJ2037】Sue的小球(动态规划)

题面BZOJ题解莫名想到这道题目 很明显是一样的 设f[i][j][0/1]f[i][j][0/1]表示已经接到了i~ji~j这一段的小球 当前在ii或者在jj的最小费用 这个费用是随着时间增长,没有被接到的小球产生的这样就可以避免存下时间 提前就把费用减去#include<iostream>#include<cstdio>#include<cstdlib>#include<cstr

2018-01-18 19:33:38 296

原创 【BZOJ1899】午餐(动态规划)

题面BZOJ题解我太弱了 这种dpdp完全做不动。。首先,感性理解一些 如果所有人都要早点走, 那么,吃饭时间长的就先吃 吃饭时间短的就晚点吃 所以,按照吃饭时间排序我们不难得出一个每个人吃完饭的时间 之和前面所有人的打饭的时间和有关 所以 f[i][j][k]f[i][j][k]表示当前做到第ii个人,第一列,第二列前面的人的打饭时间之和分别为j,kj,k时,最后一个人吃完饭的最小

2018-01-18 16:39:35 254

原创 【BZOJ1009】GT考试(KMP算法,矩阵快速幂,动态规划)

题面BZOJ题解看到这个题目 化简一下题意 长度为nn的,由0~90~9组成的字符串中 不含串ss的串的数量有几个很显然,如果组成的字符串和ss串做KMPKMP的匹配的话 是不能匹配到最后一位的所以,我们想到一个很显然的方程 f[i][j]f[i][j]表示当前做了第ii位,在ss串中匹配到了第jj位 每次枚举下一位放的数字 以及每一位的位置 相当于做KMP

2018-01-18 15:41:15 254

原创 【BZOJ1040】骑士(动态规划)

题面BZOJ题解对于每一组厌恶的关系 显然是连边操作如果是一棵树的话 很显然的树型dpdp 但是,现在相当于有很多个基环 也就是在一棵树的基础上再加了一条边 这个时候怎么办, 暴力拆掉基环(拆掉任意一条边) 跑两遍dpdp 计算出强制不选两个点中某一个的最大值 此时就是这个基环的最大值 (不用拆掉所有的边,因为只要拆掉一条边之后可以用树型dpdp来控制)可能存在多个联通块 所以

2018-01-18 12:16:54 350

原创 【BZOJ1969】航线规划(Link-Cut Tree)

题面BZOJ题解删边操作 套路呀 离线读入倒过来做 变成加边操作现在考虑怎么确定两点直接的关键路径条数 如果是一棵树,那么每条边都是关键路径 在一棵树的基础上 如果连接了两点 那么,两点之间原来的路径一定都不是关键路径 所以,弄一个LCTLCT 每次维护加边#include<iostream>#include<cstdio>#include<cstdlib>#include<

2018-01-17 22:01:01 422

原创 【BZOJ4653】【NOI2016】区间(线段树)

题面BZOJ题解NOINOI良心送分题?? 既然是最大长度减去最小长度 莫名想到那道反复减边求最小生成树 从而求出最小的比值所以这题的套路是一样的按照长度排序之后 依次加入 如果当前有被覆盖了超过mm次的点 就从前面开始,依次把线段拿走 每次更新一下答案就好啦#include<iostream>#include<cstdio>#include<cstdlib>#include<c

2018-01-17 21:11:49 204

原创 我也不知道什么是"莫比乌斯反演"和"杜教筛"

Part0最近一直在搞这些东西 做了将近20道题目吧 也算是有感而发 写点东西记录一下自己的感受如果您真的想学会莫比乌斯反演和杜教筛,请拿出纸笔,每个式子都自己好好的推一遍,理解清楚每一步是怎么来的,并且自己好好思考。Part1莫比乌斯反演莫比乌斯反演啥都没有,就只有两个式子(一般只用一个) 原来我已经写过一次了,再在这里写一次 就只写常用的那个吧基本的公式...

2018-01-17 20:10:21 11037 13

原创 【BZOJ3930】选数(莫比乌斯反演,杜教筛)

题面给定n,K,L,Rn,K,L,R 问从L~RL~R中选出nn个数,使得他们gcd=Kgcd=K的方案数题解首先就把区间缩小一下 全部缩小KK倍,不能直接除,

2018-01-17 16:51:56 262

原创 【BZOJ3529】数表(莫比乌斯反演,树状数组)

题解首先不管AA的范围的限制 要求的东西是 ∑i=1n∑j=1mσ(gcd(i,j))\sum_{i=1}^n\sum_{j=1}^m\sigma(gcd(i,j)) 其中σ(x)\sigma(x)表示xx的约数之和约数之和是一个积性函数,可以线性筛 具体的做法请参考皮皮亮的Blog根据常见的套路 把gcdgcd给提出来 ∑d=1nσ(d)∑i=1n∑j=1m[gcd(i,j)=d]\s

2018-01-17 15:24:26 221

原创 【BZOJ4652】循环之美(莫比乌斯反演,杜教筛)

题解到底在求什么呢。。。 首先不管他KK进制的问题啦,真是烦死啦所以,相当于有一个分数ij\frac{i}{j} 因为值要不相等 所以有i⊥ji \perp j,也就是gcd(i,j)=1gcd(i,j)=1现在考虑KK进制 先从熟悉的1010进制入手 如果一个最简分数是纯循环小数 我们知道,他的分母里面不含2,52,5 而且,巧极了10=2∗510=2*5 于是乎,YYYY一下

2018-01-17 10:01:41 377

原创 【Luogu3768】简单的数学题(莫比乌斯反演,杜教筛)

题面洛谷 求∑i=1n∑j=1nijgcd(i,j)求\sum_{i=1}^n\sum_{j=1}^nijgcd(i,j) n=109 n题解很明显的把gcdgcd提出来 ∑d=1nd∑i=1n∑j=1nij[gcd(i,j)==d]\sum_{d=1}^nd\sum_{i=1}^n\sum_{j=1}^nij[gcd(i,j)==d] 习惯性的提出来 ∑d=1nd3∑i=1

2018-01-16 19:11:55 356

原创 【BZOJ4916】神犇和蒟蒻(杜教筛)

题面BZOJ 求 ∑i=1nμ(i2)  和 ∑i=1nϕ(i2)\sum_{i=1}^n\mu(i^2)\ \ 和\ \sum_{i=1}^n\phi(i^2) 其中n<=109n<=10^9题解第一问 搞笑的 不会做? 算了。。 还是说一下: 想想μ(x)\mu(x)是怎么算的??? 既然是i2i^2,每个因数的个数一定不会是11 所以除了μ(1)\mu(1)外一定都是00

2018-01-16 16:30:22 283

原创 【BZOJ3944】Sum(杜教筛)

题面求∑i=1nμ(i)和∑i=1nϕ(i)\sum_{i=1}^n\mu(i)和\sum_{i=1}^n\phi(i) 范围:n<231n<2^{31} 令S(n)=∑i=1nμ(i)S(n)=\sum_{i=1}^n\mu(i) 随便找个函数gg和μ\mu做狄利克雷卷积 (g∗μ)(i)=∑d|iμ(d)g(id)(g*\mu)(i)=\sum_{d|i}\mu(d)g(\frac{i}

2018-01-16 11:59:12 304

原创 【BZOJ4569】萌萌哒(并查集,倍增)

题面BZOJ 题意: 有一个长度为nn的数 给定mm个限制条件 每次限制l1~r1l1~r1与l2~r2l2~r2是相同的 求出方案数题解如果每次给定的限制都是告诉你某一位和某一位是相同的 那么,我们的做法是: 并查集,然后计算有kk个联通块 ans=9∗10k−1ans=9*10^{k-1}但是,现在每次给定的都是一个区间 我们不太可能暴力的把区间之间的位置两两进行一次合并 所

2018-01-15 17:24:27 167

原创 【BZOJ2820】YY的GCD(莫比乌斯反演)

题面讨厌权限题!!!提供洛谷题面题解单次询问O(n)O(n)是做过的一模一样的题目 但是现在很显然不行了, 于是继续推 ans=∑d=1n[d_is_prime]∑i=1n/d[nid][mid]ans=\sum_{d=1}^n[d\_is\_prime]\sum_{i=1}^{n/d}[\frac{n}{id}][\frac{m}{id}] 老套路了 令T=idT=id ans=∑T=

2018-01-15 12:35:07 268

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除