摘要:
A. 烷基计数 $f[i]$表示由$i$个碳原子构成的烷基数量 $g[i][j]$表示由$i$个碳原子构成的只有两棵子树,其中较小的一棵大小为$j$的烷基数量 求$f[i]$,先考虑只有两棵子树的情况,如果两个子树大小不一样那么有$f[j] * f[i - 1 - j]$种方案,如果两棵子树大小相同 阅读全文
摘要:
又双叒叕垫底 A. Start 大模拟,搞心态啊 考场打出来,因为负数下取整的问题挂了$55$ 可恶 ~~愿世上再无大模拟,愿大模拟不考细节~~ code #include<cstring> #include<iostream> #include<algorithm> #include<cmath> 阅读全文
摘要:
终于快填完坑了,~~只差一个进化了~~ A. inversions 发现各个长度中的逆序对个数互不影响,而某个长度内的逆序对个数只会是正/反数列中逆序对个数,其只与长度大于等于它的区间翻转次数有关,所以用归并排序预处理每个长度对应的逆序对数,每次$O(n)$累加即可 code #include<cs 阅读全文
摘要:
又双叒叕垫底, A 旅行日记 判断一下即可?注意一下细节 code #include<cstring> #include<cstdio> #include<algorithm> using namespace std; inline int read(){ int x = 0; char c = g 阅读全文
摘要:
打了一半就跑了,,,垫底垫底 A. 活动投票 摩尔投票,想象让投票不同的两个人同归于尽,选票过半的人的支持者肯定有活下来的 code #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline 阅读全文
摘要:
A. 学数数 单调栈 + 排序 + 前缀和 + 二分 单调栈应该是左边乘右边,考场脑抽写成长度。 对$lowe_bound$,$upper_bound$使用不熟 code #include<cstdio> #include<cstring> #include<algorithm> using nam 阅读全文
摘要:
日常垫底,赛个球 A. 玩个球 组合数$DP$,搞了个傻逼性质在那乱转移,结果还是只有$n == 2$的分,有趣的是中间交的一份码过了$n == 3$的,但是不是最后一次提交。。 正解 $dp[i][j]$表示放了$i$个白球,有$j$个颜色放完的方案数,主要思想在枚举剩余位置的第一个放啥 考虑放白 阅读全文
摘要:
甲国的军队 按照$b[i] - a[i]$排序即可,考场想法是$b[i] - a[i]$代表的是可以重复利用的,显然选大的 code #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline 阅读全文
摘要:
A. 随 开桶,然后就是乘 正解用什么多项式的思路考虑,但其实是个快速幂优化 发现开桶后就是一个特定乘法,满足结合率交换律,所以直接快速幂优化 code #include<cstdio> #include<cstring> using namespace std; const int MOD = 1 阅读全文
摘要:
A. Race 容易想到$tire$树,也容易想到判断两数大小关系在于第一个不同的二进制位 一个重要的点(我没想到):积分相当于排在它前面的人构成的点对数 通过在$tire$树上取反向$size$可以得到$O(n*m^3)$的做法,然后展开一下式子,或者观察一下二进制数, 展开平方得到一堆$a^2 阅读全文