专栏文章

251118noip模拟赛总结

个人记录参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@min5opxa
此快照首次捕获于
2025/12/01 20:59
3 个月前
此快照最后确认于
2025/12/01 20:59
3 个月前
查看原文
90 + 28 + 0 + 0 = 118
炸飞了我丢qwq
早上到机房前猛跑了一下,没想到因为一些奇奇怪怪的原因导致我在8:408:40之前几乎没法烧烤,一直处于半梦半醒的状态
犹豫了一下要不要请假回去,但回去也干不了什么,所以直接开摆

A - a

因为可以烧烤的时候已经只剩3.5h3.5h了,所以打算直接死磕T1
8:408:40脑子终于可以动了,但是一直在想一些假的贪心什么的东西,写出来了一些代码,但是都有一些奇妙的bug
感觉那些贪心的想法实在是非常的好笑
过了0.5h0.5h,又清醒了一些,想到了dpdp
状态就是答案,转移见代码:)
应该就是dpdp,所以一直在想怎么优化,但是想不出来qwq
反正已经有90pts90pts了,就不管它了:)
出题人真良心,m2m^290pts90pts:)
CPP
#include <bits/stdc++.h>
#define LL long long

using namespace std;

const LL N = 1e5 + 5, inf = 1e18;

LL t, m, k, t1, t2, ans[N];

int main () {
  ios::sync_with_stdio(0), cin.tie(0);
  for (cin >> t; t--;) {
    cin >> m >> k >> t1 >> t2;
    fill(ans + 1, ans + m + 1, inf);
    if (t1 <= t2) {
      for (LL i = 1; i <= m; i++) {
        cout << i * k + i * t1 << ' ';
      }
      cout << '\n';
      continue;
    }
    ans[1] = k + t1;
    for (LL i = 1; i <= m; i++) {
      ans[i] = min(ans[i], ans[i - 1] + k + t1);
      for (LL j = i + 1; j <= m; j++) {
        ans[j] = min(ans[j], max(ans[i] + i * t2, k * j) + i * t2 + (j - i) * t1);
      }
    }
    for (int i = 1; i <= m; i++) {
      cout << ans[i] << ' ';
    }
    cout << '\n';
  }
  return 0;
}

B - b

哎呀怎么只剩2h2h了qwq
先推一下式子找找规律
30min30min过去了,并没有发现什么规律qwq
因为T3T4都还没看,决定先打一下纯暴力
我丢,怎么纯暴力样例都没过qwq 调了10min10min发现都是一些非常sb的bug
CPP
#include <bits/stdc++.h>
#define LL long long

using namespace std;

const int N = 5e3 + 5, mod = 1e9 + 7;

LL n, m, f[2][N], g[2][N];

int main () {
  cin >> n >> m;
  for (int i = 0; i <= m; i++) {
    cin >> f[0][i];
  }
  for (int i = 0; i <= m; i++) {
    cin >> g[0][i];
  }
  for (int i = 1; i <= n; i++) {
    for (LL j = 0; j < m; j++) {
      f[i & 1][j] = g[i - 1 & 1][j] + g[i - 1 & 1][j + 1] * (j + 1) % mod;
      f[i & 1][j] %= mod;
      g[i & 1][j] = f[i - 1 & 1][j] - f[i - 1 & 1][j + 1] * (j + 1) % mod + mod;
      g[i & 1][j] %= mod;
    }
    f[i & 1][m] = g[i - 1 & 1][m];
    g[i & 1][m] = f[i - 1 & 1][m];
    // for (int j = 0; j <= m; j++) {
    //   cout << f[i & 1][j] << ' ';
    // }
    // cout << '\n';
    // for (int j = 0; j <= m; j++) {
    //   cout << g[i & 1][j] << ' ';
    // }
    // cout << '\n';
  }
  for (int i = 0; i <= m; i++) {
    cout << f[n & 1][i] << ' ';
  }
  cout << '\n';
  for (int i = 0; i <= m; i++) {
    cout << g[n & 1][i] << ' ';
  }
  return 0;
}

C - c

只有70min70min了qwq
先把T3T4题都看完吧qwq
我丢只有50min50min了qwq
不会写

D - d

(话说这个题目名称还要写吗qwq不就是abcd
纯暴力:)
纯暴力炸了qwq
屎山代码就不贴了:)

梦游了4.5h4.5h,不知道怎么评价qwq
留给T3T4的时间太少了,应该把T2T3T4一起看的

评论

1 条评论,欢迎与作者交流。

正在加载评论...