11 2024 档案
摘要:50分做法:n方dp 考虑 为前i个数,第j个数是i之前与i染色不同的数,则考虑i+1染色与哪个数相同,可转移到 65做法:优化到n*值域 100分做法:继续优化式子达到线性 还有人类智慧做法,但是能优化就不需要智慧 #includ
阅读全文
摘要:上了一学期的课感觉老师讲的太好了,于是我概念一点不懂但是已经明白了博弈论的精髓
阅读全文
摘要:板子题 符合堆和二叉搜索树性质,treap也是一种特殊笛卡尔树 堆性质就是树下层元素的值都小于等于或大于等于上层元素的值 二叉搜索树是一个左儿子小于自身,右儿子大于自身的树,在笛卡尔树中,通常为数组索引 这时候就可以用单调栈来维护右链建树 #include<iostream> #include<al
阅读全文
摘要:可以再加一个struct把整个树封装起来。。跟oiwiki学的 #include<bits/stdc++.h> using namespace std; #include<bits/stdc++.h> using namespace std; struct Node{ Node *ch[2]; in
阅读全文
摘要:P2418 yyy loves OI IV 有两种转移情况,一种是差值在范围内用线段树查找转移,一种是同段连续的作为一段来转移。 注意旧的一段已经结束了新的一段要+1 #include<bits/stdc++.h> using namespace std; #define pii pair<int,
阅读全文
摘要:新生赛题 F. tree options 如果能想到弱化版操作为每个节点值都小于等于0,就很容易想到n方log的做法。 但是回到原题会发现单调性有变化,不能直接二分。由于奇数轮数和偶数轮数分别有自己的单调性,就可以对奇偶轮数分别二分然后枚举非整轮部分。dp算每个点还要多少次能变为合法点。 题解有复杂
阅读全文
摘要:首先观察到性质是贡献肯定是cnt[0]+min(cnt[0],cnt[1])+min(cnt[0],cnt[1],cnt[2])....这样的 设状态为f[i][j],表示在选到数i时有j个数i产生了贡献的方法数 转移分为两种情况,一种是数i的数量限制,一种是f[i-1][j]限制(分类非常重要 那
阅读全文
摘要:D - Strange Mirroring 据说是经典oi问题。 假设一开始只有一个0.大小写的变换就是01变换。 从零开始编号,那么 位置的数一定是1 显然一个字符是0还是1只和被操作的次数是奇还是偶有关 放到字符串里面只要除以len再进行二进制计算即可
阅读全文
摘要:可以先从一条链的情况开始观察,然后发现每次都会选深度最小的子节点(minf(v)),可以看作一个短链剖分,不过我不是这么写的 g(v)表示的是f(v)是f(u)的几分之几 我推的式子是这两个,但是我没法证明g(v)不会等于2使得分母为0 但是我觉得因为g(x)一定是合法的所以显然2-g(v)不会为0
阅读全文
摘要:ABC379 E 赛场上真想去打高精来着但是高精复杂度其实是错的。。会变成n方小丑 所以原本想了一个暴力9*nlog的做法就寄了(想着维护每个数每一位10的几次方然后加起来。。。) 设以s[i]是以i为左端点的所有区间和,那么\({s[i]=s[i+1]+i*\sum_{j=0}^{n-i}10^j
阅读全文