2023 CSP-J/S 第二轮游记
是少见的两场都参加的蒟蒻捏 ~( ̄▽ ̄)~*
10.20
比赛前一天,上午最后一节课跑完速耐之后吃不下一点饭,去小卖部买了瓶喝的就直接去机房了。和 wwm_ 大佬讨论了一会儿吃饭的事,估计是我说我中午没吃饭的事被教练听到了,教练到机房之后直接问我是不是没吃饭然后塞给了我一个面包和一个橘子 (没熟,有点酸)。
搞完创客的事之后就打算把板子什么的敲一敲,结果刚要动机房就突然停电了,我帮 houwz351 大佬领完吃的之后就回班级和一群不回宿舍也不回家的同学开了 \(2\) 把狼人杀。归票归错被嘲讽力。
10.21
今天比赛,早上吃完早餐直接去学校,坐校车去英才学校。环境超级好的 学费便宜点我也去。
上午 \(J\) 组
\(T1\) 简单的数学题,和往年的 \(T1\) 相比差距不大,\(5\) 分钟写完,思路挺简单,就是把要 \(1\) 个拿走的苹果和 \(2\) 个跳过的苹果看作一个整体,不太清楚怎么讲,直接贴代码吧。
#include<bits/stdc++.h>
using namespace std;
int n,ans1,ans2;
bool flag;
int main(){
cin>>n;
while(n){
ans1++;
int t1=n/3;
if(n%3!=0) t1++;
if(n%3==1 && !flag){
flag=1;
ans2=ans1;
}
n-=t1;
}
cout<<ans1<<" "<<ans2;
return 0;
}
\(T2\) 感觉是[NOIP1999 提高组] 旅行家的预算的弱化版(少了油箱容量的限制),挺简单的贪心,难度和往年的 \(T2\) 相比个人觉得偏低,贴上赛时代码。
#include<bits/stdc++.h>
using namespace std;
int n,ans;
double d,a[100005],v[100005],oil;
struct node{
double p;
int w;
};
bool cmp(node x,node y){
if(x.p!=y.p) return x.p<y.p;
else return x.w>y.w;
}
vector<node> bag;
int main(){
cin>>n>>d;
for(int i=1;i<n;i++){
cin>>v[i];
}
for(int i=1;i<=n;i++){
cin>>a[i];
}
int i=1;
while(i!=n){
bag.push_back((node){a[i],i});
if(oil*d>=v[i]){
oil-=v[i]/d;
i++;
}
else{
sort(bag.begin(),bag.end(),cmp);
ans+=ceil(v[i]/d-oil)*bag[0].p;
oil+=ceil(v[i]/d-oil);
}
}
cout<<ans;
return 0;
}
在洛谷上 \(35pts\),在有道小图灵上 \(50pts\),复杂度不够好,while
循环内的 sort
可以直接用优先队列来代替,这样就可以过了,但是考场上忘记优先队列怎么拼了。
\(T3\) 不出所料的是模拟题并且和数学有一点关系,和往年的 \(T3\) 相比差别不大。赛时是奔着同时满足 \(b=0\) 和 \(c=0\) 的测试点以及根一定是整数的测试点写的。洛谷上 \(50pts\),有道小图灵上 \(10pts\)。写的部分分就不贴代码了。
\(T4\) 没什么想法,写了部分分之后就没什么时间了。
中午
学校旁边找了个小饭店吃饭,找回了小学的时候楼下饭店一样脆弹得不太敢吃的扁食。和保安聊了会儿天之后回英才学校逛逛,是真的大,差点迷路。
下午 \(S\) 组
都没什么想法,实力不够,继续努力。
一些不足
- 没有带吃的进考场,导致 \(S\) 组最后 \(1\) 小时丢了很多已经拿到的分。
STL
库不够熟练,很多常用的容器不会拼写。- 心态不够好,不够专注,容易受外界影响(比如说 \(S\) 组才开考 \(2\) 小时就坐不住开始大敲键盘的小鬼就让我瞬间写不下去)。