退役前的做题记录4.0

最近主要在LOJ上写题

536. 「LibreOJ Round #6」花札

比较显然的二分图博弈模型,先手必胜当且仅当起始点一定在最大匹配中。连边可以对每种颜色以及数字建一个点优化到\(O(n)\),一定在最大匹配中的点就是源点不能到达的左侧的点。

556. 「Antileaf's Round」咱们去烧菜吧

生成函数大致就是一大堆\(1-x^v\)乘乘除除的形式,转成对数后根据\(\ln(1-x^v)=-\sum_{i=1}^{\infty}\frac{x^{vi}}{i}\),先\(O(n\ln n)\)地求出\(\ln F(x)\)再\(\exp\)回来即可。

558. 「Antileaf's Round」我们的 CPU 遭到攻击

裸的\(LCT\)维护子树信息,在\(splay\)的每个点上维护“子树内(这里指原树的子树)所有黑点到这棵\(splay\)最左/右的点的距离之和”即可。注意\(reverse\)操作要交换左/右的答案。

2351. 「JOI 2018 Final」毒蛇越狱

存在一个复杂度\(O(2^{\#?})\)的做法:直接枚举\(?\)填什么即可。

存在一个复杂度\(O(2^{\#0})\)的做法:求超集和并对所有的\(0\)位置容斥。

存在一个复杂度\(O(2^{\#1})\)的做法:求子集和并对所有的\(1\)位置容斥。

发现\(\min(\#?,\#0,\#1)\le 6\),所以复杂度\(O(n2^n+q2^6)\)。

2483. 「CEOI2017」Building Bridges

简单斜率优化。发现横坐标不单调怎么办?

不想写\(CDQ\),直接一发二进制分组美滋滋。

式子化出来相当于是要求\(\min\{kx_i+y_i\}\),可以理解为是最小化向量\((x_i,y_i)\)与向量\((k,1)\)的点积,而最小化点积的点一定在下凸壳上,所以维护下凸壳即可。

2496. 「AHOI / HNOI2018」毒瘤

暴力就是枚举每条非树边的状态(要么强制一者不选,要么强制前者选后者不选),\(O(2^{m-n+1}n)\)。

发现很多转移都是重复的,所以可以对\(2(m-n+1)\)个点建虚树,并求出虚树上每条边分别对应的\(f_{v,0/1}\to f_{u,0/1}\)的转移系数。复杂度\(O(n+2^{m-n+1}(m-n+1))\)。

2509. 「AHOI / HNOI2018」排列

序列中的最小值一定会在其父亲被选后立即被选,于是就可以与其父亲合并成一个大块。将最优化的式子划一划会发现只要优先选平均值最小的块就行了,于是用某个数据结构维护一下即可。

2512. 「BJOI2018」链上二次求和

考虑某个单点\(x\)上的权值\(v\)对答案数组的影响:初始斜率为\(v\),在\(x+1\)后斜率减\(v\),在\(n-x+2\)后斜率减\(v\),那么在\(1,x+1,n-x+2\)三处打上标记再做三次前缀和即可得到答案数组的区间和信息。现在单点变成了区间,相当于是变成了四阶差分。做四次前缀和后\(ans_r=\sum_{x=1}^r\frac{(r-x+1)(r-x+2)(r-x+3)}{6}d_x\),所以只要用树状数组维护\(\sum d_x,\sum d_xx,\sum d_xx^2,\sum d_xx^3\)即可。

2513. 「BJOI2018」治疗之雨

列出方程后发现每行在主对角线上只有一个非零位,于是直接自底向上大力高消就行了。

2525. 「HAOI2018」字串覆盖

之前看到这题以为删掉一个子串后前后拼起来可以继续删感觉不可做就弃了,结果今天回来一看发现。。。这是啥。。。

对于给定区间,一定是从前往后能删则删最优。

部分分提示地很明显了。当\(r-l\)足够大时,直接在给定区间内暴找所有的合法区间,最多不会超过\(\frac{n}{r-l+1}\)个。找的过程可以用主席树维护(下标,后缀排序名次)的二维点集,所以复杂度是\(O(q\frac{n}{r-l+1}\log n)\)的。

当\(r-l\)较小时以上方法就不再适用了。但此时我们可以直接对每个长度预处理其后继,然后用倍增优化暴跳的过程,这里的复杂度是\(O((r-l)n\log n+q\log n)\)的。

两者结合即可。注意最好离线否则第二种方法的空间消耗将难以接受。

2572. 「ZJOI2017」字符串

一个结论是一个区间内可能成为最小后缀的后缀数量是\(O(\log n)\)的,证明是考虑两个可能后缀\(a,b\),若\(|b|<|a|<2|b|\),则\(a\)存在一个长度为\(|a|-|b|\)的周期,设\(a=TTc,b=Tc\),\(c\)是\(T\)的一段前缀,可以发现此时\(b\)一定不会成为最小后缀(因为在这种情况下要么取\(TTc\)要么取\(c\)),因此相邻两个可能的最小后缀之间长度至少是\(2\)倍。

所以只需要用线段树维护一下区间可能成为答案的后缀位置即可。维护后缀排序可以直接二分+哈希,由于待修改,所以可以分块维护哈希数组,这样可以做到修改\(O(\sqrt n)\)查询\(O(1)\),这样总复杂度就是\(O(n\sqrt n+n\log^2n+m\sqrt n+m\log^3n)\)。

2710. 「BalkanOI 2018 Day1」Election

离线以后右端点往右扫,维护一个栈式结构以保证所有后缀和大于等于\(0\)。具体方式是遇到一个\(-1\)就加入栈中,遇到一个\(1\)就将栈顶弹出。接下来就只需要考虑使前缀和大于等于\(0\),可以直接用线段树维护一下区间最小值,同时注意考虑在前一步中删去的一些\(-1\)对后一步操作的影响。

2712. 「BalkanOI 2018 Day1」Minmaxtree

对每条边求出它可以选择的权值范围,可以发现在上界与下界中选择其一一定不会更劣,所以问题就转化成了给每种权值找一条边使得所有权值都出现,直接二分图匹配\(O(n\sqrt n)\)就完事了。

至于怎么求权值范围,可以将权值排序后依次加入,这样每次操作就变成了“给路径上还没有染色的边染上一种颜色”,直接并查集维护即可。复杂度\(O(n\log n+n\alpha(n))\)。

2803. 「CCC 2018」平衡树

这个\(dp\)式大致长成\(dp_n=\sum_{k=1}^ndp_{\lfloor\frac nk\rfloor}\)。直接把需要用到的\(O(\sqrt n)\)个位置拿出来在数论分块转移就行了。

2804. 「CCC 2018」最大战略储备

可以理解为一张\(n\times m\)的网格图,每条边可以合并两行/两列。所以还是按照边权排序依次加边,维护一下当前网格图还剩下多少行多少列就行了。

2834. 「JOISC 2018 Day 2」修行

相当于是要求有多少排列\(p\)满足\(p_i>p_{i+1}\)的\(i\)的个数恰好为\(k-1\)。

转化为求期望。这个期望等价于\(n\)个\([0,1)\)随机变量\(a\)满足\(a_i>a_{i+1}\)的\(i\)的个数恰好为\(k\)的概率,而这样的\(a\)又可以一一对应为\(n\)个\([0,1)\)随机变量\(b\)的前缀和的小数部分,其中当\(a_i\le a_{i+1}\)时前缀和整数部分不变,否则整数部分\(+1\)。

于是变成了求\(k-1\le\sum b_i<k\)的概率。

先把\(b_i\in[0,1)\)的限制容斥掉,然后就变成了求\(n\)个\([0,+\infty)\)随机变量之和\(<k\)的概率。这个概率实际上等于\(\frac{k^n}{n!}\)。

2840. 「JOISC 2018 Day 4」糖

链表模拟费用流,即每次选最大的,然后将其前驱后继删除,加入一个新的决策为:反悔当前决策,改为选择该点的前驱后继决策。注意这里的决策是递归定义的。

2879. 「JOISC 2014 Day3」JOIOJI

设\(J=2,O=I=-1\)并做前缀和,这样一个区间的区间和为\(0\)就说明\(J\)的个数恰好是区间长度为\(\frac 13\)。做三个前缀和后找到三维全都相等的两个前缀相减就是答案。

2882. 「JOISC 2014 Day4」两个人的星座

两个不交的三角形一定存在恰好两条顶点之间的连线把它们分开,于是先枚举一个点,极角排序后再依次枚举第二个点,同时维护两点连线分隔开的两个半平面内三种颜色分别有多少个,这样便可以方便地求出答案。最终每对三角形会被算\(4\)次,所以答案除以\(4\)即可。

3010. 「JOI 2019 Final」勇者比太郎

怎么\(JOI\)还有这种送分题啊\(qwq\)

3011. 「JOI 2019 Final」画展

展出的画一定会放在若干个最大的画框里,所以考虑贪心,按美观度从大到小尝试放入当前的最大画框即可。

3012. 「JOI 2019 Final」有趣的家庭菜园 3

从前往后\(dp\),设\(f_{i,j,k,0/1/2}\)表示三种颜色分别放了\(i,j,k\)个且最后一个颜色为\(0/1/2\)的最小代价。转移枚举接下来放哪一种颜色,根据原序列中每种颜色的出现位置计算一下代价就行了。

6101. 「2017 山东二轮集训 Day1」第二题

建出笛卡尔树后可以发现每次的\(k\)块砖头必须放在一条直链上(即任意两点均存在祖孙关系),所以从每个叶子开始放就行了。

6105. 「2017 山东二轮集训 Day2」第三题

因为\(C_i\)无交所以直接看做点权,如果\(i\)向\(A_i\)中的每个元素连边那么会连出一张\(DAG\),\(B_i\)实际上就是这张\(DAG\)上\(i\)点所有支配点的点权之和加上自身,也就是其在支配树上的深度。所以直接维护支配树即可,由于查询的内容是链并,所以可以用\(LCT\)打标记以及链上二分的方式搞搞。

6140. 「2017 山东三轮集训 Day5」Dark

题面不知道在讲什么。令\(ans=\sum_{d|n}\frac{n!}{(d!)^{\frac nd}(\frac nd)!}\),要求的东西是\(m^{ans}\mod P\)。所以直接卢卡斯就好了。

6142. 「2017 山东三轮集训 Day6」A

如果\(n\)是奇数,那么\(\binom{2n}{n}\)种情况之间可以恰好一一对应,且对应的两种情况中偶数个数的奇偶性不同,所以答案除以\(2\)即可。

如果\(n\)是偶数,结论是当\(n\)是\(4\)的倍数时答案为\(\frac{\binom{2n}{n}+\binom{n}{n/2}}{2}\),否则答案为\(\frac{\binom{2n}{n}-\binom{n}{n/2}}{2}\)。

6144. 「2017 山东三轮集训 Day6」C

\(Xor\)可以打全局标记,然后在\(Trie\)树上走的时候就只需要根据标记判断方向即可。

\(And\ 1\)与\(Or\ 0\)操作没有意义,\(And\ 0\)与\(Or\ 1\)会使所有数在某一位上由不同变得相同,而这种“由不同变得相同”只有至多\(O(\log a_i)\)次,所以每次暴力重构就行了。

6146. 「2017 山东三轮集训 Day7」Normal

循环卷积+单位根反演。

设一个步长的生成函数为\(A(x)\),要求的相当于是\(\sum_{i=0}^T[k|i]\binom TiA(x)^i\),这里的乘法定义为循环卷积。显然答案等于\(\frac 1k\sum_{i=0}^{k-1}(1+\omega_k^iA(x))^T\)。

由于\(n\)是\(2\)的次幂,所以直接\(NTT\)就可以实现循环卷积。

6157. A ^ B Problem

直接\(dfs\)就行了。

6275. 棋盘

显然不能把\(k\)记到状态里去。如果定义当前局面的权值为\(连通块个数x^{\mbox{连通块个数}}\),那么就只要把\(\omega^0\)至\(\omega^{k}\)代入再\(IDFT\)回来就可以得到答案了。

考虑怎么对于给定的某个\(\omega^i\),求所有局面的总权值之和。由于\(n\)很小所以可以对每列状压并记录连通性(同构的部分可以一起转移,在\(n=1\)时状态数为\(2\),\(n=2\)时为\(3\),\(n=3\)时为\(7\)),然后矩乘转移,复杂度大概就是\(O(nm7^3\log m+nm\log nm)\)。

6300. 「CodePlus 2018 3 月赛」博弈论与概率统计

考虑在一张网格图上,从\((0,0)\)出发走到\((n,m)\),赢一局就向右走一格,输一局就向上走一格。可以发现一种方案的最终收益至于这条路线中\(y-x\)的最大值有关,当\(n\ge m\)时答案等于\(n-m+\frac{\sum_{i=0}^{m-1}\binom{n+m}{i}}{\binom{n+m}{m}}\),否则答案等于\(\frac{\sum_{i=m+1}^{n+m}\binom{n+m}{i}}{\binom{n+m}{m}}\)。

所以问题在于怎么求\(\sum_{i=0}^m\binom{n}{i}\),即组合数前缀和。

设\(f_{n,m}=\sum_{i=0}^m\binom ni\),首先由\(f_{n,m}\)可以很容易知道\(与f_{n,m-1}与\)\(f_{n,m+1}\)。然后我们有:\(f_{n+1,m}=\sum_{i=0}^m\binom{n+1}{i}=\sum_{i=0}^m\binom{n}{i}+\binom{n}{i-1}=2f_{n,m}-\binom{n}{m}\)。

于是四个方向移动都可以\(O(1)\)实现,直接莫队即可做到\(O(n\sqrt n+T\sqrt n)\)。

6338. 「SDWC2018 Day2」优秀

\(dp\)状态记录\(f_{i,j,k,l}\)表示加入了\(1-i\)共加了\(j\)个数,尚未满足相邻相差为\(1\)的数有\(k\)个(且这\(k\)必须都是\(i-1\)),排列的方案数为\(l\)的方案数,其中\(l\)的上界为\(k\)。

转移时枚举当前数加多少个:至少\(k\)个,且若加\(x\)个相当于把\(x\)个球放入\(k\)个盒子里且每个盒子至少一个球的方案数,即\(\binom{x-1}{k-1}\)。

复杂度看上去是\(O(n^5)\)的但是不满所以跑得很快,可能可以分析得到更低的复杂度。

6339. 「SDWC2018 Day2」线段

很显然可以对线段的\(2n\)个端点建立拓扑关系,然后就是要求最小字典序标号。

正确的姿势是倒着做,即反向建拓扑图,每次给入度为\(0\)的编号最大的点安排最大的标号。

6354. 「CodePlus 2018 4 月赛」最短路

异或操作只需要每一位连一条出边就行了,总边数\(O(n\log n+m)\)。

6401. 字符串

求出每个本质不同串的最长合法长度\(val_u\),答案就是\(\sum\max(0,\min(len_u,val_u)-len_{fa_u})\)。

6494. LJJ 的字符串

枚举\(i,j\)的差,类似NOI2016优秀的拆分那样可以连续一段的\(i,j\)一起计算贡献。不知道发生了什么反正我写的就是一个四阶差分。

转载于:https://www.cnblogs.com/zhoushuyu/p/10451868.html

退役前的做题记录4.0相关推荐

  1. 退役前的做题记录5.0

    退役前的做题记录5.0 出于某种原因新开了一篇. [CodeChef]Querying on a Grid 对序列建立分治结构,每次处理\((l,mid,r)\)时,以\(mid\)为源点建立最短路树 ...

  2. 退役前的做题记录1.0

    退役前的做题记录1.0 租酥雨最近很懒qwq,具体表现在写题的时候不想发题解了. 但是想想这样也不太好,就决定发个一句话(半句话到几句话不等)题解上来. 2018-09.18-2018-09.28 [ ...

  3. 退役前的做题记录2.0

    退役前的做题记录2.0 最近在刷省选题......大致上是按照省份刷的. 不过上面的题目顺序是按照写题的顺序排列的,所以可能会有点乱哈. [BZOJ2823][AHOI2012]信号塔 最小圆覆盖,随 ...

  4. 概率期望题(期望 DP)做题记录

    概率期望题(期望 DP)做题记录 P3830 [SHOI2012]随机树 难点在于第二问:生成树的期望深度. 不 wei zhuo 捏,设 \(dp_{i,j}\) 表示已经有了 \(i\) 个叶子结 ...

  5. 数数题(计数类 DP)做题记录

    数数题(计数类 DP)做题记录 CF1657E Star MST 我们称张无向完全图是美丽的当且仅当:所有和 \(1\) 相连的边的边权之和等于这张完全图的最小生成树的边权之和. 完全图点数为 \(n ...

  6. Regional 做题记录 (50/50)

    写在前面 博主深感自己太弱了QAQ 于是有了一个刷水的想法,Regional的题目还是有很多考查思维的题目,所以这次是乱做50道思考题,可能会顺带做一些水题,这些题的简要题解会写到这篇博文里面,希望能 ...

  7. 2020.7月做题记录

    转眼就到了2020的下半年了-前方仍是一片茫然. 长期计划 prufer 序列 2020.07.02-2020.07.04 Problem Finished P2624 [HNOI2008]明明的烦恼 ...

  8. 【Pikachu】漏洞练习平台做题记录+原理解析(2.2)XSS姿势和技巧

    前言 Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞. 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意. pikach ...

  9. 2020.9月做题记录

    八月的做题记录因为是暑假所以鸽掉了. 离联赛真的不远了,要继续努力啊qwq- week -1 2020.08.30 2020.08.30 今天考试,修了20+次锅,修的我都没有心情做题了- 然后开始消 ...

最新文章

  1. 葡萄城报表介绍:复杂报表
  2. P1417 烹调方案 (0/1背包+贪心)
  3. MySQL 4.1/5.0/5.1/5.5各版本的主要区别
  4. mysql正则表达式regexp_mysql - 正则表达式 RegExp
  5. 组织与科目等维度构建
  6. jsp 使用base标签 没有作用_JSP学习篇
  7. leetcode 1504. Count Submatrices With All Ones | 1504. 统计全 1 子矩形(单调栈)
  8. JavaScript取出字符串中括号里的内容
  9. c++ 提取傅里叶描述子_AI大语音(四)——MFCC特征提取(深度解析)
  10. c11语言编译器,GNU C编译器的gnu11和c11
  11. 关于自抗扰控制的稳定性分析
  12. 深度置信(信念)网络DBN(Deep Belief Network)
  13. java8 成绩分数排名
  14. C#使用Microsoft.Office.Interop.Word操作word书签位置插入Wingdings 2复选框
  15. python 头条号_python爬取今日头条收藏目录
  16. Linux Raid相关知识
  17. 哪种变压器好-如何选择好的变压器-有哪几种型号和规格呢?
  18. 计算机突然从桌面消失了,电脑桌面word突然消失怎么办
  19. 计算机考研初试复试分数占比,复试=录取?2020考研等额复试的高校!这些院校初试占比为70%!...
  20. 游戏开发与设计中的“3C”是指什么?

热门文章

  1. Mac不能复制拷贝文件到U盘?看这里就对了!
  2. iOS8 横竖屏控制
  3. Ucloud云的ufile组件使用
  4. Word文件转为PDF格式后为什么字体会有改变?
  5. 5.3基于LFSR的生成器
  6. Matlab 点云旋转之四元数
  7. 从零开始一个微信小程序版知乎
  8. Excel筛选后数据如何汇总计算?
  9. 增词程序c语言,2012年成人高考英语三级翻译参考资料
  10. ubuntu服务器接入两块系统盘,两块硬盘Raid0安装ubuntu server11.04