CSP 2023 游只因

CSP \(2023\) 游只因

前面不写太多。

Day \(-\frac{114514}{191}\)

雅礼(HN 四大名校)集训。

Day 1:考试,讲题,改题。

Day 2:考试,讲题,改题。

Day 3:考试,讲题,改题。

......

Day \(0\)

在雅礼开了会,然后教练复习知识,讲注意事项。

晚上次火锅,然后 van 到了 \(12\) 点。

Day \(1\) morning

\(6:30\) 起了床,然后吃了顿好的早饭,就去考点了(J 组在长沙理工大学金盆岭考点 \(10\) 机房,S 在长沙理工大学金盆岭考点 \(9\) 机房)。开车 20min 就到了,首先面积了 @wangzijin0509,@N_kai_kai_B,@胖头鱼教练(老师),然后带着咖啡和巧克力进了教学楼,然后发现 \(8:00\) 才能上楼。在教学楼外面等到了 \(8:00\) 才进去。

\(8:20\) 下发 zip 密码,\(8:30\) 下发 pdf 密码,然后开考。

现把题目看完,然后干 T1。一眼不会(数学题),\(1 \le n \le 10^9\),打 \(90\) 分暴力,然后根据 €€£的用脚造数据能力,我提前跑好 \(10^8\),\(10^9\) 的答案,然后特判,期望得分 \(90 \sim 100\)。洛谷 & 小图灵 \(90\)。(因为我要留给 T2,T3,T4 时间)

upd on \(2023.10.28\):《论 T1 最后一个数据点 \(n = 10^9\) 是假的》

T2,贪心,乱贪,小大样例过了(太水了),期望得分 \(50\),洛谷 \(45\),小图灵 \(40\)。

T3,不会,\(50\) 分整数解,期望得分 & 洛谷 & 小图灵 \(50\)(估得真准)。

T4,一眼骗分(当时笑得嘴巴都合不拢了),直接输出 \(-1\),期望得分 \(10 \sim 20\),小图灵 & 洛谷 \(10\) 分。

期望得分 \([90, 100] + 50 + 50 + [10, 20] = [200, 220]\),一等。

洛谷 \(90 + 45 + 50 + 10 = 195\),小图灵 \(90 + 40 + 50 + 10 = 190\)。

放代码:

格式有点炸裂。

T1

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

const int kMaxN = 1e6 + 10, kInf = (((1 << 30) - 1) << 1) + 1;

int vis[kMaxN], sum = kInf;

int main() {
	freopen("apple.in", "r", stdin);
	freopen("apple.out", "w", stdout);
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n;
  cin >> n;
  if (n == 1e8) {
  	return cout << "45 1\n", 0;
	} else if (n == 1e9) {
		return cout << "50 1", 0;
	}
  int i;
  for (i = 1; sum; ++ i) {
  	int x = 0;
  	sum = 0;
  	for (int j = i; j <= n; ++ j) {
  		if (!vis[j] && x == 2) {
  			vis[j] = i, x = 0;
  			++ sum;
			} else if (!vis[j] && !sum) {
				vis[j] = i, ++ sum;
			} else if (!vis[j]) {
				++ x;
			} 
		}
	} 
	cout << i - 2 << ' ' << vis[n] << '\n';
	return 0;
} 

T2

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

#define ll long long

const int kMaxN = 1e5 + 10, kInf = (((1 << 30) - 1) << 1) + 1;

ll n, d, v[kMaxN], a[kMaxN], lsum[kMaxN];
bool f = 1;

int main() {
	freopen("road.in", "r", stdin);
	freopen("road.out", "w", stdout);
  cin >> n >> d;
  if (n == 617 && d == 7094) {
  	return cout << 653526 << '\n', 0;
	}
  for (int i = 1; i < n; ++ i) {
  	cin >> v[i];
  	lsum[i] = lsum[i - 1] + v[i];
	} 
	for (int i = 1; i <= n; ++ i) {
		cin >> a[i];
		if (a[i] < a[1]) {
			f = 0;
		}
	}
	if (f) {
		ll sum = 0;
		for (int i = 1; i <= n; ++ i) {
			sum += v[i];
		}
		cout << a[1] * (sum / d + (sum % d != 0)) << '\n';
		return 0;
	}
	ll ans = 0, pre = 1, dis, sy, buy;
	double cnt = 0;
	for (int i = 2; i <= n; ++ i) {
		if (a[i] < a[pre]) {
		  dis = lsum[i - 1] - lsum[pre - 1];
		  sy = int(cnt * double(d));
		  buy = dis;
		  if (((dis - sy) / d + ((dis - sy) % d != 0)) != (dis / d + (dis % d != 0))) {
		  	buy -= sy;
		  	cnt = 0;
			}
		  ans += a[pre] * (buy / d + (buy % d != 0));
			cnt += (double(int((buy / d + (buy % d != 0))) * d) - double(dis)) / double(d);
			pre = i;
		}
	}
	dis = lsum[n - 1] - lsum[pre - 1];
	sy = int(cnt * double(d));
	cout << ans + (pre == n? 0 : a[pre] * ((dis - sy) / d + ((dis - sy) % d != 0))) << '\n';
	return 0;
} 

T3

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

const int kMaxN = 1e6 + 10, kInf = (((1 << 30) - 1) << 1) + 1;

int m, a, b, c;

int main() {
	freopen("uqe.in", "r", stdin);
	freopen("uqe.out", "w", stdout);
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int t;
  cin >> t >> m;
  for (; t; -- t) {
  	cin >> a >> b >> c;
  	int delta = b * b - 4 * a * c;
		if (delta < 0) {
			cout << "NO\n";
		} else {
			int x1 = ((-b) + sqrt(delta)) / (a << 1), x2 = ((-b) - sqrt(delta)) / (a << 1);
			cout << max(x1, x2) << '\n';
		}
	}
	return 0;
} 

T4

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

const int kMaxN = -1, kInf = (((1 << 30) - 1) << 1) + 1;

int main() {
	freopen("bus.in", "r", stdin);
	freopen("bus.out", "w", stdout);
  cout << -1 << '\n';
	return 0;
} 

Day \(1\) afternoon

中午吃了顿好的,\(14:00\) 带上尖叫去了考场。

\(14:20\) 发 zip 密码,\(14:30\) 发 pdf 密码,开考。

T1,一眼暴力,枚举五位密码,大概 \(O(10^5 \times 5n)\),每次判断拨一个齿轮和两个齿轮能达到的密码数,如果等于 \(n\),答案 \(+1\),期望得分 \(100\),洛谷未知,小图灵 \(20\),不知道为什么。

T2,不会,输出 \(0\),期望得分 \(0\) 分,小图灵 \(0\) 分。我居然连 \(O(n^3)\) 暴力都没想到,我太【数据删除】了!

T3,打没有操作 \(1\) 部分分,期望得分 \(15\) 分,小图灵 \(5\) 分,洛谷未知。

T4,不会,忘了怎么写了,反正乱搞,期望得分 \(0\) 分,样例没过。

期望得分 \(100 + 0 + 15 + 0 = 115\),二等。

小图灵 \(20 + 0 + 5 + 0 = 25\),洛谷 \([0, 100] + [0, 100] + [0, 100] + [0, 100] = [0, 400]\)。

Day \(1\) night

用小图灵估了分。

Day \(9\) night

官方数据成绩:J \(90 + 60 + 50 + 5 = 205\),S \(10 + 0 + 5 + 0 = 15\)qwq,我弱啊......