09 2019 档案

摘要:分类讨论(以下仅考虑行,列的情况):1.4行的,求出每一行的和后找到4个最大值即可;2.3行1列,枚举列,再将每一行最大值减去那一列的值后取3个最大值得和即可;3.2行2列,发现行和列是等价的,因此可以通过旋转使得$m\le n$,又因为$nm\le 10^5$,所以$m\le \sqrt{10^5 阅读全文
posted @ 2019-09-28 12:26 PYWBKTDA 阅读(253) 评论(0) 推荐(0) 编辑
摘要:将每一个ai表示为$ai=ki\cdot m+ri$,即满足$m\sum ki+\sum ri=n$且$0<ri<m$枚举$S=\sum ri$(S范围是$k\le S\le k(m-1)$且与n同余,只有k个值),之后相当于让$\sum ki=(n-S)/m$,根据插板法以$o(k)$(c的定义) 阅读全文
posted @ 2019-09-23 18:18 PYWBKTDA 阅读(198) 评论(0) 推荐(0) 编辑
摘要:简化问题:如果没有2操作,答案是多少贪心:修改-一定修改最前面的,修改+一定修改最后面的,正确性显然而通过1操作,要完成两步:1.让最终结果为q;2.让前缀和非负,通过贪心可以获得最小值(具体来说,假设初始有nq个+,np个-,第一步操作后前缀最小值为k,那么答案为$(|p+nq-np-q|/2+\ 阅读全文
posted @ 2019-09-21 10:53 PYWBKTDA 阅读(195) 评论(0) 推荐(0) 编辑
摘要:可以用并查集维护连通性,删除可以用按置合并并查集,但删掉一条边后无法再维护两点的联通性了(因为产生环的边是不加入的)暴力思路是, 考虑前i个操作后边的集合,暴力加入即可,但复杂度是$o(n^2)$的用分块,对于每一个块,先求出前面所有块操作后边的集合,去掉这个块内删掉的边,这个并查集一定是之后这个块 阅读全文
posted @ 2019-09-21 06:26 PYWBKTDA 阅读(365) 评论(0) 推荐(0) 编辑
摘要:这道题如果没有功率的限制,显然就是一个裸的2-sat 考虑将功率的限制也放在图上:如果选择了功率i,那么功率区间不包含它的点只能不选,连边即可 但是这样建图的边数是o(n^2),需要优化 将功率区间分为两种,一种在这个点前面,另一种在这个点的后面 同样将功率也裂成两个点,分别连向这两种区间,因为功率 阅读全文
posted @ 2019-09-18 07:10 PYWBKTDA 阅读(378) 评论(0) 推荐(0) 编辑
摘要:下面先给出比较简单的KD树的做法—— 根据圆心建一棵KD树,然后模拟题目的过程,考虑搜索一个圆 剪枝:如果当前圆[与包含该子树内所有圆的最小矩形]都不相交就退出 然而这样的理论复杂度是$o(n^2)$,所以会被出题人卡了 但是如果将坐标系旋转45度,即对于$(x,y)$,变为$((x-y)/\sqr 阅读全文
posted @ 2019-09-17 18:24 PYWBKTDA 阅读(145) 评论(0) 推荐(0) 编辑
摘要:先用两次猜出第一个字符,后面就不会出现这个字符了 (我们假设这个字符是c0,其余三种字符分别是c1、c2和c3) ,然后考虑已知s的前i个字符(不妨就s),来推出后面的字符 询问:s+c1和s+c2,如果不是就是c3了,期望是5/3n次的 询问:s+c1+s+c2+c1+s+c2+c2+s+c2+c 阅读全文
posted @ 2019-09-15 17:24 PYWBKTDA 阅读(137) 评论(0) 推荐(0) 编辑
摘要:先离线,将询问按照时间排序,维护商店出现和消失 对于每一个询问,先二分枚举答案,假设是ans, 即要求对于区间[l-ans,l+ans],商店的种类数是k(l是询问的位置) (当然需要先将所有位置离散一下,l-ans和l+ans找到等价的位置) 那个条件并不是很好处理,但可以转化成另一个条件: l+ 阅读全文
posted @ 2019-09-15 17:09 PYWBKTDA 阅读(162) 评论(0) 推荐(0) 编辑
摘要:修改:维护g[i][j]表示第i个数为j的概率,从前往后转移 转移方程:g[id][i]=g[id][i-1]*p+g[id][i]*(1-p),初始g[i][a[i]]=1 询问:对于每一个人i,输出sigma(P(除了i有j个正数)/(j+1))*P(i是正数) P(i是正数)就是1-g[i][ 阅读全文
posted @ 2019-09-15 17:07 PYWBKTDA 阅读(118) 评论(0) 推荐(0) 编辑
摘要:很显然,每一步所选的剑和怪物都是确定的,可以先求出来(不用写平衡树,直接用multiset即可,注意删除要删指针,以下假设第i次攻击用ki攻击的剑,攻击第i只怪) 首先判断无解,即如果存在ai使得gcd(ki,pi)不是ai的约数就无解,否则将ki、pi、ai同除gcd(ki,pi),并用扩欧求出k 阅读全文
posted @ 2019-09-13 15:14 PYWBKTDA 阅读(146) 评论(0) 推荐(0) 编辑
摘要:先考虑l=1,r=|s|的部分分,需要求出t每一个前缀的不是s子串的最长后缀,记作pp[k],有以下限制:1.pp[pos[k]]<len(pos[k]表示k的某一个结束位置),因为不能被匹配 2.len[fa[k]]<len<=len[k],因为这个点上本来就只有这些串 由此得到答案为sigma( 阅读全文
posted @ 2019-09-13 15:11 PYWBKTDA 阅读(175) 评论(0) 推荐(0) 编辑
摘要:结论:一个序列是好序列当且仅当其不存在长度为3的下降子序列 证明:考虑提示,一个长度为3的下降子序列必然会交换三次, 而这三次带来的收益实际上只有2,因此不合法 同时还可以得到:第i个数,要么是前缀最大值,要么是之前的mex (即要么让他之前没有比他大的,要么让他之后没有比他小的) 用f[i][j] 阅读全文
posted @ 2019-09-11 15:07 PYWBKTDA 阅读(204) 评论(0) 推荐(0) 编辑
摘要:首先肯定要预处理出每一个点到1的最短路(别写spfa) 然后以海拔为边权,建一棵kruskal重构树 用倍增找到vi最后一个小于pi的祖先,然后在子树中取min(预处理) 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 400 阅读全文
posted @ 2019-09-10 15:08 PYWBKTDA 阅读(108) 评论(0) 推荐(0) 编辑
摘要:这道题需要用到扩展欧拉定理,即$a^{b}\equiv a^{b\ mod\ \phi(m)+\phi(m)}(mod\ \phi(m))$ 不断递归计算,奇数的phi值一定是偶数,偶数的phi值一定会除以2,即log次递归 还有phi可以用线性筛计算,也可以在线计算(复杂度分别是$o(p+Tlog 阅读全文
posted @ 2019-09-04 14:25 PYWBKTDA 阅读(148) 评论(0) 推荐(0) 编辑
摘要:这只是一道模拟题而已啊(大雾)但是需要掌握一些简单的解析几何知识个人觉得写结构体没什么必要啊,直接写过程就行了主要是根据题目最后给出的顺序来做,有一下坑点:1.只能存存在的蚂蚁,否则会tle(高攻击塔)2.出生时间是年龄+13.game over了年龄不用+14.血量是先乘上4再取整5.(0,0)有 阅读全文
posted @ 2019-09-03 18:01 PYWBKTDA 阅读(224) 评论(0) 推荐(0) 编辑
摘要:建立操作树,即1和3操作时i-1向i连边,2操作中k向i连边,然后dfs一遍 那么当我们走到一个节点,就执行该操作(修改也是操作),退出后取消该操作即可 于是相当于要维护一个东西,支持:1.加边;2.删边;3.询问联通块的第k小 容易想到按秩合并并查集,考虑询问操作:用分块,维护每一个权值块的权值数 阅读全文
posted @ 2019-09-03 16:27 PYWBKTDA 阅读(465) 评论(0) 推荐(0) 编辑