2019.6.summary

2019.6.1
BZOJ3028: 食物
生成函数题,母函数乘起来就好了

BZOJ3544: [ONTAK2010]Creative Accounting
嗯,就是可以用set维护前缀和,取后继或最小数贪心就好啦

BZOJ2820: YY的GCD
莫比乌斯反演

BZOJ4173: 数学
https://blog.csdn.net/zhhx2001/article/details/52300924
由这个blog里的证明我们知道
(n+m)/k-n/k-m/k实际只有1或0两种取值,这里满足条件的就是当它=1时,
https://blog.csdn.net/popoqqq/article/details/46820313
然后就像很多mobius的题里很常见的一个公式的逆用了对吧QAQ

BZOJ1636: [Usaco2007 Jan] Balanced Lineup && BZOJ1699: [Usaco2007 Jan] Balanced Lineup排队
显然rmq对吧,模板题

BZOJ3038 上帝造题的七分钟2
线段树,然后开方就暴力,因为开方操作数列下降很快对吧(好像是4次还是5次就变成1或0)
变成1或0了记录一下以后就不用了,然后如果左右儿子都不用开了,它也不用开了

BZOJ2938: [Poi2000]病毒
在AC自动机上dfs找环就好了


2019.6.2
BZOJ3339: Rmq Problem
https://blog.csdn.net/AaronGZK/article/details/49839169
http://hzwer.com/3032.html
这些blog讲的都很清楚鸭,这道题感觉好神鸭,还没做过这类题
线段树,尤其是左端点排序然后左端点移动时改线段树,然后求同一个左端点的答案,这种思路跟莫队感觉类似鸭


2019.6.3
BZOJ3307: 雨天的尾巴
本质还是树上差分啊,不过用线段树,
每个点都是一颗动态开点的权值线段树,然后差分,
最后的时候按dfs序从下往上合并上去就好啦

BZOJ1621: [Usaco2008 Open]Roads Around The Farm分岔路口
因为树杈>=2,所以发散很快,直接暴力递归就好了……艹

BZOJ1901: Dynamic Ranking
第一种写法,整体二分,爽
第二种写法,带修主席树,妙
第三种写法,线段树套权值线段树,这就很艹了,懒得写了QAQ

BZOJ2986: Non-Squarefree Numbers
和之前的BZOJ2440基本一样对吧QAQ
把符号反过来而已

BZOJ1223: [HNOI2002]Kathy函数
https://www.luogu.org/blog/user29936/solution-p2235
orz这个证明,数学归纳法……唉,还是要自己先找找规律猜个结论
然后就是喜闻乐见的数位dp+恶心的高精度啦QAQ


2019.6.4
ZROI775. footmoo
就是二维前缀和+暴力?QAQ

ZROI777. 77777777777让世界聚焦于你
按%7维护一下就好了。水题

ZROI776. FencedIn
我不会QAQ,竟然连这是一个最小生成树都没看出来QAQ
模拟,按照kruscal的思想
首先横竖最小的肯定分别选m次,n次
然后接下来如果是横着的就选m+1-(cnt2-1)次,cnt2是选了多少个竖着的
然后竖着的相反就好啦

ZROI778. mowing
扫描线+CDQ分治+树状数组
自己肯定写不出来,先体会了他的解题思想


2019.6.5
BZOJ3956: Count
首先单调栈预处理出每一个点作为最小点向左向右能延伸的最小长度
然后如何统计答案的时候很妙啊,先给答案做前缀和,然后找到区间最大点
好点对一定不能跨过最大点
所以最大点左边的左端点数+右边的右端点数一定不会重复,就是答案
upd.貌似还有用主席树二维数点的啥?窝去学习一下QAQ
upd.学会了QAQ

BZOJ2100: [Usaco2010 Dec]Apple Delivery
两遍spfa就好了,注意slf优化

BZOJ3802: Vocabulary
牛P鸭,之前做过这种类似的计数dp,需要预处理,但是就是自己想不出来
https://blog.csdn.net/u012647218/article/details/42008379
膜一发题解,感觉第一位肯定是需要的,然后第二位肯定很小,就应该想到是表示三个数字典序关系的状态
然后如果边做边枚举肯定T爆了鸭,如果预处理一下就好了QAQ

BZOJ1261: [SCOI2006]zh_tree
这……数据,之间记忆化搜索都能过???

BZOJ1606: [Usaco2008 Dec]Hay For Sale 购买干草
煞笔题吧,凑个数?

BZOJ1657 [Usaco2006 Mar]Mooo 奶牛的歌声
单调栈裸题


2019.6.6
BZOJ1206: [HNOI2005]虚拟内存
开2个结构体,1个map,一个set维护一下就好了?QAQ

BZOJ2401: 陶陶的难题I
好题!!!不会(哭)
https://blog.csdn.net/PoPoQQQ/article/details/44943619
膜了Po姐姐的题解,妙!!!

BZOJ4676: Xor-Mul棋盘
https://www.cnblogs.com/CQzhangyu/p/7669846.html
一般这一类异或问题,每一位都是互相独立的,可以单独考虑,又因为n很小,所以可以状压dp
因为时限15s,随便硬淦,貌似还有一道加强版的QAQ

BZOJ3254: Xor-Mul Chessboard
加强版的,需要预处理出转移+fread卡过去

BZOJ2017: [Usaco2009 Nov]硬币游戏
f[i][j]代表"还剩i个硬币,轮到的人被允许最多取j个硬币时,当前人可得到的最大钱数"
设最下方的k个硬币的总和为s[k] (0<=k<=N)
dp[0][0]=0
dp[i][j]=max(dp[i][j-1],//取个数 s[i]-dp[i-j][min(i-j,j*2)])//取个数=j

BZOJ1584: [Usaco2009 Mar]Cleaning Up 打扫卫生
先把连续的相同的缩成一个
然后f[i]表示到i的最优答案,
设b[j]表示[b[j],i]中不同的个数为j的位置
显然枚举的j<=sqrt(n),为啥自己想一想鸭
然后怎么转移b[j]就是每次i++了,就前面暴力删啊,因为是单调的,所以均摊是O(1)的

BZOJ2243: [SDOI2011]染色
树链剖分+线段树,线段树要维护左右端点及其颜色和区间内的总块数,怎么pushup,pushdown显然对吧QAQ

BZOJ2982: combination
lucas裸题

BZOJ2453: 维护队列
首先第一种方法是莫队,同数颜色
第二种方法是普通分块+二分
第三种方法是树状数组套主席树
感觉整体二分应该也是可以的吧?

BZOJ3343: 教主的魔法
分块+二分


2019.6.7
BZOJ2405: 数字
嘻嘻,今天买了权限号,好开心呢QAQ
本题打表找规律(捂脸)

补了几道CF题,都补完以后一块写

2019.6.8
BZOJ2741: 【FOTILE模拟赛】L
一开始不明白为啥要分块,因为trie只能支持对于给定v求出最大xor值,也就是说我们要枚举a[i] (i ∈ [l, r]),于是单次询问复杂度O(n * 30),爆表

CF A. From Hero to Zero
显然暴力吧,因为它下降幅度非常快

CF B. Catch Overflow!
一开始想着死码模拟,然后发现naive了,这要有技巧,get了

CF C. Electrification
显然距离一个点最小的k+1个肯定是连续的,枚举是哪k+1个,然后在两个端点间距离尽量小的情况下,肯定是选两个端点的平均数来取啊

CF D. Array Splitting
要推推式子,嗯,然后转化成求k-1个最小的后缀和/或者推成前缀和也阔以的

CF E. Minimal Segment Cover
没有想到倍增,naive了QAQ
先处理出从一个点出发跳一条线段最远能调到哪,然后从前往后一推可以处理出从一个点出发或从这个点前面出发最远能跳到哪
然后处理倍增数组啊,表示从某一点,跳2^j条线段最远能调到哪,然后询问就跳呗

CF F. The Number of Subpermutations
好哇!为啥没想到hash呢QAQ
把1~n每个点赋一个随机值,然后用异或,这样可以满足区间减法
然后肯定不能n^2暴力啊,我们可以枚举1的位置啊!因为每一个区间肯定都有一个1对吧
然后假设这个区间的最大值(同时也是len)在1的右边,然后我们往右边枚举,然后验证
最后把区间翻转一下,同理,别忘了把1单独加一次

summary.感觉这次CF不难,都没到NOIP难度吧?结果还有那么多没想出来,第一思维不够活跃,第二独立思考能力太弱,只想着考多刷题积累经验,这迟早要吃亏
下周二一定要上分!!!

BZOJ1503: [NOI2004]郁闷的出纳员
可以用splay写,然鹅,写的权值线段树QAQ,过了


2019.6.9
BZOJ1978: [BeiJing2010]取数游戏 game
跟 绝世好题 差不多
我竟然连dp都没想到,淦

BZOJ3300: [USACO2011 Feb]Best Parenthesis
先用栈处理出每一个左端点对应的右端点在哪,然后就搜嘛

BZOJ2738: 矩阵乘法
这题时限大,还不卡空间,主席树应该是莫得问题的?
但是我naive了,本来数据结构就写得不得劲,膜了题解才知道可以整体二分+二维树状数组,学习了QAQ

BZOJ3132: 上帝造题的七分钟
首先单点修改+矩阵查询的话肯定二维树状数组稳了啊,但是区间修改……
那就差分呗
推一推柿子

BZOJ3524: [Poi2014]Couriers
裸的主席树好了

BZOJ2223: [Coci 2009]PATULJCI
跟上一题差不多吧……

BZOJ2292: 【POJ Challenge 】永远挑战
spfa多没劲啊,淦
2的边拆成2个1的边,然后bfs,速度飞起吧QAQ

BZOJ2293: 【POJ Challenge】吉他英雄
emmmm,不会啊QAQ
题解真的妙啊,把除了第二大的数以外的数都看成那n-1个数的平均数,然后枚举和第二大的数在同一个块里的个数,求组合数
为啥可以这样做呢
因为等一下求组合数的时候选择同样多的数时每个数统计的次数都一样,所以和一定是这个平均数的倍数QAQ
然后我们没有考虑某些顺序使得同样的置换出现多次,我们考虑的是多少种不同的位置组成,所以除以的数也不一样
应该除以(1<<(n-1))(每个数跟第二大的数是不是在一个块里)
P.S这道题想不出来的话也是可以找规律的(吐槽),我怎么辣么沙茶鸭QAQ

ZROI779. chess
md,考试的时候我在搞什么这都没写对……
显然2^k+1的长度是不要花费的,那我们就把长度的二进制拆成它就好了,代价就是二进制里1的个数……

ZROI780. dream
想到了把几个状态都给写上,然后spfa,结果没码出来啊……
记住SR的建议:先想好,规划好了再写,不要边想边写,越写越乱!

ZROI781. balancing
妙啊!
首先对于y轴离散化,然后从左到右枚举竖线,
然后二分!!!这一步太妙了啊!!!
然后验证就是找到一条横线使得上面的两个部分里面<=mid个,然后这样的横线尽量往下,这时候在验证下面两个部分是不是也<=mid就好了
这个可以用线段树/树状数组完成

T4没明白为啥决策单调性,明天再补吧,今天题已经写得够多了,休息了……

没忍住,再来一题QAQ

BZOJ2506: calc
这种题的套路就是拆成区间减法,这样就能按顺序添加数了
对于p<=sqrt(1e4),就是存储维护,否则直接统计k,k+p,k+2p,……的出现次数
都是100个左右对吧QAQ


2019.6.10
BZOJ1563: [NOI2009]诗人小G
早点不学决策单调性,打比赛就吃亏了哇……
加上中午SR鸽鸽给我讲解的终于搞懂了呢
https://blog.csdn.net/Jaihk662/article/details/78174717


2019.6.11
ZROI782. Cbarn
就是决策单调性呢,终于搞懂了呢


2019.6.13
这几天在补CF的题,QAQ
CF A. Filling Shapes
显然2^(n/2)

CF B. Plus from Picture
显然判完只有一个联通块以后,枚举十字交叉点,然后其他的点x,y至少有一个跟它一样

CF C. Beautiful Lyrics
比赛的时候没调出来
学会了map套map的骚操作

CF E. Product Oriented Recurrence
两边同乘以c^x
可以把指数推出和斐波那契数列差不多的式子,然后矩阵快速幂一下就好了


2019.6.14
BZOJ2655: calc
是道好题!!!QAQ
首先设f[i][j]表示选了i个数,范围是[1,j]的答案
显然f[i][j]=f[i-1][j-1]ij+f[i][j-1]
可以通过归纳法或者做差分得到这可以看成关于j的2i次方的多项式
然后接下来可以用拉格朗日插值来解决,学习了,牛批

BZOJ3674: 可持久化并查集加强版/BZOJ3673: 可持久化并查集 by zky
就是把fa数组用主席树维护就好了


2019.6.15
BZOJ2091: [Poi2010]The Minima Game
不妨先将所有数字从小到大排好序。
贪心地想,每次取数字,都是从最大的那个数开始倒着往前连续取几个
如果中间有间隔,对方只要选了中间缺漏的数字,对方的结果不会更劣
定义f[i]:前i个数字,先手最大分差
那么,f[i] = max(A[j+1] - f[j]),优化显然
orz题解,没有想到这一条呢

BZOJ3713: [PA2014]Iloczyn
水题,众所周知,斐波那契数列增长特别快,在第45个时就已经>1e9了

BZOJ2958: 序列染色
好难啊,首先我连dp都没想到,其次,想到的话也不会写QAQ
https://blog.csdn.net/Ab_Ever/article/details/78301969
放一个讲的挺细的blog,主要思路就是容斥吧?

BZOJ3781: 小B的询问
显然莫队算法

BZOJ2295: 【POJ Challenge】我爱你啊
sb题,直接模拟匹配过程就好了,我一开始还以为要dp


2019.6.16
(再次)学习了FFT呢,QAQ
BZOJ2179: FFT快速傅立叶
A*B的裸题

BZOJ2194: 快速傅立叶之二
把b数组倒过来,就发现可以FFT

BZOJ2154: Crash的数字表格
做过很多了吧,lcm(i,j)的和

2019.6.17
BZOJ3527: [Zjoi2014]力
i i=j:a[i-j]=0
i>j:a[i-j]=(i-j)^2
显然Ei=Σa[i-j]*g[j]
哦这不就是一个卷积嘛,但是i-j可能小于0,下标+n-1吧


2019.6.18
先复习了ZROI的一道题,太菜了,竟然没有一眼想到QAQ

BZOJ3771: Triple
没有想到是FFT??
是不是往往这种不同搭配方案组合的都用生成函数啊QAQ
接下来就可以用FFT加速啊
生成函数用到了类似容斥


2019.6.20
BZOJ3500: PA2008 Cliquers
好题啊,学习了nlogn求整数拆分的算法QAQ
(学习了好久啊QAQ)

BZOJ3545: [ONTAK2010]Peaks
线段树合并就好了

BZOJ3551: [ONTAK2010]Peaks加强版
上一题强制在线的版本
kruscal重构树,倍增,主席树(根据dfs序)
然后可以倍增出deep最小的val<=x的点,答案就在它的子树里,这个用主席树+dfs序就可以做鸭

BZOJ3714: [PA2014]Kuglarz
神TM思维题啊QAQ,跪了跪了
如果知道[a,b]的奇偶性,我们看成知道a左边的缝到b右边的缝(就编号为[a,b+1]吧)
最后就是想知道每相邻两条缝之间的答案
这像不像是图联通啊QAQ,并查集鸭
因为如果知道了[a,b][b,c]的答案也就知道了[a,c]的答案
知道了[a,c][b,c]的答案也就知道了[a,b]的答案
好题


2019.6.21
BZOJ4336: BJOI2015 骑士的旅行
首先对于每一座城用multiset维护该城的骑士的能力
然后就是树剖+线段树,线段树维护改区间城市里min(骑士个数,k)以及前min(骑士个数,k)大的能力
这个就是merge的时候用堆归并一下就行了吧

BZOJ4026: dC Loves Number Theory
当成了数论题,谁知是主席树的题???想想欧拉函数的公式,转化为区间里不同质因子的个数(也不是个数,比较类似)
https://www.cnblogs.com/CQzhangyu/p/7070775.html
又膜了题解QAQ

BZOJ2742: [HEOI2012]Akai的数学作业
第一眼感觉跟NOIP的解方程好像呐,结果才发现这个是一切有理数,那个是整数……
实际上中间的一些处理是一样的
首先如果根为p1/q1,p2/q2.……
那么一定可以分解出(x-p1/q1)(x-p2/q2)(……),
x-p1/q1=0 <–> q1x-p1=0,乘起来显然q是an的约数,p是a0的约数,然后处理出约数后,n^2枚举O(n)验证,验证同解方程

BZOJ2056: gift? 高精度?
ull是2^64-1,本题极限数据刚好比这玩意大1,那这个特判一下,其他的随便搞
因为空间1MB,所以不能用万能头,用cstdio吧……


2019.6.24
BZOJ3014: [Usaco2012 Nov]Balanced Trees
真好题!!!感觉挺难的QAQ
点分治
https://www.cnblogs.com/Winniechen/p/9188049.html
感觉要盯着代码看才能看懂呢QAQ


2019.6.26
BZOJ2314: 士兵的放置
好难鸭QAQ这树形dp……第一次见到用自己还能转移自己???
感觉主要难点就是这玩意不好计数对吧
所以我们状态转移的时候一定要切记不能重复!!!
[i][0/1/2]表示这个点被霸霸/儿子/自己控制
[0]的时候儿子们都是[1],不然儿子就可以控制当前点了
[1]的时候有点复杂,每个儿子选择[1]或[2],但是至少有一个点选了[2],min(f[i][1]+min(f[to][1],f[to][2]),f[i][0]+f[to][2]),表示有没有选过[2]
[2]的时候儿子啥都行

BZOJ2466: [中山市选2009]树
树形dp,f[i][0/1]按了这个点,最后亮没亮
g[i][0/1]没按这个点,最后亮没亮
转移显然
upd.听说按开关问题的通法是异或高斯消元+dfs自由元?去学习一下QAQ
P.S学习了


2019.6.27
BZOJ3223: Tyvj 1729 文艺平衡树
emmmm,现在连splay都不会写了都(捂脸)


2019.6.29
BZOJ3040: 最短路(road)
http://hzwer.com/4041.html
吸一口stl


2019.6.29
BZOJ1112: [POI2008]砖块Klo
维护一个滑动窗口,显然全部变为区间中位数最优,可以用平衡树或权值线段树维护对吧QAQ

BZOJ2789: [Poi2012]Letters
这是一个很常见的trick吧,就是求逆序对个数啊QAQ


2019.6.30
BZOJ1935: [Shoi2007]Tree 园丁的烦恼
emmmm,把询问拆成四个前缀和查询,然后排完序树状数组扫描线,注意树状数组那一维要离散化
好像还有CDQ分治的题解???去瞅瞅
P.S会了
https://www.luogu.org/blog/muodoo/solution-p2163
就是先按x排序,在一个区间solve掉以后把它按y排序

BZOJ1677: [Usaco2005 Jan]Sumsets 求和
只会打表爆搜……QAQ
dp,想一想这个题意是不是很像背包QAQ
当i是奇数,必有一个1,f[i]=f[i-1]
当i是偶数,分为有一个1和没有1(全偶数)这时候可以把所有偶数都除以2,f[i]=f[i-1]+f[i>>1]

你可能感兴趣的:(刷题总结,刷题总结)