CSP-J 2023游记

第一轮

Day0


0天警告

Day1

开考,听说是 姜sir 批卷,也没啥好紧张的了。

选择题靠我垃圾的C++,第一题就错了/cf,两道数学题和位运算倒是秒切。阅读程序很顺利,只错了一道,到了补全程序只剩 \(10\text{min}\) 了,瞎蒙了几个,居然对的还不少。

出来后找 byr 对答案,他说他忘了,差评。

Day\(\infty\)

出成绩了,\(80 pts\),稳过线。

顺便膜拜一下 wxy 大佬:一个初一女生,结果考了 \(93pts\),全市第一名。

第二轮

Day0

坐 @register_long_double 大佬的爸爸的车去日照考试。

中途 @register_long_double 用我的手机玩 原神,结果吐了,我的手机啊啊啊!这下真是玩原神玩的了。

刚下高速就看见了 @ebzyl 和他的父母,巧合的事发生了/jy。

下午大概五点到了房间,颓了会儿知乎,然后写了一下【CSP-J2019】纪念品(埋下伏笔),很奇怪用二维数组做背包 \(45pts\),但把第一维删掉就AC了,@I_am_kunzi 在那玩一款我也不知道叫什么的小游戏。

六点去吃饭,看见了 @BYR_KKK、@CheZiHe929 和 @Minecraft_lb 大佬,@ljlbj_fengyuwuzu 问我认不认识xxx(我的一个同班同学),然后把我带去一个队友桌前,他居然知道关于 xxx 的一些不可描述的事情,十分震惊。

吃完饭去试机,发现给我们发了 CSP-J2019 的题目,诶下午恰好做了,\(30\) 就分钟AK了。出来找不找我们队,转了好一会才找到他们在旗杆下面233。

回酒店打了个【CSP-J2020】方格取数,然后定了个明天 \(6:00\) 的闹钟,铃声是《千本樱》,就睡了。

Day1

我和 @I_am_kunzi 被昨晚定的《千本樱》吵醒了,我起来看了会QQ小世界,然后就去吃早饭,\(7:30\) 吃完早饭就坐大巴上路了。

在大巴上看了会儿 LIS 和 背包(结果没考),到山外后 姜sir 叮嘱了几句就上考场了。

\(8:05\) 进了考场,打了个快读和 LIS 就开考了。

直接开 T1,推了几组发现规律,直接把第一问做了,用一个 while 循环直到 \(n \ne 0\),每次减去 \(\left \lceil \frac{n}{3}\right \rceil\)。第二问也十分简单,直接在第一问的 while 循环里做即可,当 \((n-1) \mid 3\) 时,正好能拿走最后一个苹果,即第 \(n\) 号苹果,\(15 \text{min}\) 切了。

Code:

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
	int x=0;
	int f=1;
	char ch=getchar();
	while(ch>'9'||ch<'0'){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch<='9'&&ch>='0'){
		x=(x<<3)+(x<<1)+(ch-48);
		ch=getchar();
	}
	return x*f;
}
int x;
signed main(){
	freopen("apple.in","r",stdin);
	freopen("apple.out","w",stdout);
	int cnt=0;
	int n=read();
	bool flag=true;
	while(n){
		cnt++;
		if((n-1)%3==0&&flag){
			x=cnt;
			flag=false;
		}
		if(n%3==0)n=n-n/3;
		else n=n-(n/3+1);	
	}
	cout<<cnt<<' '<<x;
	return 0;
}

T2 一眼丁真,鉴定为 贪心(因为普及组 T2 不可能是dp)

不难发现,车每次加油的站点的油价一定是降序的,这样才能使最终总价最小。我们维护目前经过站点的最小油价,以及到下一个可加油站点所经过的路程。

每次找到比上一个加油站点油价小的就要在这里加油,并更新上述变量。我们还要维护一个汽车目前能跑的千米数,因为每次加油后跑到

下一个要加油的站点可能会有剩下的油,还能跑一段距离,可以减少当前的加油量,因此我们每次更新答案时还要考虑这种情况。

注意当到达最后一个站点要停止,并做一次更新。

用时 \(30\text{min}\)

Code:

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
	int x=0;
	int f=1;
	char ch=getchar();
	while(ch>'9'||ch<'0'){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch<='9'&&ch>='0'){
		x=(x<<3)+(x<<1)+(ch-48);
		ch=getchar();
	}
	return x*f;
}
const int MAXN=1e5+10;
int a[MAXN],v[MAXN];
int ans=0;
int sygl=0;
signed main(){
	freopen("road.in","r",stdin);
	freopen("road.out","w",stdout);
	int n=read(),d=read();
	for(int i=2;i<=n;i++)v[i]=read();
	for(int i=1;i<=n;i++)a[i]=read();
	int tmp=0;
	int lst=a[1];
	for(int i=1;i<=n;){
		while(i++){
			tmp+=v[i];
			if(a[i]<lst||i==n)break;
		}
		if(i>n)break;
		ans+=(((long long)ceil((tmp-sygl*1.0)/(d*1.0)))*lst);
		sygl+=(((long long)ceil((tmp-sygl*1.0)/(d*1.0)))*d);
		lst=a[i];
		sygl-=tmp;
		tmp=0;
	}
	cout<<ans;
	return 0;
}

T3 不出意外,又是大模拟,我一个 \(7\) 年级蒟蒻根本不会啊qwq。

想把 性质C 的 \(50pts\) 得到,眼瞎没看到求根公式,所以暴力求解了一下,但可能会被卡。

因为不是正解,就不贴代码了。

T4 一开始写了个 A*,结果样例都过不了,无奈输出 \(-1\)

写完用 NOI Linux 重测了一遍,没什么问题。

出来后得知 @I_am_kunzi 前三道样例全过了,看来 \(300+\) 省前十是稳了。其他人也都好强,一问都是 \(200+\)

吃了午饭便返程了。

下午老师发了代码,我先到洛谷测了一下是 \(100+100+40+10 = 250\)。是 \(T3\) 暴力被卡了吗(?),小图灵是
\(100+100+50+10 = 260\) 倒是挺理想,打听了一圈好像小图灵比洛谷数据准,还强(?)

PS:发现洛谷 T3 数据似乎造错了,我就应该是 \(50pts\)

小图灵出了个一键查分功能,查了一下我似乎是全省第 \(38\),似乎队里几个大佬都没我高/jk。

@I_am_kunzi 巨佬 T3 因为函数为 long long 类型却没有返回值而保龄了,但函数类型改成 void 就得了满分。据他所说是调试的时候没开 O2,也没用 NOI Linux 测试,但在 devcpp 上测的结果是对的。挂满了,真惨。

T3稍微证明了一下,发现方程不可能有 \(>m\) 的整数解,然后看了看洛谷的数据,发现造错了一组(数据生成器差评),害我白担心

既然考完了,那就没有必要去想了,现在我的主要任务就是备战期中考试,下个周一切都将揭晓!

Day\(\infty\)

今天是2023年10月29日,星期天。

早晨我正常来到YTEZ上OI课,并和巨佬们相遇。

今天的内容是讲 CSP-J2023 的所有题以及 CSP-S2023 的前两题,我负责讲 CSP-S 的 T1。

@BYR_KKK 巨佬发现他 J 组 T2 ceil 写挂了,让我帮他调,我随机了点数据胡乱拍了几组就给他 hack 了(伏笔)。

我就一直坐在 @BYR_KKK 的座位上,当时他去讲 T4 了。突然范sir拿着手机跑进来,找了几个人说他们挂分了让他们不要伤心。我顺便把头凑过去看下我的分,于是就看到了下面的一幕:

啊?

什么鬼

byr czh T2 为啥过了?

??????

好吧,CSP-J2023 T2 作为事实论据,有力地论证了CCF数据过水的中心论点。

虽然遗憾很多,但能得全组(并列)第一也还行

洛谷有人发 SD 的 Excel 表格了,讲完题回来才看见,排了下序发现我排在全省(并列)第 41 名,烂透了

这下得了人生第一个省1=,但有没有五级勾不敢确定(好吧今年线真低)。

一切暂且尘埃落定了,专心备战期中考试吧!

2023.11.11 更新:期中考试没有那么惨,班级第三,年级第15。

posted @ 2023-10-22 12:14  FinderHT  阅读(68)  评论(1编辑  收藏  举报