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。