diff --git a/TangDou/LanQiaoBei/2024年1月STEMA中级真题(编程类).pdf b/TangDou/LanQiaoBei/2024年1月STEMA中级真题(编程类).pdf index 1f663d8..ed40136 100644 Binary files a/TangDou/LanQiaoBei/2024年1月STEMA中级真题(编程类).pdf and b/TangDou/LanQiaoBei/2024年1月STEMA中级真题(编程类).pdf differ diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202312/TD.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202312/TD.cpp index 16dd71f..53a7666 100644 --- a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202312/TD.cpp +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202312/TD.cpp @@ -1,30 +1,30 @@ #include using namespace std; -const int N = 110; - -struct Node { - int id; - int score; - const bool operator<(const Node &t) { - if (score == t.score) return id < t.id; - return score > t.score; +const int N = 100010; +vector g[N]; +int c[N]; +int dfs(int u, int fa, int k) { + if (k == 0) return c[u]; + int sum = c[u]; + for (int i = 0; i < g[u].size(); i++) { + if (g[u][i] == fa) continue; + sum += dfs(g[u][i], u, k - 1); } -} a[N]; -/* -3 -3 84 -1 87 -2 84 -*/ + return sum; +} int main() { int n; cin >> n; + for (int i = 1; i <= n; i++) cin >> c[i]; + for (int i = 1; i < n; i++){ + int a, b; + cin >> a >> b; + g[a].push_back(b); + g[b].push_back(a); + } + int k; + cin >> k; for (int i = 1; i <= n; i++) - cin >> a[i].id >> a[i].score; - - sort(a + 1, a + 1 + n); - - for (int i = 1; i <= n; i++) - cout << a[i].id << " " << a[i].score << endl; + cout << dfs(i, -1, k) << endl; return 0; } \ No newline at end of file diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/1.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/1.cpp new file mode 100644 index 0000000..95dda30 --- /dev/null +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/1.cpp @@ -0,0 +1,10 @@ +#include +using namespace std; +const int N = 110; +int a[N]; +int main() { + cin >> a[0] >> a[1] >> a[2]; + sort(a, a + 3); + cout << a[1] << endl; + return 0; +} \ No newline at end of file diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/2.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/2.cpp new file mode 100644 index 0000000..d13fe2c --- /dev/null +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/2.cpp @@ -0,0 +1,24 @@ +#include +using namespace std; +bool isQm(int x) { + int t = x; + while (t) { + int a = t % 10; + if (a > 0 && x % a > 0) return false; + t /= 10; + } + return true; +} + +int main() { + int n, m; + cin >> n >> m; + int cnt = 0; + for (int i = n; i <= m; i++) + if (isQm(i)) { + cout << i << " "; + cnt++; + } + if (cnt == 0) cout << -1; + return 0; +} \ No newline at end of file diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/4.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/4.cpp new file mode 100644 index 0000000..823f3f0 --- /dev/null +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/4.cpp @@ -0,0 +1,29 @@ +#include +using namespace std; +const int N = 5010; +int f[N]; // DP结果数组 f[i]含义:第i层台阶共有多少种到达的方法数 +int n, k; +/* +4 2 +5 +*/ +int main() { + cin >> n >> k; + // 特判K=1 + if (k == 1) { + cout << 1 << endl; + exit(0); + } + // 初始化 K>=2 + f[1] = 1; + f[2] = 2; + + // 状态转移方程 + for (int i = 3; i <= n; i++) + for (int j = max(i - k, 1); j <= max(1, i - 1); j++) + f[i] += f[j]; + + // for (int i = 1; i <= n; i++) cout << f[i] << " "; + cout << f[n] << endl; + return 0; +} \ No newline at end of file diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/复习.md b/TangDou/LanQiaoBei/ZhongGaoJi/复习1.md similarity index 100% rename from TangDou/LanQiaoBei/ZhongGaoJi/复习.md rename to TangDou/LanQiaoBei/ZhongGaoJi/复习1.md diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/复习2.md b/TangDou/LanQiaoBei/ZhongGaoJi/复习2.md new file mode 100644 index 0000000..2e4038b --- /dev/null +++ b/TangDou/LanQiaoBei/ZhongGaoJi/复习2.md @@ -0,0 +1,47 @@ + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202403072025874.png) + +办法:将十六进制向十进制化,**而不是** 将十进制向十六进制转换。上来直接排除$D$(出题人不会太仁慈,否则就直接秒杀了),其它的靠算。 + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202403072030081.png) +```cpp {.line-numbers} +#include +using namespace std; +const int N = 110; +int a[N]; +int main() { + cin >> a[0] >> a[1] >> a[2]; + sort(a, a + 3); + cout << a[1] << endl; + return 0; +} +``` + + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202403072034607.png) +```cpp {.line-numbers} +#include +using namespace std; +bool isQm(int x) { + int t = x; + while (t) { + int a = t % 10; + if (a > 0 && x % a > 0) return false; + t /= 10; + } + return true; +} + +int main() { + int n, m; + cin >> n >> m; + int cnt = 0; + for (int i = n; i <= m; i++) + if (isQm(i)) { + cout << i << " "; + cnt++; + } + if (cnt == 0) cout << -1; + return 0; +} +``` \ No newline at end of file