首页 > 编程语言 >第十二届蓝桥杯编程题

第十二届蓝桥杯编程题

时间:2024-03-11 11:34:55浏览次数:30  
标签:cnt 试题 第十二届 编程 蓝桥 range input 节点 dp

目录

试题F:时间显示

1秒=1000毫秒
1分=60秒=100060=60000毫秒
1小时=60分=60000
60=3600000毫秒
1天=24小时=360000024=86400000毫秒
1年=86400000
365=31536000000毫秒

题解

#把当前时间依次除以年,日,时,分,秒
n=int(input())#获取输入
n=n%31536000000#先看看多少年,只保留余数
n=n%86400000#余上天,只保留余数
h=n//3600000#除以小时,存在h中
n=n%3600000#拿到除去小时后的余数
m=n//60000#除以分,存在m中
n=n%60000#拿到除去分后的余数
s=n//1000#除以秒,存在s中
print('{:02d}:{:02d}:{:02d}'.format(h,m,s))#: 表示格式化字符串的开始。0 表示使用零进行填充。2 表示字段的宽度为2个字符。d 表示输出的值是一个十进制整数。

试题G:杨辉三角形

法一、暴力

  • 思路:直接用一个二维数组把杨辉三角存进去,遍历数组,不是目标值计数器++,找到目标值输出计数值
n = 1000#两个for循环10^6,题目是10^9,10000时爆了
a = [[0] * (n+1) for _ in range(n+1)]#初始化二维数组
a[1][1] = 1#第一个元素
for i in range(2, n+1):  # 预处理
    for j in range(1, i+1):
        a[i][j] = a[i - 1][j] + a[i - 1][j - 1]#从第二行开始,用定义填入每一个值
x = int(input())#获取读入的数
cnt = 0
for i in range(1, n+1):  # 枚举
    for j in range(1, i+1):
        cnt += 1
        if a[i][j] == x:
            print(cnt)
            exti(0)#终止程序
  • 49分

法二、公式

n=int(input())#获取输入
num=n*(2+(n-1))//2+2#等差数列求和公式:Sn=(n/2)*(2a1+(n-1)d),其中a1=1,d=1,num表示当前元素的位置,第一行一个第二行2个,行是一个等差数列,处理了行还要加上当前行前面的元素,经过观察大部分元素在第二个位置,+2可以包含的结果多一些
# num=n*(n+1)//2+2#同样的等差数列
print(num)
  • 45分

法三、结合上者

n = 1000
a = [[0] * (n+1) for _ in range(n+1)]#初始化二维数组
x = int(input())#获取读入的数
# 如果 x 大于 等差数列前 n 项的和,则直接使用等差数列求和公式计算结果并打印输出
if x > n * (n + 1) // 2:
    result = x * (x + 1) // 2 + 2
    print(result)
    exit(0)
# 构建杨辉三角形
a[1][1] = 1
for i in range(2, n+1):
    for j in range(1, i+1):
        a[i][j] = a[i-1][j] + a[i-1][j-1]
cnt = 0
# 在杨辉三角形中搜索目标数 x
for i in range(1, n+1):
    for j in range(1, i+1):
        cnt += 1
        if a[i][j] == x:
            # 找到目标数 x,打印计数器 cnt 的值并退出程序
            print(cnt)
            exit(0)
  • 82分

试题H:左孩子右兄弟

题解:树型dp

def dfs(u):
    cnt = 0  # 儿子数量
    mx = 0  # 最大贡献值
    for i in g[u]:  # 遍历节点 u 的儿子节点
        dfs(i)  # 递归调用深度优先搜索
        cnt += 1  # 统计儿子数量
        mx = max(mx, dp[i])  # 更新最大贡献值
    dp[u] = mx + cnt  # 计算当前节点的贡献值,即最大贡献值加上儿子数量

n = int(input())  # 输入节点数目
dp = [0] * (n + 1)  # 初始化 dp 列表
g = [[] for _ in range(n + 1)]  # 初始化图 g

for i in range(2, n + 1):
    tmp = int(input())
    g[tmp].append(i)  # 将节点 i 添加到父节点 tmp 的儿子列表中

dfs(1)  # 从根节点 1 开始进行深度优先搜索

print(dp[1])  # 输出根节点的贡献值

试题I:异或数列

法一、博弈论

试题J:括号序列

法一、动态规划

标签:cnt,试题,第十二届,编程,蓝桥,range,input,节点,dp
From: https://www.cnblogs.com/lushuang55/p/18064184

相关文章

  • 【蓝桥-大试牛刀7-最短路专场】题解
    最短路1floyd说白了就是个暴力,用三层循环枚举所有路径,然后留下权值最小的一条大概就长这个样for(中转点k) for(起点i) for(终点j) d[i][j]=min(d[i][j],d[i][k]+d[k][j]);注意这个题的数据有重边,输入的时候留下最小的,这样就做完了intd[N][N];voidsolve(){......
  • 蓝桥杯算法集训 - Week1:二分、前缀和、差分算法
    蓝桥杯算法集训-Week1本系列随笔用于整理AcWing题单——《蓝桥杯集训·每日一题2024》的系列题型及其对应的算法模板。一、二分查找二分算法原理复习参考:二分查找-Hello算法Ⅰ、二分模板boolcheck(intx){/*...*/}//检查x是否满足某种性质//区间[l,r]被划分......
  • 蓝桥杯备赛第一天 分糖果
    #include<bits/stdc++.h>usingnamespacestd;intmain(){//请在此输入您的代码intn;cin>>n;ints=0;inta[101];//getchar();for(inti=0;i<n;i++){cin>>a[i];}while(1){intc[101];for(inti=0;i<n;i++){......
  • P8599 [蓝桥杯 2013 省 B] 带分数
    题目知识点:全排列加指针划分数组。链接:https://www.luogu.com.cn/problem/P8599#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<sstream>#include<string>#include<string.h>#include<iomanip>#......
  • C语言编程题T1
    ****给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234,2345,3456,,其中出现次数最多的数字是3和4,均出现了3次。******要求:输入形式:在第1行中给出一个正整数n(n<=1000),在第2行中给出N个不超过整形范围的正整数,数字间以‘’(空格)分隔;输出形式......
  • 网络编程
    一、概述计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息共享硬件、软件、数据信息等资源。网络编程的目的:直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯......
  • [NOIP2017 提高组] 小凯的疑惑 / [蓝桥杯 2013 省] 买不到的数目
    这肯定是学证明了,看这篇文章补充一下细节首先,\(m\)的范围应该是\([0,b-1]\)然后,当\(m\)取不同值的时候,\(ma\)%\(b\)一定为不同值(这个性质确实有点奇特,可以记下来)反证,如果\(m_1a\equivm_2a\:(mod\:b)\)且\(0≤m_1<m_2≤b-1\),那么就有\(b|(m_2-m_1)a\),题目给出了\(a,b\)互质,......
  • 每天一道蓝桥杯 Day3 移动字母
     题意: 思考过程:首先观察这道题的数据范围不是很大,一共才6个位置,并且每个位置只出现一次。那么不考虑合法,只算总状态的话就是7*6*5*4*3*2*1=720状态数很少,启发我们可以用搜索!那么搜索是用dfs还是bfs?bfs有一个特性:从s出发,第一次搜索到状态t时所用的步数,肯定是所需的最小......
  • 蓝桥杯-地宫取宝
    这是一个dp题,可以用4维数据来表示所有的状态。但是有一个需要注意的点,一般来说,对于每个坐标,有拿跟不拿两种情况,如果没有拿任务宝物的状态表示为0,那么拿取了价值为0的宝物时,要以另一种情况来跟没拿区分。处理的方法就是将所有宝物的价格+1。longlongdp[55][55][15][15];const......
  • 基于EXO λ驱动的可编程分子信号传输架构和DNA电路中的反应物再生策略四节点DNA电路与
    为了解决过程中信号衰减的问题,利用独特的环形空间拓扑结构和EXOλ的水解特性,实现了EDRR策略EXOλ的特性如图1a所示,当EXOλ水解底物,锥形通道的宽端,可以从5'的钝端或凹端嵌入DNA链,从而连续和快速水解,在5'端有磷酸修饰的DNA链,而互补链则从锥形中穿出通道。它的环形空间拓扑结......