把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 45 下一页
摘要: 题面传送门 $40$分:爆搜,此处不作赘述 这道题硬推是很难推的,下面展示一下硬推的过程,以$f(4,n)$为例 我们可以根据题目列出一个式子: \(\sum\limits_{i=1}^{n}{\sum\limits_{j=1}^{n}{\sum\limits_{k=1}^{n}{\sum\limi 阅读全文
posted @ 2020-11-03 18:41 275307894a 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 考虑一个最朴素的暴力:枚举两个数,再用组合数算答案。 考虑算贡献。先排好序。 一个数有两个贡献,加的贡献和减的贡献。 可以枚举每一个数,钦定这个数一定是降序排序的,结果乘二,然后枚举在这个数之前选几个。 代码大概长这样: sort(a+1,a+2*n+1); for(int i=1;i< 阅读全文
posted @ 2020-11-02 15:11 275307894a 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 题意简述:给出$a$与$b$,找到一个最大的数$x$,使得$a%x==0&&x%b≠0$ 这样的题目考虑质因数分解。 因为$b$分解是在可以接受的范围内,所以分解$b$。 设$b=a_1^\times a_2^\times...\times a_n^$ 然后将$a$分解得$a_1^\ti 阅读全文
posted @ 2020-11-02 15:09 275307894a 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 看完了题目你会发现这道题居然没有撤销操作。 那么基本上就是某些奇奇怪怪的算法 首先我们考虑暴力 第一种想法是暴力对于每个红点求$lca$ 第二种想法是对于每个新加进来的红点做一遍$bfs$然后每次查询直接$O(1)$ 一般这种有两个暴力然后分别两个操作复杂度大大低于另外一个的就是根号分治 阅读全文
posted @ 2020-10-30 22:09 275307894a 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 显然树形$dp$ 转移时直接考虑这颗子树选或不选。\(dp_v=dp_v\times (dp_u+1)[u∈v]\) 代码实现: #include<cstdio> #define beg int cur=s.h[x] #define end cur #define go cur=tmp. 阅读全文
posted @ 2020-10-27 20:27 275307894a 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 首先考虑一个结论:将一个区间中的数去重后这个区间$mex$没有影响。 所以我们只要求出那些$mex$中有几个数。 一个区间$mex=k$的条件是区间没有$k$且区间有$1$到$k-1$。 考虑对于同样的数分段。 那么对于每个段这样查询即可。 即满足两个条件:$[l\leq i \leq 阅读全文
posted @ 2020-10-25 15:57 275307894a 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 这道题显然是对于每个卖出股票,在前面找到最小的买进,统计答案即可。 代码实现: class Solution { public: int maxProfit(vector<int>& prices) { int a[1000039]; int i,j,ans=0,tot=0; int n 阅读全文
posted @ 2020-10-20 19:36 275307894a 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 初赛: Day 0 考前摸了一下$zyq$,这样就能考满分了。 然后又膜拜了一下$tourist$ 打了一场$vp$就睡觉了。 这场$vp$真的打击信心,$sb$$E$题交了$10$发才过。然后喜提切了5题中的最后一名。 预祝明天$rp++$ Day 1 考前进场前膜拜了机房所有人。 考试时发现提高 阅读全文
posted @ 2020-10-13 19:01 275307894a 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 不小心抢了个最优解,比第二少了$0.6s$ 分块+根号分治套路题。 看到这种跳着加的就知道是根号分治了。 对于$x>s$的直接加,用分块维护。 对于$x<s$的,维护数组$f_{i,j}$表示跳$i$个,从$j$开始加了几次。为了之后统计方便,还要前缀和。 统计时,一部分是分块直接统计。 阅读全文
posted @ 2020-10-07 22:04 275307894a 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 一道好题。 首先有一个操作:如果有$n$个$a$,$n$个$b$,那么可以通过$n$次变成$2n$个$c$ 那么考虑倍增,每次选取两块拿来合并。 然后对于前一部分和后一部分分别倍增就好了。 代码实现: #include<cstdio> using namespace std; int n 阅读全文
posted @ 2020-10-07 21:59 275307894a 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 首先有一个结论就是不存在二次变换。 如果存在二次变换,那么二次变换那个点的至少一个方向会新出现一个点,但是要新出现一个点那个方向必定原来就存在一个点。所以不成立。 那么就可以从上到下做扫描线,当碰到一列最上面的点时给树状数组那个位置加一,最下面减一就好了。 代码实现: #include< 阅读全文
posted @ 2020-10-07 21:56 275307894a 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 这道题暴力dp是很好想的。 就是分别从上一天,最晚可转移的天,凭空买来转移。 因为有状态自然叠加所以只要转移最晚可转移的天就好了。 然后会发现这个是可以正反两边单调队列优化的。 复杂度$O(TP)$ 代码实现: #include<cstdio> #include<cstring> #de 阅读全文
posted @ 2020-10-07 21:53 275307894a 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 一不小心抢了最优解。 首先跑出$1$到所有点的最短路,因为那个梗在先,所以用堆优化dj 然后这道题显然要让我们求最小瓶颈路之类的东西。 所以就可以建出克鲁斯卡尔重构树。在树上倍增。 同时处理子树内距离最小值。倍增到的那个点的值就是答案了。 代码实现: #include<cstdio> # 阅读全文
posted @ 2020-10-07 21:50 275307894a 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 考虑暴力建分层图dp 实际上就是对于每个时间建到下一层的图就好了。 然后停留就是自环,爆炸就连向永远走不出来的点。 其实这个东西是可以矩乘优化的。 然后复杂度就降到$O(logtn^3)$ 代码实现: #include<cstdio> #define mod 2017 using nam 阅读全文
posted @ 2020-10-07 21:47 275307894a 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 一道套路题。 考虑把图分解成链与环。 然后我们会发现其实路径就是一条链加上一堆环。 因为从链走到环的路径会被异或两次为$0$ 所以就直接上线性基就好了。 代码实现: #include<cstdio> using namespace std; int n,m,k,x,y,flag[1000 阅读全文
posted @ 2020-10-07 21:45 275307894a 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 首先用两颗线段树维护每个点所在的亮灯联通块。 然后再建一颗二维线段树,每个点表示到当前为止,有多少个时刻能从$i$到$j$。 对于每次修改,依靠两颗线段树维护的区间,来修改。 这里有一个小技巧,在修改时加上$q-t$,修改时减去,就是答案,还能累加。 查询就查当前点就好了。 代码实现: 阅读全文
posted @ 2020-10-07 16:14 275307894a 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 可以算一道线段树维护hash的模板题了吧。 hash要满足两个条件:相同的数hash值一定一样与hash冲突尽量少。 这道题hash序列可以用幂次方来hash 然后用线段树随便维护一下就好了。 代码实现: #include<cstdio> #include<algorithm> #def 阅读全文
posted @ 2020-10-07 16:05 275307894a 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 数据太大了,所以要hash。 多取几个模数正确性更高。 代码实现: #include<cstdio> #define mod 1000000007 using namespace std; int x,y,z,n,m,k,head,ans[100039],fff; long long t 阅读全文
posted @ 2020-10-07 13:39 275307894a 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 场切的题目,感觉还是很套路的。 这种最大最小一看就是二分没跑了。 考虑二分分出来后怎么验证。 题面已经很明显地提示了我们这是一张二分图。 那么跑网络流的二分图最大匹配就好了。 时间复杂度$O(n\sqrt mloga_i)$ 代码实现: #include<bits/stdc++.h> u 阅读全文
posted @ 2020-10-06 10:29 275307894a 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 场切的题目,感觉不错。 首先有一个结论:一个质数$x$,只有出现$x^2$是他才不孤独。 证明: 对于不是$x$的倍数$y$,那么三个值分别为$1,x,y$,这样一定无法构成三角形。 对于是$x$的倍数$kx(k≠x)$,那么三个值分别为$1,x,k$也构不成三角形。 第二个结论:合数一 阅读全文
posted @ 2020-10-06 09:38 275307894a 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 你会发现这道题和LNOI2014某题很像。 但是那个$k$次方很难处理。 考虑$k=1$的情况,就是那道题。 照样差分,但是这次差分不是那么差,而是每个点的权值改成$d_i^k-(d_i-1)^k$这东西就可以实现了。 因为加到一个点时这个点到根节点的路径都会被加。而这个值又恰好等于深度 阅读全文
posted @ 2020-10-06 09:30 275307894a 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 一道典型的树剖题目。 这东西如果暴力肯定是没法算的。除非能转化一下,比如算贡献。 然后会发现HHHOJ上有一道题和这个很像。 这样的话可以把每个点向上算贡献,一直加$1$到根节点。 这样当一个点加到时那么就自然算到了贡献。 其实质是差分,只不过没那么明显罢了。 这个东西可以用树剖+线段树 阅读全文
posted @ 2020-10-06 09:24 275307894a 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 这道题$O(n^2)$的dp是很好想的。 设$f_i$表示到$i$时的队伍小于等于$rank_i$最大的不用移动的个数,那么显然状态转移方程是 \(f_i=\max\limits_{j=1}^{j\leq i\&rank_j\leq rank_i}f_j+1\) 就是从小于等于一定不用乱序的转移。 阅读全文
posted @ 2020-10-05 16:33 275307894a 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 首先你可以把所有直径求出来然后暴力。 但是这道题可以把求树的直径的方法。 首先求出一条直径,把直径上的所有点点权减一。然后再求一遍,两次相减就是答案。 正确性显然。 代码实现: #include<cstdio> #include<cstring> #define max(a,b) ((a 阅读全文
posted @ 2020-10-05 15:06 275307894a 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 题面传送门 启发式合并大法好! 你会发现这道题可以暴力合并。 然而数据稍微用心一点就卡掉了。 然后你可以试图优化一下,比如合并时把小的合并到大的上面去。 结果就过了。 这样复杂度上界是$O(nlogn)$,具体证明在这篇题解里有。 代码实现: #include<cstdio> #include<cs 阅读全文
posted @ 2020-10-05 15:01 275307894a 阅读(47) 评论(0) 推荐(0) 编辑
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 45 下一页
浏览器标题切换
浏览器标题切换end