• 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

    #include 
    
    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

    #include 
    
    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

    #include 
    
    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

    #include 
    
    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,我弱啊……

  • 相关阅读:
    关于js_事件委托(代理)的介绍和简单使用
    Prometheus 性能调优-水平分片
    换脸插件升级导致SDWebUI无法启动cannot import name ‘Undefined‘ from ‘pydantic.fields‘
    Redis相关
    R语言 批量导入数据
    Qt+QtWebApp开发笔记(五):http服务器html中使用json触发ajax与后台交互实现数据更新传递
    百度迁徒数据爬虫方法
    Android-第十三节03xUtils-数据库框架(增删改查)详解
    eBPF学习笔记(二)—— eBPF开发工具
    Spark实现二次排序
  • 原文地址:https://www.cnblogs.com/bc2qwq/p/CSP2023youzhiyin.html