摘要: 题意: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 阅读全文
posted @ 2019-04-21 19:15 hfctf0210 阅读(336) 评论(1) 推荐(0)
摘要: 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(" 阅读全文
posted @ 2019-04-20 22:44 hfctf0210 阅读(216) 评论(0) 推荐(0)
摘要: 一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1。 题解:都不到100天就AFO了才来学这floyd判圈算法。 介绍一下floyd判圈算法:该算法适用于在线性时间复杂度内判断有限自动机、迭代函数、链表中是 阅读全文
posted @ 2019-04-17 19:34 hfctf0210 阅读(302) 评论(0) 推荐(0)
摘要: 题意:维护支持以下两种操作的序列: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), 阅读全文
posted @ 2019-04-15 17:21 hfctf0210 阅读(181) 评论(0) 推荐(0)
摘要: 简要题意:二维平面上n个点,点之间有一些连线,连线不在点之外的地方相交,将平面分为若干个区域。给出一些询问点对,问从这个点所在的区域走到另一个点所在的区域的最小代价。 题解:这道题首先可以把平面图转对偶图,这一点比较容易发现。然后对于从左指向右的线段,运用扫描线的思想,扫到左端点加入平衡树,扫到右端 阅读全文
posted @ 2019-04-14 18:42 hfctf0210 阅读(261) 评论(0) 推荐(0)
摘要: 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< 阅读全文
posted @ 2019-04-14 07:44 hfctf0210 阅读(360) 评论(1) 推荐(0)
摘要: day1t1 考场上唯一会做的题,还因为习惯性写for(int i=1;i<=n;i++)而挂掉40分,本次考试最大的败笔。 说说我的做法:对每一个a[i]建立一棵字典树,然后维护一个堆,记录对于每个a[i]第x大的异或值,然后每次弹出时记录下一个。不需要可持久化,因为可以给字典树记录一个维护子树大 阅读全文
posted @ 2019-04-10 19:09 hfctf0210 阅读(473) 评论(0) 推荐(0)
摘要: 非常抱歉,这篇文章鸽了 阅读全文
posted @ 2019-04-05 21:34 hfctf0210 阅读(880) 评论(4) 推荐(0)
摘要: 传送门:http://www.51nod.com/Challenge/Problem.html#!#problemId=1812 题解:头一次写换根树DP。 求两条不相交的直径乘积最大,所以可以这样考虑:把一条边割掉,然后分别求两棵子树内的最长链乘起来就行了。由于负负得正,所以要再求一次最短链,就是 阅读全文
posted @ 2019-03-26 15:58 hfctf0210 阅读(370) 评论(0) 推荐(0)
摘要: 一个很显然的DP方程式:f[i]=Σf[j],其中j<i且在[j+1,i]中出现1次的数不超过k个 乍一看挺神仙的,只会O(n^2),就是对于每个位置从后向前扫一遍,边扫边统计出现1次的数的个数。不难发现,同一个数第一次出现时cnt++,第二次出现时cnt--,后面没有变化这不是废话吗?! 于是可以 阅读全文
posted @ 2019-03-05 10:28 hfctf0210 阅读(432) 评论(0) 推荐(0)