2023/8/22比赛总结
赛后总结
解题顺序
9:30~10:40 B题 10:40~11:30 A题 11:30~12:00 D题
分数
期望分数 100~300分
预估分数 50~100分,预计A题50分,B题20分,D题10分
实际分数 200分 A题100分,B题100分
赛场感受
A,B题看起来额、很难,D题虽说和A题相似但考场上还是没有思路,整场赛场总重心都在A,B题上
赛后感受
A题纯模拟,但调爆了
B题第一眼想到的就是最短路,但后面改为了dfs为了方便写代码
D题就是在A题上不需要任何思路地改一改,但我题意理解错了
C题是真的完全没思路,但可以骗个5分
题目总结
A题排序+贪心 B题dfs+统计答案 C题纯暴力+优化 D题是A题的双倍经验
心得感悟
时间分配要均匀,尽可能的多拿分,哪怕暴力分也要拿,如果一道题思考时间超过30分钟及以上就果断跳下一题,不要因为一道的问题而耽误整场考试的节奏。本场考试的算法都是学过的,难度都稳定在普及+/提高-和提高+/省选-两个难度之间的,主要是平时对这些思路不熟,需要勤加练习。
题目部分关键代码
A题
sort(a+1,a+1+cnt1,cmp);
sort(b+1,b+1+cnt2,cmp2);
for(int i=1;i<=cnt1;i++){
if(a[i].x==a[i+1].x&&i!=cnt1&&a[i].y<a[i+1].y){
ans[a[i].id]=min(ans[a[i].id],a[i+1].y-a[i].y),a[i].falg=true;
continue;
}else{
for(int j=1;j<=cnt2;j++){
if(j!=cnt2&&b[j+1].x==b[j].x&&b[j].y!=b[j+1].y)ans[b[j].id]=min(ans[b[j].id],b[j+1].x-b[j].x),b[j].falg=true;
if(b[j].x>a[i].x||a[i].y>b[j].y)continue;
if(a[i].falg||b[j].falg)continue;
else{
if(a[i].x-b[j].x>b[j].y-a[i].y)ans[b[j].id]=min(ans[b[j].id],a[i].x-b[j].x),b[j].falg=true;
else if(a[i].x-b[j].x<b[j].y-a[i].y)ans[a[i].id]=min(ans[a[i].id],b[j].y-a[i].y),a[i].falg=true;
else continue;
}
}
}
}
B题
void dfs(int u, int fa)
{
int cnt = 1;
if(u != 1) f[u] = 1;
for(int i = h[u]; ~i; i = ne[i]) {
int j = e[i];
if(j == fa) continue;
cnt ++;
dfs(j, u);
f[u] += f[j];
}
if(cnt) f[u] += ceil(log2(cnt));
}
C题
for(int i=0;i<n;i++){
ans++;
int lt=0,rt=0;
for(int j=i-1;j>=0;j--){
if(x[i].second>x[j].second){
ans+=(rt+1)*(l[j]+1);
r[j]++;
lt++;
}else{
ans+=(lt+1)*(r[j]+1);
l[j]++;
rt++;
}
}
}
D题
sort(a+1,a+1+cnt1,cmp);
sort(b+1,b+1+cnt2,cmp2);
for(int i=1;i<=cnt1;i++){
if(a[i].x==a[i+1].x&&i!=cnt1&&a[i].y<a[i+1].y){
ans[a[i].id]=min(ans[a[i].id],a[i+1].y-a[i].y),a[i].falg=true,a[i+1].ans+=a[i].ans+1;
continue;
}else{
for(int j=1;j<=cnt2;j++){
if(j!=cnt2&&b[j+1].x==b[j].x&&b[j].y!=b[j+1].y)ans[b[j].id]=min(ans[b[j].id],b[j+1].x-b[j].x),b[j].falg=true,b[j+1].ans+=b[j].ans+1;
if(b[j].x>a[i].x||a[i].y>b[j].y)continue;
if(a[i].falg||b[j].falg)continue;
else{
if(a[i].x-b[j].x>b[j].y-a[i].y)ans[b[j].id]=min(ans[b[j].id],a[i].x-b[j].x),b[j].falg=true,a[i].ans+=b[j].ans+1;
else if(a[i].x-b[j].x<b[j].y-a[i].y)ans[a[i].id]=min(ans[a[i].id],b[j].y-a[i].y),a[i].falg=true,b[j].ans+=a[i].ans+1;
else continue;
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)