随笔分类 - 题解
摘要:持续更新中…… 从哪里跌倒,从哪里爬起! B 建立主席树,对每次询问算出答案,然后二分位置判断 代码:略 F 裸DP是O(n^3p^2),用bitset优化是O(n^3p^2/w),然后考虑随机游走问题,在二维平面每次随机向一个方向游走,距离不超过√n级别,而本题也是从6种方案中随机选择1种,于是便
阅读全文
摘要:乍看上去是一道难题,实际上是一道裸题。 看到这种直接求最大摸不着头脑的题,首先就想到二分。由于每个人只能选择两种课,因此就是个简单的2-SAT问题,将大于二分值的关系视为限制条件即可。 #include<bits/stdc++.h> using namespace std; const int N=
阅读全文
摘要:30pts:善用next_permutation 50pts:先枚举每一位是否有进位,设进位为di=0/1,然后a[i]+b[i]+d[i-1]-10d[i]=c[i],移项后为a[i]+b[i]-c[i]=10d[i]-d[i-1],n位形成n个方程组,可以进行高斯消元,时间复杂度O(2^n*n^
阅读全文
摘要:此题放到提高组感觉都好难……至少以我高一结束时的水平是无法做出来的…… 思维难度十分大。 要保证后k位答案相同,首先得保证后(k-1)位答案相同,于是先处理后(k-1)位,以此类推……于是从第一位开始这么做,最终只要比较当前位即可。若乘了10次仍不同,说明不循环,答案就是-1。 时间复杂度O(10n
阅读全文
摘要:你没看错,一个前NOI Ag选手来做普及组了,马上打ICPC了我也准备练习一些。 连PJ都不会了,得分:100+100+30+100=330,甚至比初三还菜,nowcoder数据,思路也应该是这个分。 写一发题解吧(T3就写30分的) T1 奇数直接输出-1,偶数按二进制位拆分 #include<b
阅读全文
摘要:挺有意思的一道题 容易发现k越大甲越容易赢,那么a[i]表示最小的可以使甲赢的数,则a[i-a[i]]>=2a[i],可以打表,然后发现这个表与斐波那契数列有关。 众所周知,任何自然数都可以被唯一拆分成若干不同斐波那契数的和,即可以化为斐波那契进制,然后最小的斐波那契数(即斐波那契进制下的lowbi
阅读全文
摘要:终于做出了这个把我送退役的结论题。 由于是均匀混合,所以所有排列出现的概率相同。 考场上我写了30分的O(mn^2)暴力,然后发现:E[ai]仍然为一次、二次函数。这个可以用期望的线性性解释。 定义E[ai]=f(i),f(i)为关于i的一/二次函数,然后经过操作为k的变化,左边第i项变成f(i),
阅读全文
摘要:本来打算写垫底记的,结果Unrated了,所以是题解了。 AB 太水了不写了 C 看到unrated就没写了,其实挺简单的。 容易发现答案只可能是0/1/2,情况如下: 0:无错误序列 1:错误序列均连续 2:其他情况(可以将其变为错误序列连续) #include<bits/stdc++.h> us
阅读全文
摘要:虽然CSP没过初赛没参加,但我还是想写一下题解 D1T1格雷码 按位考虑答案,第i位即为k xor [k/2]的第i位 #include<bits/stdc++.h> using namespace std; unsigned long long n,k; int main() { cin>>n>>
阅读全文
摘要:被jump送退役了,很生气。 不过切了这题也进不了队,行吧。 退役后写了一下,看到二维平面应该就是KD树,然后可以在KD树上做最短路,然后建立堆和KDTree。然后每次更新则是直接把最短路上的节点删掉,然后合并KDTree #include<bits/stdc++.h> using namespac
阅读全文
摘要:这题很有思维难度,乍一看基本无从下手。 给每个蔬菜钦定退役的时间显然很困难,可以考虑让时光倒流,从后向前递推,然后就变成了某个时间点有一部分蔬菜服役,而已经服役的蔬菜不会退役了。然后就可以直接考虑贪心,每种第一个出现的蔬菜,显然可以单独考虑,加上s[i],然后把蔬菜放到堆里面,就可以在O(pmlog
阅读全文
摘要:暴力的做法应该是这样的,维护大小为k的堆,每次插入两点间距离并弹出堆顶。 然后这个做法显然是可以KD-Tree优化的,建立KD-Tree,然后如果该平面内最远点小于堆顶,则直接退出。就当做是复习很久没做的KD-Tree了。 不过有一个细节要注意,求最远点对,(1,2)->(2,1)算一对,所以堆的大
阅读全文
摘要:首先显然应该把数组离散化,然后发现是个带修莫队裸题,但是求mex比较讨厌,怎么办?其实可以这样求:记录每个数出现的次数,以及出现次数的出现次数。至于求mex,直接暴力扫最小的出现次数的出现次数为0的正整数,就一句话,这样看似会超时,实际上是O(√n)的复杂度。为什么?假设存在出现1,2,...,x的
阅读全文
摘要:过了14个月再重新看这题,发现圆方树从来就没有写过。然后写了这题发现自己APIO2018打铁的原因竟然是没开long long,将树的部分的O(n)写挂了(爆int),毕竟去年APIO时我啥都不会,连tarjan都写不来,活该打铁。 不扯了写题解。 首先建立圆方树,然后任意枚举圆点s和f,然后c可以
阅读全文
摘要:本题有两种写法,dfs树上DP和仙人掌DP。 先考虑dfs树DP。 什么是dfs树?其实是对于一棵仙人掌,dfs后形成生成树,找出非树边(即返祖边),然后dfs后每条返祖边+其所覆盖的链构成了一个环(很显然覆盖的链互不相交),然后可以确定每条边出现在哪个环中,然后可以解决一些简单的仙人掌DP问题,不
阅读全文
摘要:趁着我把李超树忘个一干二净的时候来复习一下吧,毕竟马上NOI了。 题解:看着那个dis就很不爽,直接把它转换成深度问题,然后一条直线x->y,假设其lca为z,可以拆分成x->z和z->y两条路径,然后将函数分成两段即可,把式子转换为以节点深度为变量的一次函数,求解最值,树链剖分+李超树求解,保留函
阅读全文
摘要:这是一道比较好的网络流题。 看到这题,除了指数级别的暴力和所有a[i]相同的DP,并没有啥办法,只能有70pts。然后一眼就是网络流,考虑把区间变为点,对于(i,j),如果选了,则必须选(i+1,j)和(i,j-1),流量为inf。然后根据d[i][j]的正负性,正的就由源点连边,反之连向汇点。当且
阅读全文
摘要:这题看题面感觉挺玄学的,但其实会挂链式hash就能暴力切了,就是纸老虎,考察选手的语文水平。不过三年没写挂链hash也应该写一下了…… 首先模数设成自然溢出ull,然后挂链时的模数取2^24。然后就可以直接hash了。对于3操作直接O(Σ|S|)询问即可,对于1、2操作,直接暴力加、减长度不超过50
阅读全文
摘要:第二道线段树分治。 首先设当前向量是(x,y),剩余有两个不同的向量(u1,v1)(u2,v2),假设u1>u2,则移项可得,若(u1,v1)优于(u2,v2),则-x/y>(v1-v2)/(u1-u2),然后维护上凸壳后进行三分即可,复杂度O(nlog2n),如果将询问排序扫一遍,可以优化到O(n
阅读全文
摘要:重新写一年前抄题解的那题,当时我啥都不会只是Ctrl+C,Ctrl+V写过的题,今天重新写一遍。 题解: 不会线段树分治,还是学一下这东西吧,这是我的第一道线段树分治。 首先对于特殊商品,可以直接可持久化Trie记录答案。首先考虑对每个线段树开一个vector,把询问的时间区间看成一段一段的塞到线段
阅读全文

浙公网安备 33010602011771号