[暑假的bzoj刷水记录]

(这篇我就不信有网站来扣)


这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下。  7月27号之前刷的的就不写了 , 写的累

代码不贴了,可以找我要啊..

2017.8.27update : 开学了终于搞到了550  可还行

*数据结构

*可持久化线段树/主席树

*bzoj3932 [CQOI2015] 任务查询系统 : 比较裸的主席树,任务查分一下就好了  cqoi真良心

*bzoj4026 dC Loves Number Theory :  数论个头啊,对每个数分解质因数,然后可持久化线段树区间乘就行了 标记永久化

*bzoj4012: [HNOI2015]开店 转成所有区间内的点的深度和减去两倍的lca的深度和,每个点它到根的路径的深度都加上1,树剖+可持久化线段树实现即可

*简单线段树?

*bzoj4477: [Jsoi2015]字符串树 对于每种长度哈希一下插入线段树

*bzoj3441: 乌鸦喝水 每个水缸多少次之后不能喝是确定的,把时间分成很多个区间,每个区间内每个水缸能不能喝确定,线段树模拟一下

*bzoj4415: [Shoi2013]发牌  简单送分题,我写了一种线段树二分的做法 速度比较可观。

*bzoj4592: [Shoi2015]脑洞治疗仪 简单线段树区间赋值啥的

*bzoj4552: [Tjoi2016&Heoi2016]排序 二分答案然后把大等于的看成1,否则看成0,线段树区间赋值啥的

*bzoj4481: [Jsoi2015]非诚勿扰 每个男生被选择的概率是个等比数列,求和之后插入线段树  卡精度。

*bzoj3991:[SDOI2015]寻宝游戏 其实就是dfs序相邻的点的距离和的两倍,我比较二逼,用树剖+线段树大力搞233.(就说怎么就我代码这么长)

*bzoj3999:[TJOI2015]旅游 明显能树剖完线段树搞,然后注意合并的顺序

*bzoj3533: [Sdoi2014]向量集  线段树维护凸包

*bzoj3637: Query on a tree VI  树剖,对每棵树建线段树然后把轻链信息挂到父亲上去

*可并堆

*bzoj4003: [JLOI2015]城池攻占 :  dfs一遍,到达一个点的时候把所有从这个点开始的武士加入,并且把所有儿子剩下的武士合并起来,然后支持一下乘法加法标记即可。

*平衡树

*bzoj3682: Phorni 类似[没有人的算术]从后往前把字符插入平衡树,可以O(1)比较字典序,然后用替罪羊重构时顺便重标号即可保证正确性。

*bzoj3878:[AHOI2014]奇怪的计算器  发现所有操作都不改变大小关系,所以平衡树维护即可。

*套树

*bzoj4553: [Tjoi2016&Heoi2016]序列  简单分析之后就可以发现是个二维偏序问题,套树/cdq分治

*分块

*bzoj4028: [HEOI2015]公约数数列  分块维护每块的gcd和异或和,不同的gcd只有log种,所以一块gcd相同的一起处理,不同的暴力即可。

*bzoj4537: [Hnoi2016]最小公倍数  对权值分块,带权并查集启发式合并。

*博弈论

*bzoj4035 数组游戏 : 每个点的sg函数只和n/i有关,也就是说只有根号种  sg[i] = Mex(sg[i*2]^sg[i*3]^...^sg[i*k]) k=2~n/i

*dp

*矩阵乘法 

*bzoj4037: [HAOI2015]数字串拆分  发现一个数字的方案数可以矩阵乘法,所以用f[i]表示前i个点的所有可能情况的转移矩阵之和,枚举j转移即可,复杂度n^2*5^3

*bzoj4000: [TJOI2015]棋盘  裸的矩乘,但题目剧毒注意不要看错

*状压dp

*bzoj4003:[JLOI2015]战争调度 f[i][j][k]表示第i个点子树有j个叶子参加战争,然后第i个点到根路径上所有贵族的状态是k的最大收益,计算一下就可以发现复杂度是n*2^(2n-2)

*bzoj4416: [Shoi2013]阶乘字符串 f[S]表示S集合的所有串的右端点最大值,转移比较显然。n太大的时候一定不合法,判掉。

*bzoj3934:[CQOI2015]标识设计 f[i][j][k][S][0/1]表示转移到第i行第j列,还剩k个L没做,正在做的L占据的列的状态是S,现在这个方块是否被左边那个方块要求一定要填 的方案数。状态可以离散一下,然后记忆化搜索即可。

*只是dp

*bzoj4465: [Jsoi2013]游戏中的学问 f[i][j]表示前i个人形成j个环的方案数,然后枚举最后一个人加入已有的环还是新建一个环即可。

*bzoj4457: 游戏任务 大背包

*bzoj4583: 购物 对于每个时间段大dp一下 f[x][i][j]表示x时间段,卖了i个红球j个蓝球的方案数,分很多种情况讨论。

*bzoj4446: [Scoi2015]小凸玩密室  感觉智商被压制了,看题解吧。

*bzoj4709: [JSOI2011]柠檬 f[i]表示选前i个的最大值,对于每种权值维护一个单调栈即可。

*bzoj3594: [Scoi2014]方伯伯的玉米田  显然每次的右端点都是n,dp+二维树状数组优化

*树形dp

*bzoj4472: [Jsoi2015]salesman 每个点最多选多少个儿子是确定的,贪心选取最大的即可。

*bzoj4593: [Shoi2015]聚变反应炉  f[x]和g[x]表示先父亲/先自己的最小花费,第一种背包转移吧,第二种的话可以贪心。

*bzoj4557: [JLoi2016]侦察守卫 f[i][j]表示第i个点除了前j层都被覆盖的最小话费,g[i][j]表示第i个点可以延伸出去覆盖距离为j的点的最小话费,大概脑补下合并。

*bzoj3566: [SHOI2014]概率充电器  dp+换根

*数位dp

*bzoj4521: [Cqoi2016]手机号码  简单数位dp,不谈了。

*bzoj3329: Xorequ  数位dp+矩阵乘法

*二进制运算相关

*bzoj4017: 小Q的无敌异或 第一个问比较简单,然后第二个问的话就枚举一个右端点,然后一位位考虑。考虑第i位的时候把所有数对2^(i+1)取膜,然后上个数据结构支持查询有多少数相减之后这一       位是1既可

*bzoj4004: [JLOI2015]装备购买  类似一个m维的线性基?类似beijingoi一道题的做法。

*bzoj3503: [Cqoi2014]和谐矩阵  高斯消元解异或方程组

*bzoj3640: JC的小苹果 左边矩阵都相同的高斯消元,可以优化到每次n^2

*字符串

*哈希

*bzoj4084: [Sdoi2015]双旋转字符串  短的串哈希一下存map,然后对于每个长的串,枚举它的后半部分对应前半部分的位置,哈希表查一下即可。

*各种乱七八糟的自动机

*bzoj4032: [HEOI2015]最短不公共子串  字符串dp4和1 题解有点长 网上都有 所以不写了。

*后缀数组

*bzoj4486: [Jsoi2015]串分割 只需要枚举n/k个起点即可,然后后缀数组求出所有可能的答案,二分答案+处理lcpO(1)判定,只需要跳k次,所以复杂度是nlogn的

*bzoj4556: [Tjoi2016&Heoi2016]字符串  求出后缀数组之后按照rank扫,线段树区间取min,区间最大值。

*回文

*bzoj2160: 拉拉队排练  拉下车就没了。

*bzoj4480: [Jsoi2013]快乐的jyy  回文树裸题???

*图论

*bzoj4016: [FJOI2014]最短路径树问题 求一遍最短路,然后建出最短路径树,接下来就是长链剖分的经典做法了。

*bzoj4011: [HNOI2015]落忆枫音  DAG的话答案是入度的乘积,多一条x到y的边的话可以枚举一条从y到x的边抠掉不合法的方案,dp转移一下即可。

*bzoj4006: [JLOI2015]管道连接  f[i][j]表示i集合里的所有点都到达j点的最小话费,做2^10次dij吧,然后枚举p个点分别属于什么集合即可

*bzoj4010: [HNOI2015]菜肴制作  倒着扩扑排序一下,堆维护  简单题。

*bzoj4489: [Jsoi2015]地铁线路 先求出每个点最少换乘多少次,bfs即可。然后每条线路经过的所有点的距离相差最多1,两个方向分别建一条线段,等于最短距离的向地铁上连边,否则从地铁向这个点连边,就成了DAG求最长路。

*bzoj4478: [Jsoi2013]侦探jyy  枚举每个点不发生,尽可能多的让可以发生的入度为0的点发生,判断一下是否满足条件即可。

*bzoj4423: [AMPPZ2013]Bytehattan 平面图转对偶图,删边变成加边,并查集维护。

*bzoj4541: [Hnoi2016]矿区  平面图转对偶图  

*贪心

*bzoj4027: [HEOI2015]兔子与樱花 每个节点删掉的贡献是确定的,所以每次把儿子所有的贡献排序后贪心一下即可。

*bzoj4464: [Jsoi2013]旅行时的困惑 求出每个点出发的线路数量和到达的数量,能合并就合并,然后剩下的留给父亲即可。

*bzoj4482: [Jsoi2015]套娃  按照外径从大到小做,每次选择一个可以套在外面的权值最大的套娃套在他外面,正确性显然。

*bzoj3709: [PA2014]Bohater  回血比扣血多的肯定先选扣血少的做上去,扣血更多的其实就是倒过来罢了。

*bzoj3716: [PA2014]Muzeum  大力旋转坐标轴之后是一个最小割,转成最大流贪心做

 

*计算几何

*bzoj1043: [HAOI2008]下落的圆盘 对于每个圆盘,求出它被覆盖的弧度区间求个并即可。

*bzoj4445: [Scoi2015]小凸想跑步 半平面交。

*网络流

*bzoj4485: [Jsoi2015]圈地 每个点割S和T分别表示卖给两个人,然后相邻的点连墙的花费,最小割。

*bzoj4554: [Tjoi2016&Heoi2016]游戏  简单二分图匹配啊,如果有炸不穿的石头你就把行列拆成两个就行了。

*bzoj3997 [TJOI2015] : 组合数学 想到上下界最小流建图,考虑倒过来求出没有连T->S那条边的情况下的流量。

对于第i行第j列的aij,可以流到的地方是除了自己以外的i'>=i j'>=j的格子,乱搞就行。然后因为总流量一定是所有ai的和,所以直接输出和减去流量即可。

*bzoj3931 [CQOI2015] :网络吞吐量 建出最短路扩扑图之后直接最大流。。 话说CQOI的题都这么良心嘛?

*bzoj3996 [TJOI2015] : 线性代数 把式子拆开,发现一些二元关系,最小割即可。

*bzoj3993 [SDOI2015] : 星际战争 二分答案然后求最大流 老套路了。。

*bzoj3130 [SDOI2013] : 费用流  显然费用全部加到流量最大的边,二分流量上界即可。

*bzoj3442: 学习小组 :费用流  比较经典

*bzoj3571: [Hnoi2014]画框 最小乘积生成树+二分图带权匹配

*bzoj3504: [Cqoi2014]危桥  网络流+奇怪判定

*倍增

*bzoj4444: [Scoi2015]国旗计划  最少数量的线段覆盖,可以倍增做

*bzoj4539: [Hnoi2016]树 先从外层的大树求lca跳到小树,然后小树里lca就行了。(话说这跟倍增啥关系,只是我写的倍增lca吧汗)

*莫队

*bzoj4542: [Hnoi2016]大数 稍微推一推就可以莫队了。

*数论

*莫比乌斯反演

*bzoj3994 [SDOI2015] : 约数个数和 归纳出个正常的反演式子就能算了 反正我挺绝望的

*容斥原理

*bzoj4487: [Jsoi2015]染色问题  三维大容斥

*bzoj3930: [CQOI2015]选数 : 两个不同数字的gcd不超过极差  特殊处理全部相同的情况,然后容斥一下

*bzoj4710: [Jsoi2011]分特产 容斥原理+简单dp

*其他

*bzoj4029: [HEOI2015]定价 暴力题 别写残就行

*bzoj4001: [TJOI2015]概率论 打表题

*bzoj4475: [Jsoi2015]子集选取 打表题

*bzoj4488: [Jsoi2015]最大公约数 按顺序加入,gcd只有log种 暴力一下

*bzoj4476: [Jsoi2015]送礼物 二分答案+单调队列,经典做法

*bzoj4591: [Shoi2015]超能粒子炮·改  lucas定理

*bzoj4555: [Tjoi2016&Heoi2016]求和 推个式子之后上个fft

*bzoj4589: Hard Nim  FWT,注意不要反复做,可以直接快速幂,做两次就好了。

*bzoj3990: [SDOI2015]排序 搜索题

*bzoj3874: [AHOI2014]宅男计划  三分

*bzoj3714: [PA2014]Kuglarz  抽象成一个最小生成树的模型

*bzoj3712: [PA2014]Fiolki   直接启发式合并复杂度是对的,简单粗暴好写。正解貌似是建出操作树之后lca

*bzoj4985: 评分 二分答案,f[i]表示第i个点大等于二分值最小需要几个大等于二分值的评委  每次取两个最小值即可。

*bzoj4998: 星球联盟  离线,先搞出一棵生成树,然后带权并查集维护

*bzoj4754: [JSOI2016]独特的树叶  树哈希判同构,换根求出每个点作为根的哈希值和删掉这个点的哈希值,map查一下啥的

*bzoj4951: [WorldFinal2017]Money for Nothing 首先剔除没用的点,然后发现决策单调,分治解决。 

*bzoj4803: 逆欧拉函数  搜索

 

大概就这样? 我好菜啊都不会

posted @ 2017-08-12 13:48  FallDream  阅读(457)  评论(0编辑  收藏  举报