自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 splay专题

splay是个很好的东西,与线段树相比,它能够实现诸如将区间翻转等操作,而复杂度也是平均logn的splay的复杂度优秀在于它是一棵二叉树,而一个节点又代表了一个区间,那么寻找一个区间[l,r]并修改或是询问它,利用二叉树的性质,只需要将l-1旋转至根,r+1旋转至根的左儿子处,那么根的左儿子的右儿子就代表了要修改的区间了,而因为它是一棵"平衡"二叉树,所以复杂度还是有保证的。splay例

2017-04-08 14:04:36 519

原创 cdq分治专题

cdq分治是一种往往用于多维偏序问题的算法比如n维问题一维先排好所有子问题,然后solve(l,mid),solve(mid+1,r),之后按照第二维排序[l,r],处理[l,mid]对[mid+1,r]的影响,影响通过一个n-2维的数据结构来体现复杂度:n*logn*数据结构复杂度这样我们便用cdq分治优化掉了一维bzoj3262标准的三位偏序问题。。。写的第一道

2017-04-04 11:55:11 510

原创 整体二分专题

整体二分一般解决:边修改边询问,询问一般询问区间[l,r]里第k小/大思想:整体二分相当于对所有询问与修改一起二分,二分的是那个第k大/小解决办法:solve(l,r,L,R),表示处理位于(l,r)(这里的l,r,并不是原询问顺序,而是将询问排序到这一层时的l,r具体理解看下面)中的询问,L,R是二分的范围。首先,当L=R时,将l,r内的所有答案赋为L当L!=R;int md

2017-04-01 09:01:13 683

原创 线段树专题

线段树是个吼东西啊,比较高级的数据结构一般都是牵扯logn的,而线段树则是其中最基础,也是应用很灵活的一种。基本思想就是之前说过的“数据区域化”实现可以随便找到一篇博客随便便讲了这里以题目专题的形式列出bzoj4094单点修改,区间询问区间内不任意元素不相邻的最大和。线段树维护4个值,分别表示这个区间左右端点都没选,只选了左/右,和左右都选了#include#incl

2017-03-28 22:18:59 547

原创 bzoj2520 [Shoi2010]扫雷机器人

思路摘自cqx大佬思路:“30分的算法用图论的想法来理解这个问题。每个雷为图论中的一个点,如果i的爆炸会直接导致j的爆炸,那就连一条从i到j的有向边。每一次引爆i,就相当于把图中所有从i可直接、间接到达的点都删除。题目相当于问把所有点都删除至少需要多少次、至多需要多少次这样的操作。这显然只需要先求出强连通块每块缩成一个点。强连通块的个数就是最大值,缩点后没有入度的点数就是最小值。时间复杂度

2017-03-27 16:13:11 833

原创 ac自动机及相关dp

终于会写ac自动机了。。。记得高一时充满了对这个算法的恐慌。。。ac自动机的实际与kmp十分相像,不过它是有一堆匹配字符串。具体原理请见其他的博客。首先,在szc大佬(%%%orz)的模板演示下,以及hzwer的模板参考下,终于自己独立写出了自己的模板(指针版真的遭不住)。。。(请神犇们orz不要嘲笑我这个蒟蒻。。)下贴然后贴两道例题hdu2222(最裸的初学者必做题)

2017-03-21 11:39:25 446

原创 树链剖分个人题目总结

首先,想要学树链剖分基础的朋友们很抱歉请换篇博客看,,,这是个题目总结//////////////////////////////////本蒟蒻求不被大佬嘲讽。。。。//////////////////////////////////树剖啊啊,记得高一时因“运输计划”一题需要此算法,还不会线段树的我便去网上看。。。嗯嗯。。结果可想而知。。从此有了心理阴影。。其实树剖没那么恶心,

2017-03-17 18:15:08 682

原创 分块与莫队

我们在做线段树等问题时,会通过将区间分成2部分,再将每一部分二分,成了一个较为严谨的树状结构。而分块在复杂度或是结构上很不严谨,它的本质上只是将数据分成了一个个块状区域,每一个区域大小都由君定。但分块与线段树的核心思想都是一样的:将本来整合的总体信息区域化明显的,当我们综合信息时,我们希望信息越整体越好,这样我们调用就越方便,但是在我们修改信息时我们则更希望信息区域性更强,这样我们的修

2017-03-16 09:48:38 1761

原创 斜率优化

啊啊,斜率优化啊。推荐一篇很好的博客 http://www.cnblogs.com/MashiroSky/p/6009685.html(感觉说“转载”有点怪好像说推荐的博客是转载的。。总之就表达一下对那位作者作品权的尊重以及对那位大佬的尊敬与感激。。。)对象:形如dp[i]=max/min(dp[j]+a[i]*b[j]+c[i])等,a,b为单调函数,转移主要发生在一维,在转移式中有关于

2017-03-14 19:33:36 507

原创 树形dp

顾名思义,在树上做dp。若想能够比较顺利的解决问题,应注意:1.dp类型有的tree dp仅仅只是递推,这种题目一般看清题面,把握好问题的实质;有的时候便是普通dp解决树的信息,比如树的直径之类;有的时候会利用 树 的信息来制造限制条件。例题:hdu1520没有上司的舞会(只强调父亲节点与儿子节点的关系且为有根树);#include#include#include#i

2017-03-13 19:57:46 417

原创 shoi2012 day2(想看T2的算了吧我也不会)

T1(bzoj2834)【问题描述】回家的路 【问题描述】 2046 年 OI 城的城市轨道交通建设终于全部竣工,由于前期规划周密,建成 后的轨道交通网络由 2n 条地铁线路构成,组成了一个 n 纵 n 横的交通网。如下 图所示,这 2n 条线路每条线路都包含 n 个车站,而每个车站都在一组纵横线路 的交汇处。 出于建设成本的考虑,并非每个车站都能够进行站内换乘,能够进行站内换

2017-03-10 14:34:50 645

原创 codeforces---748

D题题意:给出k个长度为n的字符串,每个串有一个价值vi,现在请用这k个串(不必全用完)构成一个长的回文串,使这个串价值最大。做法:先注意到一点:他们的长度是相等的,所以其实说是回文但实际并不需要什么后缀数组的,因为一个串在回文的另一端必定只对应另一个完整的串。贪心,先处理出来每个串是否回文,若否,它的对应串是谁(这里我们需要用map来编号),并把这个串的所有值存到它的优先队列里。先对

2017-03-02 10:09:53 480

原创 一次不知道该叫什么的模拟赛和一篇不知道该起什么标题的补题

这套题前部分略水,但T2的正解(虽然A了),T5的优化,以及T6,在下都束手无策,还需要好好学习啊。。。。自己还是太水了。。。。A题模拟。。。直接贴代码了。。。、#include#include#include#include#includeusing namespace std;int n;string h;int a[30],cnt=0;int main()

2017-02-21 21:33:01 406 1

原创 usaco 2017 2月月赛

usaco月赛题很健脑啊。。一直坚持没看题解自己做,感觉收获很大,希望自己能坚持下去。。gold 1给出一个n*n(输入)表格图,每个格子上都有一个权值(输入),现在从左上角走到右下角,每走一步需要花费t(输入)的代价,同时,每走三步需要花费当前所在格子权值的代价,求最小代价。用spfa跑,状态用四位数压缩,表示为dis[now][step],其中step表示当前走的步数%3的值,no

2017-02-20 11:20:01 802

原创 codeforces #397 problemF 解题报告 补题

FSouvenirs【题意】给出一段长度为N序列以及M个询问:区间[l,r]间最小元素差值是多少【输入格式】第一行:一个整数N,表示序列长度;第二行:N个整数,描述这个序列;第三行:一个整数M,表示询问个数;接下来的M行:每行两个整数l , r,描述这个询问。【输出格式】M行:每行一个整数n,表示对应询问的答案。【样例】Input

2017-02-17 10:00:39 464 1

原创 codeforces #397 problemE 解题报告 补题

E 【tree folding】注:图片来源:http://codeforces.com/contest/765/problem/E【题意】给出一棵树,可以进行一种“合并”操作:对于一个节点v,若它有两条子树a,b,满足v到a中最远节点的距离等于到b中最远节点的距离,且b(b或a都一样啦)为一条单链,那么便可以把b链从图中删掉,现在,询问该树可否通过这种操作合并成一条链,若可以

2017-02-17 09:08:43 344

原创 usaco 训练总结4

这里都是些之前在codevs做的但在usaco4章节后没有找到的(汗),觉得有必要记录的题目素数方阵很刁钻很刁钻的暴搜开始的思路:既然都是质数,那质数的最后一位一定是1,3,7或9,所以先预处理每一位都是1,3,7,9的,各个位和还满足要求的质数,然后把他们分别枚举填到最后一行,最后一列,然后处理所有各个位和满足要求的质数,并先填对角线,再横着边判断边填1,2,3,4行,天真的

2017-02-16 14:30:52 397

原创 codeforces#397 -----第一次codeforces

第一次打cf,就碰上了div1,div2合并。。。题目理解的不是很快,所以写的有点慢cf的ABC三题真心友好。。。当然这次的C题稍稍有些坑,被hack后才发现漏情况了。。。D题看上去有些绕,但仔细想想,其实也没什么,集合之间对应关系是有点复杂,有点绕,其实只要把值都为x的原点对应到相同g节点(只要是未访问过的即可),这个节点再对应到编号为x的节点。并保证对于出现过的值x,编号为x的原点

2017-02-16 11:47:53 367

原创 usaco训练总结3

前两篇文章都有乱码。。。。markdown真难用usaco 5.4.1真是越来越意识到自己dp能力差了。。。能想到只是要求两条不相交路线,但是总纠结于是否会在后面循环时被重复计算导致答案错误。。其实自己写一下测一些不就好了,但因为能力弱还是有内心的恐惧啊,所以不敢下手。。。还得多练习啊。。dp[i][j]表示第一条路线走到了I,第二题路线走到了j,并且期间没有相交的方案数

2017-02-16 10:02:31 455

原创 usaco 训练总结2

usaco 5.3.1 “怎么做呢?” “搜呗!”void dfs(int x,int cnt,int now){ if(cnt>minnum) return ;//剪枝1 if(now==Q) { minnum=min(minnum,cnt); for(int i=1;i<=cnt;i++) {

2017-02-16 09:41:10 346

原创 usaco训练总结1

这里把最近在usaco所刷到的好题总结一下。。。*4.2.1 草地排水“ 裸的最大流(好像不满足好题的标准。。。*#include<iostream>#include<algorithm>#include<string.h>#include<stdio.h>#include<math.h>#include<vector>using namespace std;struct bian

2017-02-16 08:48:57 404

原创 最大公因数——解题报告

最大公约数(gcd.pas/c/cpp) TL:1S  ML:256MB 【Description】 有N个整数,kAc会对它们做Q次修改。 每次修改指的是对所有数加一个整数(可正可负) 每修改一次后,他想知道当前所有数的最大公约数是多少。 【Input】 第一行两个整数N, Q 接下来N行,每行一个整数,表示这N个数的初始值。 接下来Q行,每行一个整数,表示这Q个

2016-10-19 20:05:40 763 2

原创 方格图(2)(自己起的名字。。)——解题报告

有一个 N*M 的方格图 每条边都有长度现在 kAc 要从(1, 1)走到(N, M),每次只能往下或者往右走他想:“要是求最短路神马的,这也太水了吧…”他给你的任务是:修改每条边的长度(修改前后都是整数,只能增大),使得(1, 1)走到(N, M)每种走法长度都一样在满足这个要求的前提下 总长度要尽量短样例输入:2 34 75 93 6 1样例输出

2016-09-23 22:34:51 703

原创 三重镇——解题报告

题目就不打了。。。用f[2][10][10][10][50][50],表示建造第i个建筑时,三块地的样子,同时用了几颗星星几颗炸弹此时的最大得分。第i个建筑这一维用滚动数组来缩就好了。枚举每一个状态并把每个决策都枚一下举,然后求最优。代码附上#include#include#include#include#includeusing namespace std;int

2016-09-16 23:16:07 583 1

原创 迷宫—解题报告

迷宫(maze2.pas/c/cpp) TL:1S ML:128MB 【Description】 你所在的迷宫可以用 N 行 M 列的矩阵来描述: 图标 含义 # 墙,无法通过 . 地面,可以通过 小写字母(a、b、c、...、z) 钥匙,可以打开标有对应大写字母的门 大写字母(A、B、C、...、Z) 门,可以被标有对应小写字母的钥匙打开 $ 你的初始位置 

2016-09-16 16:22:12 1767

原创 琪露诺的算数教室——解题报告

B 琪露诺的算术教室(nine.pas/c/cpp) TL:1S  ML:128MB 【Description】 琪露诺是一个可爱的小女孩,经常会思考诸如“到底⑨是 baka,还是 baka 是⑨”之类的问题。有天,慧音老师给琪露诺出了一道题目: 给定一个长度为N的自然数数列,等概率地随机选取一对l,r。如果l>r,就交换l,r。 求子序列A[l..r]的xor和,and和,o

2016-09-08 19:44:52 1914

原创 冉文的烦恼——解题报告

冉文的烦恼【问题描述】冉文是个粗心的人,经常不小心把垃圾丢到地上。艾教实在没办法,只好派了m个学生,去捡冉文走过路上的垃圾。假设冉文走过的路线是一条直线,每个位置分别是1..n,每个位置上垃圾的个数是ai。所有学生起始位置都在0,每秒钟,他们有两种选择:1.向右走一步。2.捡起一个地上的垃圾。现在我们的问题是:要捡起冉文的所有垃圾,最少需要多少秒?【输入格式】第一行

2016-08-31 20:35:23 469

原创 棋子移动——解题报告

BFS因为数轴无现长,并且有第一种操作:直接+4,或者-4,所以我们只用关心一开始有多少个棋子%4=0,1,2,3即可。第二种操作:相当于是把两个棋子的位置各+1 %4。第三种操作:相当于是把第i种棋子个数-1,第i+1种棋子个数-1,第i+2种棋子个数+1,。然后BFS就行了,状态是f[31][31][31][31]。#include #include char a[31

2016-08-24 15:54:57 1238

原创 最短k倍路——解题报告

题意:求a点与b点间所有k的倍数长度的路径中最短的一条。题解:先做一遍拓扑序,再spfa维护dis[i][j],i表示到第i个点,j表示该最短距离%k=j。代码附上#include#include#include#include#includeusing namespace std;const int INF=0x3f3f3f3f;int n,m,s,a,b;int hj[

2016-08-24 15:37:44 468

原创 物语--解题报告

【问题描述】某一天,少年邂逅了同病相连的IA。见面后,IA一把牵起少年的手,决定和他一起逃离部落,离开这个无法容身的是非之地。要逃离部落,少年和IA就需要先选择一条耗时最少的路线,从而避免被部落的大人们抓到。部落可以大致分为N个区域,少年和IA在区域1,部落的出口设在区域N。此外部落还有M条连接两个区域道路。道路是无向的,没有一条道路的两端连接相同的区域,也没有两条道路所连接的两个区域完全

2016-08-23 16:00:04 539

原创 道路覆盖--解题报告

【问题描述】Tar把一段凹凸不平的路分成了高度不同的N段,并用H[i]表示第i段高度。现在Tar一共有n种泥土可用,它们都能覆盖给定的连续的k个部分。对于第i种泥土,它的价格为C[i],可以使得区间[i,min(n,i+k-1)]的路段的高度增加E[i]。Tar要设定一种泥土使用计划,使得使用若干泥土后,这条路最低的高度尽量高,并且这个计划必须满足以下两点要求:(1)每种泥土只能使

2016-08-23 15:29:59 470

原创 原根--解题报告 sn0823T1

题意为:给一个数M,求模M的所有原根。原根:(与M互质,小于M)以g为底,使g的j次方%M所得值为1的最小指数j为phi(M)时,g便是M的一个原根。方法:按题目说的去模拟吧-_-!.代码如下#include#include#include#include#includeusing namespace std;int m,phi=0; inline int gcd(i

2016-08-23 14:40:24 441

空空如也

空空如也

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

TA关注的人

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