CSP2024总结(学术版)

news/2024/11/13 23:40:47/文章来源:https://www.cnblogs.com/joker-killer/p/18540673

J组T4

一道/赛上觉得很难/下来也听说很难/但听老师一讲也觉得只有中位绿/的题。

题目传送门


首先想到 \(r=1\) 时的做法,不难看出可以使用一个标记数组来存储,然后依次寻找离他最近的 \(1\) 看是否满足要求,标记即可。\(5\) pts拿到手。

然后发现可以扩展出一种类似递推的思想,设\(f_{i,j}\) 表示在第i轮时能否以j结尾,0为可以,1就不行。那么显而易见的类比上面的过程,只用找到距离当前数最近的有值的f就可以了。

如果仅仅到这里可能只有中位黄,但是题目告诉我们:一个人不能自己接自己的龙。 这里就有一个不太容易想到的思维转换,也就是你可以先去掉上一轮的值,后面在加回来这样就不会产生错误了。期望得分60~85pts看你怎么写。

进行细节上的优化+快读即可过掉本题。

#include<bits/stdc++.h>
using namespace std;
const int N=200005,R=105;
int t,n,k,q,r[N],c[N],now,arr,maxx,maxr,tt,i,j,qq,rr,len[N],mark[R][N];
vector<int> v[N],del[N],the[N];
int in(){int k=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')k=k*10+c-'0',c=getchar();return k*f;
}
signed main(){t=in();for(tt=1;tt<=t;tt++){maxx=0;n=in(),k=in(),q=in();for(i=1;i<=n;i++){len[i]=in();v[i].clear();del[i].clear();the[i].clear();for(j=0;j<len[i];j++){del[i].push_back(0);the[i].push_back(0);arr=in();maxx=max(maxx,arr);v[i].push_back(arr);}}maxr=0;for(qq=1;qq<=q;qq++) r[qq]=in(),c[qq]=in(),maxr=max(maxr,r[qq]);for(i=0;i<=maxr;i++) for(j=0;j<=maxx;j++) mark[i][j]=0;mark[0][1]=1;for(rr=1;rr<=maxr;rr++){for(i=1;i<=n;i++){now=-1;for(j=0;j<len[i];j++) mark[rr-1][v[i][j]]-=del[i][j];for(j=0;j<len[i];j++){if(now!=-1&&j-now<k){mark[rr][v[i][j]]++;the[i][j]++;}if(mark[rr-1][v[i][j]]>0) now=j;}for(j=0;j<len[i];j++){mark[rr-1][v[i][j]]+=del[i][j];del[i][j]=the[i][j];the[i][j]=0;}}}for(qq=1;qq<=q;qq++){if(mark[r[qq]][c[qq]]){putchar('1');putchar('\n');}else{putchar('0');putchar('\n');}}}return 0;
}

S组T2

题目传送门

没有什么好说的,先想到二分,然后模拟。

注意写代码的时候添加一些注释,变量名规范,尽量多写函数,这样容易调试。后面就是经典dry摄像头模型了。

#include<bits/stdc++.h>using namespace std;
int t,n,m,l,v,cnt,it,ss,len,be,en,mid,kkk,ans,now,jilu,p[200010];
double vv;
bool flag;
struct node{int d;int v;int a;	
}c[200010];
struct line{int ll;int rr;
}arr[200010];
int work1(){cnt=0;for(int i=1;i<=n;i++){if(c[i].a==0){if(c[i].v>v&&c[i].d<=p[m]) cnt++;} else if(c[i].a>0){ss=p[m]-c[i].d;if(ss<0) continue;if(c[i].v*c[i].v+2*c[i].a*ss>=0)vv=sqrt(c[i].v*c[i].v+2*c[i].a*ss);else vv=0.000;if(vv>v) cnt++;}else{if(c[i].d<=p[m]){it=lower_bound(p+1,p+1+m,c[i].d)-p;ss=p[it]-c[i].d;if(c[i].v*c[i].v+2*c[i].a*ss>=0)vv=sqrt(c[i].v*c[i].v+2*c[i].a*ss);else vv=0.000;if(vv>v) cnt++;}}}return cnt;
}
bool cmp(line t1,line t2){return t1.rr<t2.rr;
}
int work2(){//zerolen=0;for(int i=1;i<=n;i++){if(c[i].a==0){if(c[i].v>v&&c[i].d<=p[m]){arr[++len].ll=lower_bound(p+1,p+1+m,c[i].d)-p;arr[len].rr=m;}} else if(c[i].a>0){ss=p[m]-c[i].d;if(c[i].v*c[i].v+2*c[i].a*ss>=0)vv=sqrt(c[i].v*c[i].v+2*c[i].a*ss);else vv=0.000;if(vv>v){kkk=lower_bound(p+1,p+1+m,c[i].d)-p;be=kkk;en=m;while(be<=en){mid=(be+en)/2;ss=p[mid]-c[i].d;if(c[i].v*c[i].v+2*c[i].a*ss>=0)vv=sqrt(c[i].v*c[i].v+2*c[i].a*ss);else vv=0.000;if(vv>v){ans=mid;en=mid-1;}else be=mid+1;}arr[++len].ll=ans;arr[len].rr=m;}}else{if(c[i].d<=p[m]){it=lower_bound(p+1,p+1+m,c[i].d)-p;ss=p[it]-c[i].d;if(c[i].v*c[i].v+2*c[i].a*ss>=0)vv=sqrt(c[i].v*c[i].v+2*c[i].a*ss);else vv=0.000;if(vv>v){kkk=lower_bound(p+1,p+1+m,c[i].d)-p;be=kkk;en=m;while(be<=en){mid=(be+en)/2;ss=p[mid]-c[i].d;if(c[i].v*c[i].v+2*c[i].a*ss>=0)vv=sqrt(c[i].v*c[i].v+2*c[i].a*ss);else vv=0.000;
//						cout<<be<<" "<<en<<"\n";if(vv>v){ans=mid;be=mid+1;}else en=mid-1;}arr[++len].ll=kkk;arr[len].rr=ans;}}}}//camera
//	for(int i=1;i<=len;i++){
//		printf("%d %d\n",arr[i].ll,arr[i].rr); 
//	} sort(arr+1,arr+1+len,cmp);ans=1,now=arr[1].rr;for(int i=2;i<=len;i++){if(now<arr[i].ll){now=arr[i].rr;ans++;}	}return ans;
} 
signed main(){
//	freopen("detect.in","r",stdin);
//	freopen("detect.out","w",stdout);scanf("%d",&t);for(int tt=1;tt<=t;tt++){scanf("%d%d%d%d",&n,&m,&l,&v);flag=false;for(int i=1;i<=n;i++){scanf("%d%d%d",&c[i].d,&c[i].v,&c[i].a);if(c[i].a!=0) flag=true;}for(int i=1;i<=m;i++) scanf("%d",&p[i]);
//		work2();jilu=work1();if(jilu==0) printf("%d %d\n",jilu,m);else printf("%d %d\n",jilu,m-work2());}return 0;
}

S组T3

谔谔发现我赛场上思路正确但是数组开小。从此养成const好习惯。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832022.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CdnCheck工具

前言:CdnCheck工具实现,记录下我这边实现的几个点 参考文章:https://github.com/projectdiscovery/cdncheck 参考文章:https://github.com/YouChenJun/CheckCdn 参考文章:https://github.com/zu1k/nali 参考文章:https://github.com/u9sky/cdn-cname-domain/blob/main/cd…

考研打卡(14)

开局(14) 开始时间 2024-11-11 20:21:43 结束时间 2024-11-11 22:00:55今天考研数学的资料到了数据结构设一组初始记录关键字序列为(50,40,95,20,15,70,60,45), 则以增量d=4的一趟希尔排序结束后前4条记录关键字为_____(中国地质大学2017年) A 40,50,20,95 B 15,40,6…

说明与笔记导航(咕咕咕)

对使用这些笔记的同学想说的话,以及更新进度。为什么写这么多B东西? 其一呢是帮助我自己,边写笔记边梳理知识;其二呢是帮助各位义父义母考试成功。 更新进度与内容说明 11.11:本周工作日需突击学习python,有限体积N-S方程推导已写完。 目前进度:3009 建模:数值方法写完…

运用Windows API进行编程

目录运用Windows API进行编程实验环境窗口创建基本流程基本代码流程1、头文件和库2、全局变量和函数3、入口主函数4、注册窗口类函数5、创建和显示窗口函数6、窗口过程函数运行结果实验小结 运用Windows API进行编程 运行Windows应用程序在桌面显示Windows窗口。窗口内背景色为…

Windows API窗口绘图程序设计

目录Windows API窗口绘图程序设计1、窗口过程函数2、WM_LBUTTONDOWN:处理鼠标左键按下的消息鼠标消息相关知识点基本鼠标消息双击消息附带信息滚轮消息附带信息:3、WM_PAINT:处理窗口重绘的消息窗口绘图相关知识点窗口绘图基本流程开始绘画绘制封闭图形(能使用画刷填充的图形…

Matlab常用的图像属性

线型、标记和颜色 线型、标记和颜色,指定为包含符号的字符串或字符向量。符号可以按任意顺序显示。不需要同时指定所有三个特征(线型、标记和颜色)。例如,如果忽略线型,只指定标记,则绘图只显示标记,不显示线条。以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB …

jvm Java虚拟机栈——栈内存溢出

----------- ---------------------- -----------------

学习笔记(三十五):ArkTs-@ohos.util.ArrayList (线性容器ArrayList)

概述: 一种线性数据结构,底层基于数组实现一、导入import { ArrayList } from @kit.ArkTS; 二、定义let arrayList: ArrayList<string | number> = new ArrayList(); 三、常用函数 1、 add,在ArrayList尾部插入元素 2、insert,在长度范围内任意位置插入指定元素3、…

Scrum冲刺-第一篇

这个作业属于哪个课程 广工计院计科34班这个作业要求在哪里 作业要求这个作业的目标 小队各成员的任务确认和项目期望一、团队简介: 队名:edg.gdut 成员:姓名 学号罗祖文 3121004537郑志涛 3122004547陈恺麟 3122004515许凌铎 3122004540邓茗骏 3122004517李晓彬 3122004531…

(1) Pytorch深度学习—数值处理

(1)Pytorch——数值处理参考于李沐“动手学深度学习”系列以及网上各路大佬的博客资料,感谢大家的分享,如错改,如侵删。torch中的数值处理 数值处理是深度学习中极其重要的一部分,张量(tensor)是后续进行处理和计算的基本单位。张量表示一个由数值组成的数组,这个数组…

904. 水果成蓝

题目 自己第一次写的,结果超时了 class Solution { public:int totalFruit(vector<int> &fruits){int r = 1;int res = 1;while (r < fruits.size()){int l = r - 1;int n = 1; // 代表不同的种类个数int second = -1;while (n <= 2 && l >= 0){i…

Lift, Splat, Shoot, LSS代码详尽分析与解读

LSS是英伟达在ECCV2020上发表的文章《Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D》中提出的一个BEV感知算法,后续很多BEV感知算法如CaDDN、BEVDet都是在LSS的基础上实现的。本文将结合论文和代码详细解读LSS的原理。鸟…