【记录和一句话题解】NOIP2018之前的记录

woc,,,,居然距离NOIP只剩24天了,,然而前几天还是很颓地撸了会儿(可能不止一会儿)刺客信条。洋洋洒洒写一篇题解太花时间,但确实需要记录总结一下。可能会同时放一些吐槽等。如果。。。可能是最后24天了。 主要还是跟着老板和OB大神走。

2018/10/16:

1802: [Ahoi2009]checker
O(n) f[i]表示在i这个位置在初始化完之后利用红棋子出现一个棋子的最小花费。当a[i]==1,f[i]==1,然后f[i]=min:f[i],f[i-1]+f[i-2],min:f[i],f[i+1]+f[i+2],然后完了之后判断偶数位置上的dp如果没有被更新,那么第一问上必须放,否则就加到第二问答案上(显然对于最左子到最右边要放的棋子固定)
bzoj 4242水壶
对于每个点加入队列,然后宽搜,当两个点相遇的时候连边。可知,一个点不可能跳过中途某个其他点的范围连边,否则构最小生成树不够优秀。这样之后连边是O(4wh),之后一个裸的克鲁斯卡尔重构树或者一个裸倍增就可以了。

2018/10/17:

bzoj 3832:  [Poi2014]Rally
一道神奇的题目!我们考虑一条边(u,v)那么一定top序u<top序v,我们记录F[x]表示以这个点为终点的最长路,G[x]为以这个点为起点的最长路,那么对于一条边他对答案的贡献就是dis(u,v)+F[u]+G[v],那么我们完全可以按照拓扑序,从小到大依次讨论,一开始将所有的G[x]放入set里面(因为拓扑序比当前讨论节点高的一定不会经过该点)。之后其实我们将所有的点分成了两个集合,一个集合是讨论过的,一个没讨论过,我们删去讨论过集合中对讨论删去节点x的边,可以保证答案总是要么为讨论过的F[[x],或者未讨论的G[x],或者有一个从未讨论集合连向讨论过集合的边造成的答案贡献。在讨论完删去点之后,将这个点连向未讨论节点的边进行的贡献加入set,放入讨论过集合(实际实现权值线段树也可行)
「NOI2018」归程
感谢Katoumegumi大神教授的克鲁斯卡尔重构树。显然我们开始从某个点出发可以到的点必定是一个联通块,将这个联通块连起来的边一定海拔比水平面高,然后我们再讨论这个联通块中到达1号节点距离最短的点。由于我们在海拔超过水平面的地方走路没有消耗,所以我们优先选择海拔高的边走。这样,在我们利用克鲁斯卡尔重构树构出一颗最大生成树后,对于海平面一下某节点,对于其下整颗子树一定也是可以任意遍历到达的。所以我们利用倍增找到这样的海拔超海平面且深度相对更低的点,dijstra预处理之后找到子树最小到1距离就可以了。
bzoj1880 [SDOI2009]Elaxia的路线
之前考试做过类似的题,代码就不code了(当时并没有做起啊orz),我们对于同时在两个最短路上的边砸进新图,然后topsort求最长链就可以了,就是四个SPFA(dijstra)+topsort。
luogu 4046 [JSOI2010]快递服务
比较简单的DP,f[i][j][k],处理到i事件(则第一个司机一定就在i上)第二司机在j,第三司机在k上,最小油费,滚动一下就可以了。利用下一步某变量一定在的位置优化掉DP的一维是常见的方法,值得注意。
luogu 4047  [JSOI2010]部落划分
(没有code)口胡了一个二分+并查集的方法判一下集合有没有k个就可以了。看了下题解,也可以n^2暴力连边之后sort一下边,类似于最小生成树,每次合并必定减少一个部落,那么我们合并n-k条边,那么n-k-1条边就是答案。 今天去看了nk82年校庆随之而来的雷雨话剧节,都很精彩,虽然不知道为什么,看得越精彩越是能让我想起一些伤心的往事,算了,让他随风去吧。。明天运动会,,,orz还没停课,,,orz感觉自己 这么弱,要被虐orz

2018/10/18

bzoj3252攻略
求出f[x]表示以该点为根的最长链,由于可以证明每次一定是选择当前的最长链,并且一定是在原来树中子树最长链。贪心一条一条覆盖链就可以了。 打了一场练习赛,很惨,不忍直视,果然还是太弱了orz 第二题:卡特兰树板子题。然而模数不一定是质数,人生只写过一次扩展卢卡斯的我没写出来,结果后来发现,,其实质因数分解一下就可以了啊,,但是或许考前还是要复习一下扩展卢卡斯板子 第三题: POI2012的distance,这个就是数学推一下,发现对于两个数他们答案就是cnt[x]+cnt[y]-2cnt[gcd],(cnt表示质因数个数和),我们预处理cnt,f,f[x],表示在A数组中,min:cnt[kx]-cnt[x]和次min:cnt[k*x]-cnt[x],这样我们再对每个数枚举因数,找到f最小(如本身最小就选到次小),同时编号最小的那个数编号。枚举因数即可。还是太弱了,完全没往这边想 总体数学依然是我最弱的orz orz orz ,还需要加强。 复(yu)习子矩阵问题 

2018/10/19

往事已随风。 今天复习了一下扩展lucas,肝了很久扩展BSGS也没搞懂,等NOIP后没退役再来看吧(flag orz) (upd:感觉特别累,运动会整个十分无趣,晚上居然7点就睡了)

2018/10/20

bzoj3700 发展城市
树上路径交。对于树上两条路径,判断他们是否有路径交-->他们各自的LCA中,判断深度较深那个是否在深度较浅的那个路径上。判断某点是否在一条路径上也很简单,dis(a,x)+dis(x,b)==dis(a,b)就可以了。然后如果相交,他们的路径交两点就是在除他们两个自身的LCA以外的两两LCA中深度较深的两个。如两路径(a,b) (x,y) ,那么就是在LCA(a,x) , LCA(a,y) LCA(b,x) LCA(b,y) 莫名地颓,感觉肝了一天的作业,然而并做不完orz

2018/10/21

woc,只有整的20天了,然而感觉前两三天颓过去.otz otz otz 上午一场模拟赛orz orz orz,又挂了,全场最菜。 居然最水的A题题读错了,于是对拍愉快瞎拍两小时,B题有个细节没有处理到 C题 BZOJ 4238 电压。题意:使一条边两边颜色相同,然后看能不能二分图染色成功。显然这样的边一定不在偶环上,并且应当在整张所有的奇环上。转边为点,搜索树判环然后树上差分一下就可了。
牛客网提高3
A题,题意:n,m<=200,对于这样一张图,默认周围一周全是0,每个点各自有一个成为1的概率。也就是对于随机的这样一张图,对于每个为1的点有个权值,权值为和他曼哈顿距离最近的0点的曼哈顿距离,求每个点的平均权值。 对于一个点,权值至少为K的概率为曼哈顿K以内所有点的概率之积,对于恰好为K,那要再乘上(1-K旁那一圈全堵塞),这样保证一圈至少有一个0。然而其实答案就是恰好1+恰好2+....+恰好K,因为对于恰好X次而言,他在里面恰好被算了X次,也就是期望==次数*概率。 B题,题意:找到最小环满足a1 win a2 , a2 lose a3 ,a3 win a4,a4 lose a5 .....akl lose a1。就是最小二分图染色环,那么我们拆成两个点,分别是胜点和输点,连边胜点向输点连无向边,这样我们只需要找出一个最小的环就可以了。由于二分图的稠密图,直接BFS,可以很快找出环。
【NOIP2012 day1】国王游戏
贪心。让左手*右手乘积小的放前面(证明?不存在的),重点是高精度乘和高精度除。orz 晚上复习了分治,并报了名(贼帅)
最近点对
平面图n个点(n<=1e5),求最近的一对的。考虑分治,按照x排序之后,类似CDQ的想法,只考虑跨过分治中心的点对。对于在分治中心当前ans距离以内的点按照y排序之后,枚举点对。实际上由于鸽巢原理,每次最多只用枚举6个,这样就保证了下界nlogn上界nlog^2n(口胡的时间复杂度)。

2018/10/22

牛客OI周赛1
A题:类二分图染色(度数最多3,最多和一个相邻的同色),由于某些度数最多只有三,我们完全可以保证其有解。因为如果无解,则一定有个点和其他的连成了2-3条边,我们反色掉这个点,保证对于全局不合法的点从数量上至少消除了一个。直接二分图染色瞎搞,面对颜色相同>=2的反色即可。 B题:https://www.nowcoder.com/acm/contest/199/B 尚待填坑orz,只是时间有点紧张地可怕,只能先拖着了。 【SDOI2011 】消防:就是数据范围加大版的树网的核。肯定最后那条路径一定是在直径上的,所以我们找出直径后,枚举直径上长度尽可能长的路径(滑动窗口),之后对于答案一定就是路径到左右端点最大值和路径上到达非直径点的最大值。可以用单调队列一下,比较懒,直接砸进了set里。 晚上打了一场分治练习赛。不是很难,一个多小时敲完感觉之后就颓了很久orz,最后AK了Orz。

2018/10/23

CQOI2010扑克牌
直接二分答案,然后J牌取min(二分值,m),然后看如果牌数比二分值小就看J牌能不能填足。
SCOI2009 最长距离
水题,分层图BFS一下就行。
牛客网提高4
A题,水题,不想写。 B题,一段序列(4e6),求某个区间所有的数都是区间中某个数倍数。贪心暴力考虑一个点作为最小值可以向左向右的区间覆盖,然后从未被覆盖的第一个数再开始考虑。因为被覆盖的都一定没有他优. C题 一个很诡异的DP?大概就是dp[i][j]表示更新到i个区间,只考虑更新到pos[j]左边的最大覆盖面积。 讨论到p,对于向左覆盖直接更新。对于向右讨论到x,如果x可以向左覆盖到p点以左,应对比较一下,能不能用更大的DP值更新。 具体跟本讲不清楚(也只是勉勉强强在OB的讲解下过了orz) 晚上想课后练习7剩下的两道orz题(upt:不存在的orz) Codechef REBXOR 求区间异或和最大。面对这样的问题,普遍想法应当是得出前缀和,从高位贪心走和自己相反的数上位,完后又砸进trie里搞。奶牛异或同理。 复习了HASH(突然发现二分+hash可以水一些自动机板题),trie树,学习了一波HASH表。 中山纪念中学 Trie 考虑合并两颗trie树可以减少的量为每个字母最小相同数的总和,之后状压一下就完了。 这样说起来晚上好颓废orz

2018/10/24

NOI2014动物园
KMP,num[i]就是暴力一直跳next到之前某个<n/2的某个节点,然后看还能暴力跳几个。我们对于每个点可以发现next是呈一个链表结构的,于是我们预处理出从某个点开始一直裸跳next的次数,然后类似之前KMP处理next一样,只匹配到一半的fail数组,答案就是这里之前预处理出的值了。
BZOJ1531 [POI2005]Bank notes
裸的单调队列优化多重背包,复习了一波多重背包
 [SDOI2008]Sandy的卡片
其实本质很简单,差分之后找出对于每个串的最长公共子串,那么二分+hash一下就可以了。然而十分智障地写鬼了,化学课灵机一动,想起了一个十分智障的错误(重复的串多次砸进hash表)。据说OB说求n个串的最长子串有DP,O(mn)的算法?orz orz orz 有机会学一波。
bzoj3444最后的晚餐
甚至连组合数学都算不上吧。。直接dsu判断合法和联通块,最后联通块!*(2^大于2个数的联通块个数)。注意细节orz,否则NOIP爆0了都不知道怎么回事。
bzoj4627回转寿司
就是判一下前面有多少个前缀和在区间范围内的,离线+树状数组或者直接动态开点线段树都可以的。 晚上做了一套比较简单的%你赛,都是一眼题,要注意好细节。。还好第二题对了个拍,有个细节没处理好。以及应该锻炼锻炼暴力能力。。总感觉暴力程序比正解难写(要么暴力就是指数级别的)。
4027: [HEOI2015]兔子与樱花
从底贪心,优先选择最小的儿子删除。无法证明其贪心正确性orz

2018/10/25

牛客网提高5
吉老师的题好难啊,,我太弱了,暂时先拖到后面来做,补全了牛客提高4C 晚上打了一道模拟题,考得很差。第一题本来是一道裸的tarjan联通分量,一直在想边双联通分量割桥(然而完全没有写过),又总感觉不用缩点,构了几个数据都没有构出必须缩点的。于是就直接上了树的结论200b,于是爆炸了。第二题卡了很久,写完70分爆搜之后一直在想怎么继续推下去,然而考前最后5分钟重读题才发现读漏了点什么"质数的平方",这显然是提示我们分开讨论啊!然后自己瞎搞了一下也没搞出来。晚上调到0点半才发现这个方法是有问题的,正解是分组背包一下。第三题完全没想法,写完暴力就不管了。然而出来发现原来是有规律的,这和去年D1T1一样需要打表orz.现在对于诡异的数学题,应该想到打表尝试去找到他们的规律。

2018/10/26

下午打了一场模拟赛。T1字符串大师,类似KMP乱搞一下就可以了(然而我时间复杂度写鬼了还过了 ),T2居然是正序对结论题,思路完全没有打开,T3背包DP居然写鬼了orz,当物品的价值会根据DP状态变的时候DP就变得有后效性了,我居然没发现orz.考场中被第二题的诡异给恶心到心态大炸。这样不太好,导致没有理性分析T3.
【SCOI2010 DAY2】字符串
把1加一个看作(x+1,y+1),0加一个看作(x+1,y-1),那么就是从(0,0)到(n+m,n-m)的方案数。利用容斥,我们发现不合法的方案数必定有一个时刻y==-1。那么就相当于在n+m步中多走了一步0,少走了一步1.最后答案就是C(n+m,n)-C(n+m,n+1)(据说这和卡特兰数有关?orz). 晚上颓废的尝试做了很久的牛客网题,然而太毒了orz,暂时先放着吧orz

2018/10/27

早上一套%你题。T1恶心的斜缀和(斜着前缀和),思路显然,就是老是脑子混沌,重画了好多次图才搞出来。T2水题,T3比较显然的搜搜搜预处理+背包。然而搜搜搜那里回溯那里搞忘还原了,差点爆炸。最后还是勉强AKorz.
【CQOI2009】中位数
利用一个数比基准数大还是比基准数小,来前缀和一下,之后用数组存一下,找到前缀和相同,且基准数恰在其中的对数就可以了。
Luogu3403跳楼机/luogu2371墨墨的等式
这是一道数学?不,这是一道图论。观察发现X,Y,Z都很小。我们首先转化为在同余最小的那个距离上搞,这样我们就可以找到第一个在%X(假定X是最小)最小的到达那个%X意义下的最小高度。这样%X意义下其他楼层更高的也一定可以到达。这样我们跑一下SPFA(显然这种题对SPFA十分友好),就可以找出来了,之后就随便搞出来了。这道题可以推广到  [国家集训队]墨墨的等式 这道题,只是H有上下界,同时系数和未知数变为了12。
【NOI2014 Day1】起床困难综合症
从高位开始按位贪心,直接看当前选完的加上这一位是否比m小,如果是看能不能使答案更优。如果可以更新。如果相同,选为0.这种按位贪心的思路对于位运算的题经常见,然而我居然并没有第一时间感受到,实在做得题太少,实力有待加强。 下午把杂题选讲的PPT做了。。orz orz

2018/10/28

上午一套%你赛,然后很尴尬的老板放了两道做过的题,大概1个小时写完之后就一直颓。这样还是不好,,,不然挂了就尴尬了。 下午和晚上讲了杂题,还听dalao们讲了自己的杂题。。只能说太强了orz.
[USACO07MAR]黄金阵容平衡
就是看前面有没有在差分意义下相同的(强制某一位为0就可以了),hash一下搞。
【Ceoi2016】match
很容易想到贪心的放,可怎么放呢?在我们判断无解是利用一个栈看最后是否为空。其实如果两个栈hash相同的话,我们就可以在他们之间放括号了(因为一定存在有解),那么我们从右边开始选择放,分开成两个(类似分治)处理就可以了。
[FJOI2016]建筑师
因为之前做过一道类似的题,即在询问一次的做法下。而实际上,我们考虑这道题,其本质就是将其n个元素,以第一类斯特林数的方法(因为在两两之间插空)划分成a+b-2个集合(自己看得到自己)。然后考虑a+b-2个集合中选a-1个分别放到最高点左和最高点右。答案S1[n][a+b-2]*C[a+b-2][a-1]。(注意S1[0][0]=1)
[JLOI2015]有意义的字符串
-->(1/2)^n[(b+/d)^n + (b-/d)^n] - (1/2)^n(b-/d)^n 后面那堆如果d^2==b或者n为奇数不管,否则减1(一个小于1的小数) 设(b+/d)为A,设(b-/d)为B 那么通过A^n + B^n == (A^(n-1) + B^(n-1))(A+B) - (AB)(A^(n-2)+B^(n-2)) 事实上十分恶心啊orz orz orz因为,这个模数如果光long long 连加法都会爆,O(1)快速乘还有精度问题orz orz orz.
[CERC2017]Gambling Guide
因为f[x] = sigma(min(f[x],f[y])/ds[x] )+1 (ds[x]为x的度数) 可以想到由f[n]=0,最短路倒推回来,那么我们类似dijkstra的写法,发现,设我们有a个f[y]更新了f[x],那么式子,f[x] =( sigmaf[y] +(ds[x]-a)f[x]  )/ds[x]+1 -->ds[x]f[x]=sigmaf[y]+(ds[x]-a)f[x]+ds[x]-->af[x]==a*f[y]+ds[x]-->f[x]==(sigma(f[y]+ds[x])/a。那么没每次更新f[x]之后放进堆里面再继续跑dijkstra更新,最后答案就是f[1].

2018/10/29

【zzy】yyy送礼物
网上偶然看到的题,感觉很有趣。 问[latex][\sum\limits_{}^{} {n\% i(1 \le i \le n)(n \le 1e7,T \le 1e6)} ] [/latex]T指的询问次数。感觉第一个想法就是除数分块啊,可是一看询问次数orz orz orz。这说明其实有个东西一直没有掌握好。首先我们转化为[latex][{n^2} - \sum\limits_i^n {\left\lfloor {\frac{n}{i}} \right\rfloor } * i][/latex]。对于[latex][\sum\limits_i^n {\left\lfloor {\frac{n}{i}} \right\rfloor } ][/latex]其实我们发现这个东西就是n以内所有的约数个数的和(比如i=2,约数有2的有n/2三个2,4,6)同时这个东东i,就是约数和的和(包含2的有3个,那么约数2造成的贡献就是32),考虑所有的因数,最后就是n以内约数和的和。我们可以线性筛预处理一下就出来了。
Luogu3369哈希冲突
%%hdhd大佬,一来就把这道题秒了。这道题想到对于hash模数大于根号的暴力,对于小于根号的每次修改的时候根号n修改就可以了。这样每次询问和修改都能在一个根号的时间内完成了。 昨天上午做了一套学长们的模拟题Orz差点爆0,晚节不保。确实很有趣的题啊,,只是我可能前两题太浪了,太过自信,然而orz. A化学方程式,,就是给你一个化学方程式判断两边元素是否守恒。他们觉得很难写?我觉得还好啊,,就是一直不知道TiO2+6HF-->H2(TiF6)+2H2O,原来化学方程式在括号后面可以不打括号,我化学太弱了orz.于是惨烈爆0 B第二题原来我做过的啊,,还印象深刻那场比赛就我把他做出来还是我讲的题,然而,然而数组混用orzorz这道题没爆0或RE算好的了。 C第三题,真是orz了呀orz,线段树加+set,考场上写了个树套树,,,似乎没写错,,但是似乎当空间不足的时候set就insert不进去了orz orz orz,空间不是很正确,直接爆0.
star way to heaven
最大值最小?二分?发现数据不行,想到二分之后其实两两之间其实距离相同的。想到生成树,然后突发现从来没写过非堆优化prim。在线学了一波。
路径数
最短路径树dp板子题,然而搞忘判定往回走的情况,瞬间爆炸。
渡河
大概就是运狗问题(即一条河,一条船,运狗时两岸无冲突。类似BFS一样DP状压模拟转移一下就可以了。

2018/10/30

今天两场模拟赛又都爆炸完了。其实原本不应该得这点分的,本来期望得到的好多分都没得到,感觉好累。 第一场A,卡特兰板子题,B,以每个点为根跑DP(其实就是从根这里的最长路和最短路),理论上只需要处理一个点当根,然后考虑换根的影响就可以了。结果当时以为自己很机智想了一个以树上的边作为状态的DP。最后T飞。后来想到,如果以边作为状态,对于菊花图,就会边松弛点枚举边很多次,时间复杂度是错误的(类比SPFA)。以后尽量还是注意边状态和点状态的区别(据说边分治会用到边做状态?orz orz orz 到时候再说吧)。T3诡异的期望DP+基环外向树+动态维护。太神了orz,只能拿前50分,然而并没有拿到,有一个地方考场上没思虑周全,结果一下来就出来了,总的说还是不够清醒地分析(就不改了吧,,太毒了,对每个环线段树维护系数,对树链再维护系数orz).
树上问题
给定一颗树(n 3e5),一个k(0->10),求有多少条路径里面点的两两编号差的绝对值的最小值>k。我们发现k很小,然后利用容斥直接枚举不能同时出现的对,消除掉不合法的情况。我们发现不合法的包含这些点对的一定是在两个点的子树之间(两点有孙祖关系特判一下)。由于dfs序连续,我们将他们折射到平面上就相当于一个n^2的正方形里面出现了一些矩形,去掉这些矩形的面积。扫描线处理即可。 一套计蒜客的题 2017 NOIP 提高组模拟赛(五)Day1 十分爆炸,险些爆0。orz,
机智的 AmyZhi
显然直接枚举len*9以内的(或者其实一位一位枚举也是可以的)。要卡卡常--->考虑类似计算__builti_popcount()的方法,先打表预处理。常数直接爆炸。
展览
一道神奇的题。如果公比不是1(这个要特判一下),那么一定长度是log级别的,所以实际上甚至枚举长度的问题都不大。之后就是稍微数学推导一下+set判重的问题了(其实对于我这样的数学蒟蒻真是不是稍微的事情)orz。
抢座位
我们发现其实限制条件非常多,直接选定那M个人在哪些位置爆搜就可以了,因为如果某个人选的x,安排在了y,他们中的y-x人一定编号比他小,所以我们将那m个人按照编号排一下序。这道题和另外一道题HAOI2011 problemA非常地类似(题面基本就是一模一样好么),只是那个是算安排的方案数。对于那道的做法看了看题解。。。orz,貌似是倒着位置往前推回来,因为倒着位置就可以判断一个安排的方案的合法性(因为一个固定数字的人其只对他及他后面的位置有影响)。

2018/10/31-2018/11/2

这两三天没更新,因为一些版权原因,不再公开本校的练习赛和练习计划。可能会放一些我本人自己偶然遇到的一些有趣有意义的题。
luogu3400仓鼠窝
就是询问一个0/1方阵中有多少个全1矩阵。这个我们考虑枚举每一个点作为矩阵的右下角端点。之后一行行枚举,并一列列扫描,利用pair单调栈维护高度和长度,这样就可以搞出来了。虽然我单调栈和单调队列特别废,简直跟没学一样 orz orz orz,可能有必要做点关于单调栈队列的题。(虽然这个坑人的退役倒计时啊啊啊) 大概说一下这几天的比赛情况,十分不理想,基本上都是排名倒数。想了想,其实很多时候要么是没有注意到细节,要么就是在想到一个方向之后没有更多的深入思考,去想他的内部,或者想我目前想出的方案是不是只是有关这道题目的特殊情况,或者有特殊情况没有考虑到。我想了下 ,这可能是我平时不太注意自己十分不好的做题习惯导致的 。对于平时在OJ上,如果思虑不周全,或者搞忘了加个什么东西,完全可以在WA了之后及时补上,看上去2,3次提交就过了似乎很理想,但实际上一个比较好的状态应该是一次就过,因为比赛和很多事情一样没有重来。 没有重来,意味着必须要思维严密,反复多读自己写的是什么东西,意味着要多加考虑,并不能过分发散,发散思维应该与题目有相关性,不应像平时做题一样直奔AC正解而去,而应从部分分或者暴力分下手,这可能也是需要练习的--如何从部分分下手着入。 希望这倒数7天不是退役倒计时,只有弱者才相信命运。
posted @ 2018-10-16 21:16  Newuser233  阅读(7)  评论(0)    收藏  举报