csp-j 游记

时间:2022-12-28 19:10:39

本文章同步发表于洛谷博客

初赛 day -7 ~ day -1

赛前集训,都很简单,什么二叉树,图论呀,轻松搞定。做了 2008 至 2015 年的普及组真题,都在 50 分以上,感觉初赛稳了(坐标 HN)。

初赛 day 1

考前还和一起学习的同学们闲聊了几句。

开始考试。

看到试卷后我直接蒙逼了,这什么题呀,没有一道是原题,然后把会的题目写了,最后随便蒙了剩下的题(因为大部分是选择题,所以希望我的 rp++)。估分 55HN 应该稳了(HN 去年分数线好像只有四十几分)。

初赛 day 10

初赛分数 69!!!分数线 47.5,稳过。

初赛一等(一等分数线 64.5)。哈哈哈 !!!

 复赛 day -14 ~ day -1

赛前集训,复习 dfs搞得我搜索都不会了。

 复赛 day 1

 T1

签到题,虽然我试了许多解法,但是最终找到了正解,几个 if,一个 for 就搞定了,唯一坑点就是要开 long long 类型,自测 100pts

 

#include <bits/stdc++.h>
#define INF 1000000000

using namespace std;

int a, b;
long long sum = 1;

int main() {
  cin >> a >> b;
  if (a == 1) {
    cout << 1;
    return 0;
  }
  if (b >= 1e7 && a > 1) {
    cout << "-1";
    return 0;
  }
  for (int i = 1; i <= b; i++) {
    sum *= a;
    if (sum > INF) {
      cout << "-1";
      return 0;
    }
  }
  cout << sum;
  return 0;
}

 

T2

只看一眼,就打了个暴力就丢了,估分 60pts

 

#include <bits/stdc++.h>

using namespace std;

long long k, n, e, d;

int main() {
  cin >> k;
  for (int i = 1; i <= k; i++) {
    cin >> n >> e >> d;
    long long f = n - e * d + 2;
    bool flag = 0;
    for (int j = 1; j <= f / 2; j++) {
      int g = f - j;
      if (g * j == n) {
        cout << j << ' ' << g << '\n';
        flag = 1;
        break;
      }
    }
    if (!flag) {
      cout << "NO" << '\n';
    }
  }
  return 0;
}

 

T3

话说前两题只用了 1h,剩下的时间就去写第三题了。

程序根据数据点特性写的,写了特殊性质 12(但是赛后总结时发现没有判断完整,导致分数很低),赛时估分 30pts

 

#include <bits/stdc++.h>

using namespace std;

string s;

int main() {
  cin >> s;
  int n = s.size();
  bool flag = 0;
  for (int i = 0; i < n; i++) {
    if (s[i] == '&') {
      flag = 1;
      break;
    }
  }
  if (!flag) {
    bool flagg = 0;
    int sum = 0;
    for (int i = 0; i < n; i++) {
      if (s[i] == '1' && s[i + 1] == '(') {
        sum++;
      }
      if (s[i] == '1') {
        flagg = 1;
      }
    }
    cout << flagg << '\n' << '0' << ' ' << sum;
    return 0;
  }
  bool flaag = 0;
  for (int i = 0; i < n; i++) {
    if (s[i] == '|') {
      flaag = 1;
      break;
    }
  }
  if (!flaag) {
    bool flaagg = 1;
    int sum = 0;
    for (int i = 0; i < n; i++) {
      if (s[i] == '0' && s[i + 1] == '(') {
        sum++;
      }
      if (s[i] == '0') {
        flaagg = 1;
      }
    }
    cout << flaagg << '\n' << sum << ' ' << '0';
    return 0;
  }
  return 0;
}

 

T4

看出来是 dp,但是不会写,输了数据,随便瞎写了一个程序后就丢了,预计 0pts

估分:100 + 60 + 30 + 0 = 190

HN 一等要看 rp 是多少了。

考后

小图灵上 100 + 60 + 10 + 0 = 170

计蒜客上 100 + 60 + 5 + 0 = 165

洛谷自测 100 + 50 + 5 + 0 = 155

不是,怎么一个比一个低?

官方分数:100 + 50 + 0 + 0 = 150,遗憾二等。还是年龄小了,等明年再努力吧。

最后祝所有考生 rp++!考出一个好成绩!

完结