补题
文章平均质量分 55
躺着想事
这个作者很懒,什么都没留下…
展开
-
昆明 E.Counting Binary Trees
根据别人的思路实现的 #include <bits/stdc++.h> using namespace std; using ll = long long; const int mod = 998244353; const int N = (int) 1e6 + 6; int n, m; vector<int> k; void input() { cin >> n >> m; k = vector<int>(m); for (auto&原创 2021-10-26 12:49:33 · 129 阅读 · 0 评论 -
F. Fence Job (SEERC 2020)
F. Fence Job 输入序列a[n]。 一个数可以向两边扩展,但不能逾越比它大的数。 设l[i]表示a[i]左边界,r[i]表示右边界。 设最终序列是b,如果bj==a[i], 那么l[i] < j < r[i]。 比如: a[] = {2, 3, 4, 1}; 那么l[2] = 1, 因为a[1] < a[2]; r[2] = 4, 因为a[4] < a[2]; 假设最终序列是b,那么b的前i个数可能有很多种情况。 定义dp[i][j]:b中长度为i的以a[j]结束的前缀序列原创 2021-07-23 14:28:35 · 888 阅读 · 0 评论 -
I - Modulo Permutations (SEERC 2020)
I - Modulo Permutations (SEERC 2020) 假设不含1和2,那么其余的数只能递减是的。 可以将n个数分成两段。 一段是以1开头的,一段是2开头的,算出分两段有多少种方案,再乘以n即可。 例如 当n为7时, 可分为如下两段 1 7 5 3 2 6 4 设 dp[i] 为现在第一段的最后一个数字是i, 第二段的最后一个数字是i - 1, 把大于i的数填写在这两段后面的方案数。 怎么计算dp[i]: 现在已知第一段最后是i 第二段最后是i - 1 那么可以枚举i - 1后面的与i-1原创 2021-07-22 12:29:11 · 1025 阅读 · 0 评论