Codeforces
syh0313
noip rp++
展开
-
Educational Codeforces Round 76 G Divisor Set
Divisor Set结论+生成函数优化dp+NTT+启发式个人感觉这道题非常好!非常精妙!1.首先我们要知道一个结论:我们把这个数的约数按拥有的质因子数(可重)划分,第i类约数表示有i个可以重复的质因子然后我们从每一级的约数a向它的下一级约数b(a%b==0 且b只比a少一个质因子)连边,那么这个图显然是个DAG显然如果我想找最大的可选的约数,那么从n级到1级的任意...原创 2019-11-26 17:05:46 · 287 阅读 · 0 评论 -
Codeforces Round #565 (Div. 3)
A.模拟即可,最多不会超过3logn次#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <cmath>#include <algorithm>usin...原创 2019-06-10 20:54:55 · 215 阅读 · 0 评论 -
Codeforces Round #563 (Div. 2)
A.排序即可#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>using namespace std;const int maxn=10010;int n;long long a[maxn],sum[maxn];int main()...原创 2019-06-07 14:26:44 · 175 阅读 · 0 评论 -
Codeforces Round #566 (Div. 2)
A.Filling Shapes 数学题#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <cmath>#include <algorithm>...原创 2019-06-12 22:44:27 · 258 阅读 · 0 评论 -
cf1111D
dp好题!首先我们可以求出所有字母都在一侧的方案数dp[n/2];假设左半部分为集合S,右半部分为T,那么假设选出的a,b已经同属一个集合时S中可以乱放,T中也可以乱放那么S中乱放的方案数有:(n/2)!/(num[i]!*num[j]!*.....) (i...j属于S); 1同样T中乱放的方案数有:(n/2)!/(num[i]!*num[j]!*.....) (i...j...原创 2019-05-28 16:26:39 · 229 阅读 · 0 评论 -
cf678F(时间线段树+凸包+三分)
解法:时间线段树+凸包+三分一开始本来想的是:cdq分治+李超线段树(因为之前学长在湘潭ccpc的时候给我嘴过一个类似的)后来发现我的做法要对于每个分治区间开一棵李超线段树肯定mle以时间为轴建立线段树,表示某个点(x,y)存在的时间对于线段树的每个节点上的若干(x,y)维护一个上凸壳;对于每个询问,从根一路访问到所在的叶子节点,对于途中每经过的一个节点,在其上的凸壳上三分一个...原创 2019-05-30 14:47:12 · 457 阅读 · 0 评论 -
Educational Codeforces Round 62 (Rated for Div. 2) C. Playlist (警醒篇)
按美丽度排序,每次枚举必选那个,然后取前缀的len前k-1大用个小根堆就可以维护#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>using namespace std;int n,k,s...原创 2019-03-27 21:28:05 · 147 阅读 · 0 评论 -
cf621E. Wet Shark and Blocks
首先如果b在1e6左右 那么普通的dp就可以搞定但是b的范围给到了1e9 我们就要考虑用矩阵来优化这个dp了now[i][j]表示初始状态是i,最终状态是j的方案数那么对于这个矩阵b次幂之后res[0][k]就是所要求的答案了#include <iostream>#include <cstdio>#include <cstdlib>#in...原创 2019-03-19 16:55:05 · 696 阅读 · 0 评论 -
cf1092F
裸的树形dp 比赛时候脑抽up和down和一起写了,没考虑到他们相互更新了,然后就跪了qwq以任意形态build一棵树,定义数组down[x]记录以x为根节点的x的子树中点的贡献,定义up[x]记录以x为根节点,在初始树种不在x的子树中的点的贡献,则改点作为root的这棵树的权值即为up[x]+down[x],在定义size[x]为以x为根节点的子树的点权之和,那么由于down[x]=down...原创 2018-12-20 21:03:09 · 196 阅读 · 0 评论 -
Codeforces 455A Boredom
题意简述:有n个数,每次选一个数a[k]进行操作,操作为删除a[k],a[k]+1,a[k]-1,并获得a[k]的分,问删除所有数后最大的积分为多少。分析:很显然这是一道dp题,我们考虑数组dp[i][0],dp[i][1]表示处理到i(i是数字大小而不是第几个)时,i此时删或不删的情况(0表示此时不删,前面删过了。1表示前面没删,现在删)时获得的最大积分那么就有状态转移方程:dp[i][0]=d...原创 2018-07-07 11:13:45 · 257 阅读 · 0 评论