04 2019 档案
摘要:看到数据范围n<=1000,但感觉用O(n^2)不现实,所以考虑方向应该是O(n^2logn)。 一种暴力做法:用vector存到1点相同的2点和到2点相同的1点,然后枚举A,枚举BC,再枚举D,然后枚举EF,O(n^4),但复杂度远远不满(符合条件的太少,而且也卡不掉),所以可以获得40pts的好
阅读全文
摘要:题解:首先根据题意,可以猜到结论:最终图一定是从n号点向其他所有点各连一条边。然后发现一个结论:每次把图中一条(a,b)边连成(c,n)。然后50pts的劣质O(mnlogn)的分治做法就有了:对于分治区间[l,r],可以枚举从n号点是否有在(l,r)间的剖边,如果有则直接分治,如果没有,则找到能转
阅读全文
摘要:A 容易发现i,i+1至少有一个数出现,于是可以让尽量多的2和奇数出现 #include<bits/stdc++.h> using namespace std; int n,s1,s2; int main() { scanf("%d",&n); for(int i=1,x;i<=n;i++) { s
阅读全文
摘要:看到这题,首先想到将求和转期望,即每次操作进行概率为1/2,求节点打标记概率。 首先对于每次区间修改操作,对节点进行分类: 1、这个点和其父亲都和修改区间无交,这种情况可以无视。 2、这个点和修改区间无交但父亲和修改区间有交,这样该区间有无标记只和本身及是否存在一个祖先有标记相关。 3、这个点被修改
阅读全文
摘要:题意:n*m的矩阵内值有正有负,找一个四连通的简单环(长度>=4),使得环上值的和最大。 题解:看到2<=m<=6和简单环,很容易想到插头DP,设f[i][j][k]表示轮廓线为第i行第j列,插头状态为k的最大满意度。然后又成了一道插头DP的板子题。注意左插头为左括号,上插头为右括号,其余位置无插头
阅读全文
摘要:对插头DP的理解还不是很透彻。 先说一下肤浅的理解吧。 插头DP使用范围:指数级复杂度,且适用于解决网格图连通性问题,如哈密顿回路等问题。插头一般指每相邻2个网格的接口。 题目难度:一般不可做。 使用三进制状态,用0表示没有插头,1表示左括号插头,2表示右括号插头,而由于位运算常数特别小,可以采用四
阅读全文
摘要:A 签到 #include<bits/stdc++.h> using namespace std; int n,m,s[2],t[2],ans; int main() { scanf("%d%d",&n,&m); for(int i=1,x;i<=n;i++)scanf("%d",&x),s[x&1
阅读全文
摘要:题解:二分答案mid,然后将每个位置看成a-b*mid,然后由于是n个男生和n个女生匹配,每个人搭配一个cp,于是有点类似于https://www.lydsy.com/JudgeOnline/problem.php?id=1070(费用流模板题),加边(S,i,1,0),(i+n,T,1,0),(i
阅读全文
摘要:题解:首先肯定要跑最短路,而n<=100,所以可以用floyd,然后根据比值,很容易想到二分答案,然后再SPFA跑一遍负环,就能求出解了。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1
阅读全文
摘要:或许近期有时间会模拟2019各省省选吧,然后订正 省选题目:没订正的划掉,做出/订正的放出题解链接 ZJOI2019: 麻将 线段树 Minimax搜索 开关 语言 浙江省选 十二省联考2019: 异或粽子 字符串问题 骗分过样例 皮配 春节十二响 希望 HNOI2019: 鱼 JOJO 多边形 校
阅读全文
摘要:题解:很容易发现这样的一个规律:设i出现的次数为cnt[i],然后覆盖[i-cnt[i]+1,i]这段,空白的部分就是所求的答案。 但我开始根据这个规律写了个错误的O(n)做法,就是直接差分加减,考虑全部覆盖,这样显然是错的!为什么?原因很简单:只有i值在[1,n]内的cnt[i]才能覆盖答案!我的
阅读全文
摘要:题解:很显然可以对权值取对数,然后把几何平均值转为算术平均值,然后很显然是分数规划。先对每个模式串建立AC自动机,每个节点w[i],sz[i]分别表示以其为前缀的字符串,然后再二分最优解k,然后w[i]-=k*sz[i],然后枚举T,在AC自动机上DP一遍,求最大值是否大于0即可。 #include
阅读全文
摘要:题解:求环长比环边个数的最小值,即求min{Σw[i]/|S|},其中i∈S。这题一眼二分,然后可以把边的个数进行转化,假设存在Σw[i]/|S|<=k,则Σw[i]-k|S|<=0,即Σ(w[i]-k)<=0,然后就是表示图中存在负环,可以用spfa跑一下。不过图不保证连通,所以要从每个点分开跑S
阅读全文
摘要:分数规划问题,指形如求函数Σf(i)/Σg(i)值最大/小值,而一般来说,直接解决是很困难的,必须要采用巧办法。那么怎么办?二分!假设我们求的是式子的最小值,可以二分一个值k,看是否满足Σf(i)/Σg(i)<=k,然后可以把Σg(i)乘到不等式右边并移项,就可以得到Σ(f(i)-kg(i))<=0
阅读全文
摘要:题意:f[i],g[i]分别表示用1*2的骨牌铺2*n和3*n网格的方案数,求ΣC(f(i),k)和ΣC(g(i),k),对998244353取模,其中l<=i<=r,1<=l<=r<=1e18 题解:显然打表发现f[i]为斐波那契数列,g[2i+1]=0,g[2i]=4g[2i-2]-g[2i-4
阅读全文
摘要:C 签到题,f[i][0/1]表示以i结尾最后一个为白/黑的最小值,转移显然。 #include<bits/stdc++.h> using namespace std; const int N=2e5+7; int n,f[N][2]; char s[N]; int main() { scanf("
阅读全文
摘要:一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1。 题解:都不到100天就AFO了才来学这floyd判圈算法。 介绍一下floyd判圈算法:该算法适用于在线性时间复杂度内判断有限自动机、迭代函数、链表中是
阅读全文
摘要:题意:维护支持以下两种操作的序列:1 l r询问a[l...r]的gcd,2 l r x把a[l...r]全部+x 题解:一道经典题。根据gcd(a,b)=gcd(a-b,b)以及区间加可知,这题可以差分求解。然后只需要维护支持单点加减和区间查询gcd、差分和的线段树即可,复杂度O(nlog2n),
阅读全文
摘要:简要题意:二维平面上n个点,点之间有一些连线,连线不在点之外的地方相交,将平面分为若干个区域。给出一些询问点对,问从这个点所在的区域走到另一个点所在的区域的最小代价。 题解:这道题首先可以把平面图转对偶图,这一点比较容易发现。然后对于从左指向右的线段,运用扫描线的思想,扫到左端点加入平衡树,扫到右端
阅读全文
摘要:A:签到,很多人O(n)容易被hack,不如写O(nt) #include<bits/stdc++.h> using namespace std; int n,t,ans,mn,s,d; int main() { scanf("%d%d",&n,&t); mn=1e9; for(int i=1;i<
阅读全文
摘要:day1t1 考场上唯一会做的题,还因为习惯性写for(int i=1;i<=n;i++)而挂掉40分,本次考试最大的败笔。 说说我的做法:对每一个a[i]建立一棵字典树,然后维护一个堆,记录对于每个a[i]第x大的异或值,然后每次弹出时记录下一个。不需要可持久化,因为可以给字典树记录一个维护子树大
阅读全文

浙公网安备 33010602011771号