- 博客(5)
- 收藏
- 关注
原创 Codeforces Round #750 (Div. 2)
D. Vupsen, Pupsen and 0 题意:已知有长的为n非零数列a,求一个非零数列b,使得∑i=1nai∗bi=0\sum_{i=1}^{n}{a_i*b_i}=0∑i=1nai∗bi=0 思路: 如果n为偶数,对于第i个数,我们不难发现只要乘以第i+1个数的相反数,第i+1个数则乘以第i1个数的相反数,则可以构造出题目要求的数列 如果n为奇数,我们只需要单独考虑三个数,其余的按偶数规则来。而这三个数的正负性有四种情况,分别是全正,全负,两正一负,两负一正。 同样我们也能找到相应的构造办
2021-10-25 23:43:59 133
原创 AtCoder Beginner Contest 220 E - Distance on Large Perfect Binary Tree
思路: 对于每一层,我们考虑对答案有贡献的三种情况 Fi=Fi左子树+Fi右子树+CF_i=F_{i左子树}+F_{i右子树}+CFi=Fi左子树+Fi右子树+C C 表示经过根的可能 左右子树对答案的贡献我们可以通过上一层 Fi−1∗2F_{i-1}*2Fi−1∗2得到 那我们只需要算出 C 如果 i−1≤di-1\le di−1≤d ,也就是深度要达到d, 则要贡献 2d∗22^d * 22d∗2,后者的2是因为端点对换。 另外一种情况,从较小值中假设左子树的距离为a,右子树的距离为b 则
2021-09-28 16:23:00 290
原创 Educational Codeforces Round 113 (Rated for Div. 2) C. Jury Meeting
题意 找到一种序列,按序减一,如果没有出现同一个位置连续减两次,即为good,问一共有多少种。 思路 设max 最大值的个数, min次大值的个数 情况1:有大于或等于两个最大值,那任意排都可 情况2:max-min== 0 ,任意排都可 情况3:若max-min==1 那必须保持最大值不能在最后,不然会出现连减两次, 那也就是要最后一个次大值之后不能有最大值。设cnt为次大值的个数,那满足的这种要求的序列的概率为 cnt / (cnt+1);即不要排在最后即可。 代码 #include<bi
2021-09-09 13:01:37 150 2
原创 Codeforces Round #739 (Div. 3)
Codeforces Round #739 (Div. 3) D. Make a Power of Two 题意:给出一个数,一种操作是删去任意一位上的数,另一种是在最后位加上任意一个数,求最小操作是这个数变为2的幂次方。 思路:预处理出所有2的幂次方进行比较,我们假设这个数n对应的最小操作数后变为x,对于n,不用删除的位在x中肯定是连续的,且是前缀。 比如数n为 1052 , 对应的x为1024 ,1 0 2这三位是连续的,所以我们可以枚举所有的2的幂次方,ta表示的是表示不用删掉的位数,s.le
2021-08-19 14:02:03 154 2
原创 Codeforces Round #737 (Div. 2) ABC
A - Ezzat and Two Subsequences 题意:给定一个数组,将其分为两个非空子序列,问如何分使得两个非空子序列的平均值最大。 思路: 猜了个结论:找到数组中最大的一个数,将其单独划为一个序列,剩下的划为另外一个序列,这样能使得平均值最大。 代码 #define rep(i, l, r) for (int i = l; i <= r; i++) #define per(i, l, r) for (int i = l; i >= r; i--) const int N = 5
2021-08-10 15:38:19 115 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人