版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年算法精英大赛初赛测试题及答案项目选择问题。某公司有n个待选项目,每个项目有开始时间s_i、结束时间e_i(s_i<e_i)和收益v_i。若两个项目时间重叠(即一个的开始时间小于另一个的结束时间)则无法同时选择。请选择若干不重叠的项目,使得总收益最大。输入格式:第一行包含一个整数n(1≤n≤200000)。接下来n行,每行包含三个整数s_i、e_i、v_i(1≤s_i<e_i≤1e9,1≤v_i≤1e5)。输出格式:一个整数,表示可以获得的最大收益。样例输入:4135256474683样例输出:9解答思路:将项目按结束时间升序排序,定义dp[i]为前i个项目的最大收益。对于第i个项目,若选择则需找到最大的j使得e_j≤s_i,此时dp[i]=max(dp[i-1],dp[j]+v_i)。通过二分查找快速定位j。代码实现(Python):```pythonimportbisectn=int(input())projects=[]for_inrange(n):s,e,v=map(int,input().split())projects.append((e,s,v))projects.sort()e_list=[p[0]forpinprojects]s_list=[p[1]forpinprojects]v_list=[p[2]forpinprojects]dp=[0](n+1)foriinrange(1,n+1):s=s_list[i-1]v=v_list[i-1]j=bisect.bisect_right(e_list,s,0,i-1)1dp[i]=max(dp[i-1],dp[j+1]+v)print(dp[n])```运输时间计算。某物流网络由n个节点和m条有向边组成,每条边连接u到v,运输需要l时间,且只能在时间窗口[a,b]内开始运输(即出发时间t需满足a≤t≤b)。从节点1出发,求到达节点n的最早时间。若无法到达,输出-1。输入格式:第一行包含两个整数n和m(2≤n≤1e5,1≤m≤2e5)。接下来m行,每行包含四个整数u,v,l,a,b(1≤u,v≤n,1≤l≤1e5,0≤a≤b≤1e9)。输出格式:一个整数,表示最早到达时间;无法到达则输出-1。样例输入:331220523336137010样例输出:6解答思路:使用Dijkstra算法变种,优先队列存储(到达时间,节点)。维护每个节点的最早到达时间,遍历出边时计算可行出发时间,更新到达时间。代码实现(Python):```pythonimportheapqn,m=map(int,input().split())adj=[[]for_inrange(n+1)]for_inrange(m):u,v,l,a,b=map(int,input().split())adj[u].append((v,l,a,b))INF=float('inf')earliest=[INF](n+1)earliest[1]=0heap=[]heapq.heappush(heap,(0,1))whileheap:current_time,u=heapq.heappop(heap)ifu==n:print(current_time)exit()ifcurrent_time>earliest[u]:continueforv,l,a,binadj[u]:t_start=max(current_time,a)ift_start>b:continuet_arrive=t_start+lift_arrive<earliest[v]:earliest[v]=t_arriveheapq.heappush(heap,(t_arrive,v))print(-1ifearliest[n]==INFelseearliest[n])```特殊回文子串计数。给定字符串s,统计满足以下条件的回文子串数目:子串长度为奇数;子串中每个字符的出现次数均为奇数。输入格式:一行字符串s(长度≤1e5,仅含小写字母)。输出格式:一个整数,表示符合条件的子串数目。样例输入:"aaa"样例输出:4解答思路:中心扩展法遍历每个回文中心,维护字符出现次数的奇偶性位掩码。扩展时检查掩码中1的个数是否为奇数(字符种类数为奇数)。代码实现(Python):```pythons=input().strip()n=len(s)count=0forcenterinrange(n):mask=0c=s[center]mask^=1<<(ord(c)ord('a'))ifbin(mask).bit_count()%2==1:count+=1radius=1whilecenterradius>=0andcenter+radius<n:ifs[centerradius]!=s[center+radius]:breakleft_char=s[centerradius]right_char=s[center+radius]mask^=1<<(ord(left_char)ord('a'))mask^=1<<(ord(right_char)ord('a'))ifbin(mask).bit_count()%2==1:count+=1radius+=1print(count)```大数组合数取模。给定n、k和质数p,计算组合数C(n,k)modp,其中n可以是1e18,k≤1e5,p≤1e9。输入格式:一行三个整数n,k,p(k≤1e5,p是质数)。输出格式:一个整数,表示C(n,k)modp的值;若k>n,输出0。样例输入:1037样例输出:1解答思路:利用Lucas定理,将n和k分解为p进制数,逐位计算组合数并相乘取模。k较小时直接计算分子分母逆元。代码实现(Python):```pythondefcomb_mod(n,k,p):ifk<0ork>n:return0ifk==0ork==n:return1%pnumerator=1foriinrange(k):numerator=numerator(ni)%pdenominator=1foriinrange(1,k+1):denominator=denominatori%pinv_denominator=pow(denominator,p-2,p)returnnumeratorinv_denominator%pdeflucas(n,k,p):ifk==0:return1%pni=n%pki=k%pifki>ni:return0return(lucas(n//p,k//p,p)comb_mod(ni,ki,p))%pn,k,p=map(int,input().split())print(lucas(n,k,p))```区间异或和查询。给定数组a,支持区间异或操作和区间异或和查询。输入格式:第一行包含两个整数n和q(1≤n,q≤1e5)。第二行包含n个整数a_1到a_n。接下来q行,每行表示一个操作:类型1为区间异或,类型2为区间查询。输出格式:对于每个类型2的操作,输出查询结果。样例输入:53123452151131215样例输出:1514解答思路:线段树维护区间异或和,懒标记记录待异或值。根据区间长度奇偶性更新异或和,下传标记时处理子节点。代码实现(Python):```pythonimportsyssys.setrecursionlimit(1<<25)classSegmentTree:def__init__(self,data):self.n=len(data)self.size=1whileself.size<self.n:self.size<<=1self.xor_sum=[0](2self.size)self.lazy=[0](2self.size)foriinrange(self.n):self.xor_sum[self.size+i]=data[i]foriinrange(self.size1,0,-1):self.xor_sum[i]=self.xor_sum[2i]^self.xor_sum[2i+1]defpush(self,node,l,r):ifself.lazy[node]!=0andnode<self.size:mid=(l+r)//2left_len=midl+1right_len=rmidifleft_len%2==1:self.xor_sum[2node]^=self.lazy[node]self.lazy[2node]^=self.lazy[node]ifright_len%2==1:self.xor_sum[2node+1]^=self.lazy[node]self.lazy[2node+1]^=self.lazy[node]self.lazy[node]=0defupdate_range(self,a,b,x,node=1,l=0,r=None):ifrisNone:r=self.size1ifa>rorb<l:returnifa<=landr<=b:length=rl+1iflength%2==1:self.xor_sum[node]^=xself.lazy[node]^=xreturnself.push(node,l,r)mid=(l+r)//2self.update_range(a,b,x,2node,l,mid)self.update_range(a,b,x,2node+1,mid+1,r)self.xor_sum[node]=self.xor_sum[2node]^self.xor_sum[2node+1]defquery_range(self,a,b,node=1,l=0,r=None):ifrisNone:r=self.size1ifa>rorb<l:return0ifa<=landr<=b:returnself.xor_sum[node]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年金融风险管理师考试大纲及样题
- 2026年化学生产安全法规考试题集及答案解析
- 2026年职业厨师等级认证中级实操技能考核模拟题
- 2026年建筑工程项目经理专业能力测试题
- 2026年电气工程师中级笔试模拟题电力工程与电力系统
- 2026年医学考研生理学神经电信号传导机制知识点选择题
- 2026年投资分析与策略中级预测模拟题
- 支持新兴产业发展的政策措施框架
- 光疗治疗新生儿黄疸的临床价值
- 2026年民间艺术作品设计考核试题及答案
- 2026中考英语时文热点:跨学科融合阅读 练习(含解析)
- 《筑牢安全防线 欢度平安寒假》2026年寒假安全教育主题班会课件
- (2025年)吉林事业单位考试真题附答案
- 黄斑变性教学课件
- 《患者身份识别管理标准》测试题及答案
- 2026年微型泵行业报告
- 设备双主人管理办法
- GJB5714A-2023外购产品质量监督要求
- 湖北省国土资源研究院-湖北省2025年度城市地价动态监测报告
- 测绘成果保密自查报告
- 丁华野教授:下卷:提示为叶状肿瘤的形态学改变
评论
0/150
提交评论