自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Pengwill's Blog

一百年太短,只争朝夕

  • 博客(32)
  • 资源 (2)
  • 收藏
  • 关注

原创 【练习】BZOJ4241: 历史研究(回滚莫队)

题意给定一个长度为nnn的序列,并提出qqq个询问,每次询问要求回答区间 [l,r][l,r][l,r] 内所有的权值与其出现次数的积的最大值。题解我一看,区间问题,无修改可以离线,上莫队妥妥的,但是仔细一想,当区间扩充时,可以O(1)O(1)O(1)的求出新区间答案,但是当区间缩小时,就不能O(1)O(1)O(1)做到了,莫队算法的复杂度不能得到保证。这时候就可以考虑回滚莫队...

2018-07-31 21:15:07 236

原创 【练习】CodeForces282E Sausage Maximization (01字典树)

题意翻译过来题意大致如下: 给定一个长度为nnn的序列,请找出一个不相交的前缀和后缀,并且这个前缀和后缀异或值最大。输出这个最大值。 注意前缀和后缀可能为空(也就是都为0)。题解首先一看数据范围,就知道要开long long,如果暴力寻找,复杂度肯定是说不过去的。求解异或问题可以考虑01字典树。 我们可以枚举每一个后缀,考虑这个能与这个后缀异或的到最大值的前缀。对于这个后缀的每一...

2018-07-31 15:49:40 146

原创 【练习】CodeForces86E Powerful array (莫队算法)

题意翻译过来大意如下 给定长度为nnn的序列,ttt个询问。每个询问给定区间[l,r][l,r][l,r]。并定义KsKsK_s表示区间内值为sss的数字个数,请对于每个询问回答K2s∗sKs2∗sK_s^2 * s的值。题解没有修改操作,考虑离线做法,又因为对于已知区间,可以O(1)O(1)O(1)求出相邻区间,所以用莫队。 我写的比较挫,时间压线过的。。代码...

2018-07-31 15:38:14 157

原创 【练习】BZOJ 2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)

题意作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬。 你的任务便是告诉小Z,他有多大的概率抽到两...

2018-07-31 15:33:11 131

原创 【练习】BZOJ1588 [HNOI2002]营业额统计(Splay/Set)

题意营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。...

2018-07-15 17:17:44 208

原创 【算法学习】Splay入门

Splay变量声明基本操作clearget操作update操作复杂操作rotate操作Splay操作insert操作find操作findx操作next & pre操作del操作Splay变量声明f[i]f[i]f[i] 表示iii的父节点 ch[i][0]ch[i][0]ch[i][0]表示iii的左儿子,ch[i][1]...

2018-07-11 21:06:03 355

原创 【练习】POJ - 3461 Oulipo(KMP/字符串Hash)

题意PJ的女朋友是一个书法家,喜欢写一些好看的英文书法。有一天PJ拿到了她写的纸条,暗示要送给他生日礼物。PJ想知道自己想要的礼物是不是就是她送的,于是想看看自己想要的在纸条中出现了多少次。 题解KMP注意如果匹配之后K值的选择。由于匹配的串之间是可以有重叠的部分的,所以这里发生匹配之后要当发生适配对K进行回退,这样就能保证在主串指针不回退的情况下完成匹配。不妨以样例为例:...

2018-07-10 20:24:02 326

原创 【练习】HDU - 2087 剪花布条(KMP/字符串Hash)

题意一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 题解KMP如果匹配成功,指针不用回退。Hash分别算出文本串和模式串的hash值,再根据子串进行计算即可。代码KMP#include<bits/stdc++.h>using na...

2018-07-10 19:19:26 406

原创 【算法学习】KMP入门

KMP算法入门next数组的求解next数组的含义next数组求解代码如何进行匹配KMP算法入门KMP解决的是模式串SSS和文本串TTT之间的匹配问题。传统和暴力算法,在复杂度方面不够优秀,根本原因在于对模式串没有的规律没有加以利用,导致进行了多余的匹配。而KMP算法的关键也在于nextnextnext数组,求解出了模式串nextnextnext数组,也就求解出...

2018-07-09 21:59:28 160

原创 【滚动训练】1270: [BeijingWc2008]雷涛的小猫(DP)

题意雷涛的小猫雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的)。 在他的照顾下,小猫很快恢复了健康,并且愈发的活泼可爱了。可是有一天,雷涛下课回到寝室,却发现小猫不见了!经过一番寻找,才发现她正趴在阳台上对窗外的柿子树发呆…在北京大学的校园里,有许多柿子树,在雷涛所在的宿舍楼前,就有N棵。并且这N棵柿子树每棵的高度都是H。冬天的寒冷...

2018-07-09 19:07:22 171

原创 【滚动训练】BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊(分块)

题意某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,Lostmonk...

2018-07-09 17:52:08 214

原创 【滚动训练】LOJ6283. 数列分块入门 7 (分块)

题意给出一个长为 nnn 的数列,以及 nnn 个操作,操作涉及区间乘法,区间加法,单点询问。题解主要考虑如何维护加法和乘法标记。 考虑一般情况,设任意块内中任意元素为xxx,所携带的加法标记为aaa,所携带的乘法标记为mmm。现在对区间进行加法,加数为a′a′a',原先的值为mx+amx+amx+a,进行加法后的值为mx+a+a′mx+a+a′mx+a+a',所以只需要更新加...

2018-07-08 14:48:36 351

原创 【套题】牛客练习赛21

黑妹的游戏I题意黑妹最近在玩一个有趣的游戏,游戏规则是这样的: 刚开始黑板上有三个不同的初始数字,然后黑妹每一次可以选择黑板上的两个不同的数字,然后计算出这两个不同数字之差的绝对值,如果黑板上没有这个数字,那么就把这个新数字写在黑板上。 黑妹已经玩腻了这个游戏,现在黑妹想知道她最多能添加多少个数字。题解计算gcd。 如果gcd为1,那么可以制造出max(a,b,c)−3m...

2018-07-08 00:06:47 354

原创 【滚动训练】LOJ6282. 数列分块入门 6 (分块)

题意给出一个长为 nnn 的数列,以及 nnn 个操作,操作涉及单点插入,单点询问,数据随机生成。题解我直接用的vector来维护。这里需要用到块重构,即进行插入操作的过多,会导致某一块的数量非常的多。这样会使得块之间不平衡,复杂度不能得到保证。这时候就要对所有的元素重新分块,以保证复杂度。代码#include<bits/stdc++.h>using name...

2018-07-07 18:17:42 446

原创 【滚动训练】LOJ6281. 数列分块入门 5 (分块)

题意给出一个长为 nnn 的数列 a1…ana1…ana_1\ldots a_n​​,以及 nnn 个操作,操作涉及区间开方,区间求和。题解维护区间和。对于区间开方操作,维护区间最小值,若区间最小值小于等于1,那么就不需要进行操作。否则暴力更新区间最小值和区间和。代码#include<bits/stdc++.h>using namespace std;t...

2018-07-07 15:33:19 246

原创 【滚动训练】BZOJ.1003 [ZJOI2006]物流运输(最短路+区间DP)

题意物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。但是修改路线是—件十分麻烦的事情,会带来额外的成本。因此物流公司希望能够订一个n天的运输计划,使得...

2018-07-06 13:54:10 188

原创 【滚动训练】Vijos1514 天才的记忆 (分块/RMQ)

题意询问区间最大值题解RMQ问题,使用ST表或者分块。 分块居然比ST表跑的还快你敢信。代码ST表#include <cstdio>#include <algorithm>#define rep(i,a,b) for (int i = a; i<=b; ++i)using namespace std;const int n...

2018-07-05 13:31:24 298

原创 【滚动训练】LOJ 6280. 数列分块入门 4(分块)

题意给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,区间求和。题解维护两个标记,一个是区间和,一个是tag表示该区间总共打了多少加法。代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int nmax = 5e4 + 100;const int I...

2018-07-05 12:14:05 261

原创 POJ2104 K-th Number(主席树)

题意给出n个数字的数组,和m个询问,每次询问区间[l,r][l,r][l,r]中第KKK大的数是多少。题解主席树经典的例题,详解参见主席树快速入门。 注意需要离散化就好了。代码#include<cstdio>#include<algorithm>#include<vector>#include<cstring>u...

2018-07-05 00:24:03 188

原创 【算法学习】主席树入门

主席树入门原理主席树入门主席树,也叫做可持久化线段树,准确来说,应该叫做可持久化权值线段树,因为其中的每一颗树都是一颗权值线段树。所谓权值线段树,就是指线段树的叶子节点保存的是当前值的个数。这样说起来比较抽象,下面用具体例子来简单阐述。如有数列:2 1 2 5 1 1 1 3,不难统计出,数列中数字1出现了4次,数字2出现了2次,数字3、数字5都出现了1次,对于这...

2018-07-04 23:30:03 20689 9

原创 【滚动训练】LOJ6279. 数列分块入门 3 (分块)

题意给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,询问区间内小于某个值 x 的前驱(比其小的最大元素)。题解这道题和数列分块入门2很类似,因为要询问区间小于x的前驱,暴力查找肯定是不行的。自然想到如果区间内是有序的话,就可以在块内二分了。维护有序可以套用上一题的方案,即块内暴力更新的时候sort,或者是使用set自动维护有序。方案一 块内sort每次对暴力更新的...

2018-07-04 21:30:47 377

原创 【算法学习】字符串Hash进阶

这回主要看看出题人卡Hash的心机,图片均转载自Hash更进一步(Hash字符串——BDKRHash)。

2018-07-03 21:42:27 361

原创 【滚动训练】JOYOI 1068 STR (基于Hash+二分的LCP求法)

题意给你两个串A,B,可以得到从A的任意位开始的子串和B匹配的长度。 给定K个询问,对于每个询问给定一个x,求出匹配长度恰为x的位置有多少个。 N,M,K<=200000 题解KMP是正解,这里就用Hash+二分水一下,复杂度nlognnlognnlogn。 具体做法如下: 首先将A、B两个串全部用同一种Hash方法进行Hash,然后需要统计匹配iii个字符有多少种情况。...

2018-07-03 21:37:49 391

原创 【算法学习】分块算法入门

分块算法入门如何写分块(一)维护内容每一块的个数块的总数目块的左右端点位置每个元素所属于的块号完整代码如何写分块(二)思维的转换如何训练分块算法入门所谓分块算法,就是讲一个序列分成若干块,维护块内的信息。为了保证一定的时间复杂度,所以对于一个nnn个元素组成的数组,将其分为n−−√n\sqrt{n}块,每块也有n−−√n\sqrt{n}个元素...

2018-07-03 16:45:33 7899 3

原创 【滚动训练】 LOJ 6278. 数列分块入门 2 (分块)

题意给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,询问区间内小于某个值 x 的元素个数。题解分块由于每块内有n−−√n\sqrt{n}个元素,在暴力的程度上保证了复杂度。于是我们主要考虑的是如何维护块内信息。 根据分块入门 1的经验,需要一个tag来标记对整个块进行的操作和为多少。由于这道题要进行计数,于是问题就转换成如何快速统计区间的数目问题。方案一...

2018-07-03 14:38:25 579

原创 LOJ 6277. 数列分块入门 1 (分块)

题意给出一个长为 nnn 的数列,以及 nnn 个操作,操作涉及区间加法,单点查值。题解分块,每次更新的话对块两侧不完整的地方暴力更新,对完整的块内部分打标记,查询时直接返回数据值和标记部分的值即可。代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int nma...

2018-07-03 01:35:35 249

原创 HDU - 4300 Clairewd’s message (字符串Hash)

题解给定两个字符串,第一个字符串为字符串的转换规则,(如第二个例子,当第二个字符串中出现q字符后,就要把它变为a字符,即q对应a,w对应b)。第二个字符串,前一部分为密文,就是需要你按照转换规则,转换的字符串,后一部分为原文。但是原文的长度不知道,也可能原文给的不全,但是密文是完整的。需要你补全第二个字符串。求出最短的字符串。易知如果存在密文和明文对应,密文长度一定大于等于明文长度,并...

2018-07-02 18:41:59 239

原创 HDU - 4821 String (字符串Hash)

题解给出M和L,和一个字符串S。要求找出S的子串中长度为L*M,并且可以分成M段,每段长L,并且M段都不相同的子串个数。 用字符串Hash来做,但是也不能太暴力。 如果我们枚举每个可能的子串,然后检查,这样复杂度近似于|s|2|s|2|s|^2,肯定是会T的。要想办法进行优化。 易知,每个子串的长度一定是L∗ML∗ML*M的,按照朴素的方法,从SSS开始,依次向右移动1个单位,成为新的子...

2018-07-02 17:15:02 287

原创 HDU - 1880 魔咒词典 (字符串Hash)

题解对前半部分和后半部分分别Hash,然后查询即可,用map保存hash值及其对应关系。 注意这题直接map < string,string > 会MLE。在尝试过程中,可以用到的Hash值有,unsigned int 自然溢出,或者是 201326611、100663319,1e9+7,1e9+9代码unsigned int 自然溢出#include<...

2018-07-02 15:09:03 327

原创 【算法学习】字符串Hash入门

字符串Hash入门Hash方法自然溢出方法Hash公式单Hash方法Hash公式举例双Hash方法Hash公式获取子串的Hash例子公式字符串Hash的应用字符串Hash入门字符串Hash可以通俗的理解为,把一个字符串转换为一个整数。如果我们通过某种方法,将字符串转换为一个整数,就可以便的确定某个字符串是否重复出现过,这是最简单...

2018-07-02 01:41:35 23471 18

原创 2018分组赛Round2 (To be continue)

A CodeForces-618C题解按照点坐标排序,选取两个点,枚举另一个点就可以。需要判断是否3点共线,用到向量的叉积。代码#include<bits/stdc++.h>using namespace std;const int nmax = 1e5 + 100;const int INF = 0x3f3f3f3f;typedef long lon...

2018-07-01 18:19:30 166

原创 2018分组赛Round1 (To be continue)

A AtCoder 3952题解计算前缀和,然后搞一下就出来了。代码#include<bits/stdc++.h>using namespace std;const int nmax = 2e5+10;const int INF = 0x3f3f3f3f;typedef long long ll;typedef double db;map<...

2018-07-01 18:01:55 436

algebra_2005_2006.zip

algebra_2005_2006数据集,常作为知识追踪的使用数据。KDD Cup 2010: Educational Data Mining Challenge使用的数据集之一。

2020-04-11

Dynamic Graph Algorithms

Dynamic Graph Algorithms Methodology & State of the Art Algorithmic Techniques & Experimen Conclusions

2018-08-26

空空如也

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

TA关注的人

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