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 · 259 阅读 · 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 · 202 阅读 · 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 · 160 阅读 · 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 · 228 阅读 · 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 · 214 阅读 · 0 评论 -
cf678F(时间线段树+凸包+三分)
解法:时间线段树+凸包+三分 一开始本来想的是:cdq分治+李超线段树(因为之前学长在湘潭ccpc的时候给我嘴过一个类似的) 后来发现我的做法要对于每个分治区间开一棵李超线段树肯定mle 以时间为轴建立线段树,表示某个点(x,y)存在的时间 对于线段树的每个节点上的若干(x,y)维护一个上凸壳; 对于每个询问,从根一路访问到所在的叶子节点,对于途中每经过的一个节点,在其上的凸壳上三分一个...原创 2019-05-30 14:47:12 · 438 阅读 · 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 · 133 阅读 · 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 · 671 阅读 · 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 · 184 阅读 · 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 · 235 阅读 · 0 评论