当前位置: 首页 > news >正文

码蹄杯进阶

MC0373

简单题简单想:双指针模拟

注意:直接暴力模拟逐次相减肯定不行,得用乘除

n,m=map(int,input().split())q1=[]
for _ in range(n):q1.append(list(map(int,input().split())))q2=[]
for _ in range(m):q2.append(list(map(int,input().split())))#简单题简单想:双指针模拟
from math import ceil
l1=l2=0
while l1<n and l2<m:n1=ceil(q1[l1][0]/q2[l2][1])n2=ceil(q2[l2][0]/q1[l1][1])#直接暴力模拟逐次相减肯定不行,得用乘除if n1==n2:l1+=1l2+=1elif n1<n2:q2[l2][0]-=n1*q1[l1][1]#更改前先使用l1+=1else:q1[l1][0]-=n2*q2[l2][1]l2+=1if l1==n and l2==m:print('Fine')
elif l1<n:print('Win')
else:print('QAQ')

MC0356

全1 + 最大值

注意:strip得赋值


def main():#code heres=[]n=int(input())for _ in range(n):s.append(input())ans=0l1=0for i in s:L0=len(i)i=i.lstrip('1')# strip不会改变原值!L1=len(i)i=i.rstrip('1')L2=len(i)#print(i,L0-L1,L1-L2,i2)if L1==0:l1+=L0 # 所有为1的都可以串结果上else:ans=max(ans,L0-L1,L1-L2)print(ans+l1)passif __name__ == '__main__':main();

MC0359

找规律:

子序列等差增加数量 s[l][r] = s[l][r-1] + K(当前等差数列长度)

MC0355


def main():# set后第二小的n=int(input())a=list(map(int,input().split()))sa=set(a)la=list(sa)la.sort(reverse=False)print(la[1])passif __name__ == '__main__':main();

MT2001

幸运的3

3的倍数的特征是 各位数相加后和为3的倍数,那么可以通过存储各个数对3取余后的结果然后实现配对(数组的 in 和 remove 操作)

n=int(input())a=list(map(int,input().split()))n=[]def cnt(k):ans=0while k:ans+=k%10k//=10return ansfor i in a:n.append(cnt(i)%3)vis=[]res=0
for i in n:if (3-i) in vis:res+=1vis.remove(3-i)elif i==0 and 0 in vis:res+=1vis.remove(0)else:vis.append(i)print(res)

MT2002

买马

文字理解题目:找一个最小数使得输入数对其取模后都不一样

本来以为暴力枚举过不了的,但是过了。。。

n=int(input())nums=[]
ma=0
for i in range(n):now=int(input())ma=max(ma,now)nums.append(now)i=1
while True:flag=1vis=[0]*mafor k in nums:if vis[k%i]:flag=0breakelse:vis[k%i]=1if flag:print(i)breaki+=1

MT2003

三角数

还是暴力枚举//

枚举前分析了一下数据范围:

ans*2 = a2 + a + b2 + b <= (a+b)**2

所以一定可以通过取根来缩小数据范围

n=int(input())import mathn2=2*nsu=int(math.sqrt(n2))flag=0for i in range(1,su): #正整数if flag:breakfor j in range(su-1,0,-1):if i**2+i+j**2+j==n2:print('YES')flag=1breakif not flag:print('NO')

MT2004

题意:小于输入的最大回文数

且注意看题目:输入可能有前导零

前面的肯定不能动,只能动后面的数位

2014

#简化问题:有多少个子序列:用一个个数组存储n=int(input())h=list(map(int,input().split()))l=[]for i in h:flag=0for j in range(len(l)):if l[j][0]-1==i:l[j]=[i]+l[j]flag=1breakif not flag:l.append([i])#print(l)
print(len(l))

2015

注意是第一个不被覆盖的点,而不是能到达的最远

且注意线段编号

n, d, m, l = map(int, input().split())pos = 0
while True:# 找对应的线段编号k = pos // m + 1if k > n:  # 已经超过所有线段print(pos)break# 当前线段覆盖范围left = (k-1)*mright = left + lif left <= pos <= right:pos += delse:print(pos)break

0252

就是找四角,但是注意是先输出行数还是列数

N, M = map(int, input().split())
T = int(input())ma = [list(map(int, input().split())) for _ in range(N)]
av = [[0]*M for _ in range(N)]for i in range(N):for j in range(M):if ma[i][j] <= T:av[i][j] = 1# 初始化边界
top = N
bottom = -1
left = M
right = -1for i in range(N):for j in range(M):if av[i][j]:top = min(top, i)bottom = max(bottom, i)left = min(left, j)right = max(right, j)# 输出最小子矩阵的行数和列数
rows = bottom - top + 1
cols = right - left + 1
print(rows)
print(cols)

0251

看到就觉得是完全背包,但是其实根本不用!!

# 看到就觉得是完全背包,但是其实根本不用!!n=int(input())cnt=0
i=0
r=[13,7,3,1]
while n:d=n//r[i]#i+=1cnt+=dn=n%r[i]i+=1print(cnt)

n,k=map(int,input().split())
MOD=(10**k)# 高精度乘法:逐位,可能有进位:自定义函数
# 基于个位的倍数,比如3,那么周期为4,那么cnt+=4'''
# 补0的不一定不行
if n<MOD//10:print(-1)exit()
'''n=str(n%MOD)n.kuai=n
m=n
kuai*=(n**2)
kuai%=MOD
m*=n
m%=MODcnt=1while kuai!=m:kuai*=(n**2)m*=nkuai%=MODm%=MODcnt+=1print(cnt)

0249

简单题简单做

N=int(input())l=list(map(int,input().split()))n=int(input())# 排序:信息利用率for i in range(1,N+1):l[i-1]=[l[i-1],i]
#print(l)l=sorted(l,key=lambda x:(x[0],-x[1]),reverse=True)for i in range(n):print(l[i][1],end=' ')

0248

s=input()L=len(s)if L<=6:print('False')exit()flag1=[0,0,0]flag2=0for i in s:if '1'<=i<='9':flag1[2]=1if flag2:print('False')exit()flag2=1else:flag2=0if 'a'<=i<='z':flag1[0]=1elif 'A'<=i<='Z':flag1[1]=1
if sum(flag1)==3:print('True')
else:print('False')

0247

注意是26进制!!

s=input()L=len(s)l=0
r=0def checktype(k):if '0'<=k<='9':return 0else:return 1ans=''# 轮转:26进制!while r<L:if checktype(s[l])!=checktype(s[r]):if checktype(s[l])==1:cnt=0for i in range(r-1,l-1,-1):cnt+=26**(r-i-1)*(ord(s[i])-97)ans+=str(cnt)else:add=''cnt=int(s[l:r])while cnt:add+=chr(cnt%26+97)cnt//=26ans+=add[::-1]l=relse:if r==l:if s[l]=='0':ans+='a'l+=1elif s[l]=='a':ans+='0'l+=1r+=1if checktype(s[l])==1:cnt=0for i in range(r-1,l-1,-1):cnt+=26**(r-i-1)*(ord(s[i])-97)ans+=str(cnt)
else:add=''cnt=int(s[l:r])while cnt:add+=chr(cnt%26+97)cnt//=26ans+=add[::-1]
print(ans)

http://www.dtcms.com/a/344637.html

相关文章:

  • 笔试——Day46
  • 基于SpringBoot+Vue框架的高校论坛系统 博客论坛系统 论坛小程序
  • 企业版Idea 无快捷键的启动方式
  • 和AI Agent一起读论文——A SURVEY OF S ELF EVOLVING A GENTS(五)
  • 如何监控和管理微服务之间的调用关系
  • 微信开发者工具:更改 AppID 失败
  • Unreal Engine Class System
  • 滑动窗口+子串+普通数组算法
  • Spring AI调用本地大模型实战
  • 【LINUX】CentOS7在VMware15中,从命令行界面切换到图形界面的异常汇总
  • Day10 Go语言深入学习(2)
  • 零成本 Redis 实战:用Amazon免费套餐练手 + 缓存优化
  • skywalking-agent与logback-spring.xml中的traceId自动关联的原理
  • 使用C#的 PdfDocument 实现 PDF 页眉页脚的编辑
  • 我用Photoshop Firefly+Blender,拯救被环境毁掉的人像大片
  • Blender模型动画导入到UE5
  • uniappx新增的几个api
  • AI + 教育:个性化学习如何落地?教师角色转变与技术伦理的双重考验
  • 文字提取技术让文档实现数字化效率翻倍-文字识别接口
  • Kubernetes概念:ETCD 的本质与备份恢复实践
  • 永磁同步电机控制算法-反馈线性化滑模直接转矩控制
  • 智慧工厂烟雾检测:全场景覆盖与精准防控
  • 全运会倒计时80天,国鑫服务器如何扛起粤港澳的“数字火炬”?
  • Roadmap:一年实现安全漏洞防治自动化
  • MCP 与 Function Calling 打开真实世界的两种“母体”方式
  • 软件产品确认测试:系统长期运行稳定性(72 小时)测试
  • 集成算法学习笔记
  • Unreal Engine UStaticMeshComponent
  • 线性回归:机器学习中的基础建模工具
  • LeetCode100-76最小覆盖子串