首页 > 其他分享 >蓝桥杯真题代码记录(最优清零方案

蓝桥杯真题代码记录(最优清零方案

时间:2024-04-09 23:59:47浏览次数:18  
标签:min 代码 真题 整数 蓝桥 result new 清零

目录

1. 题目:

在这里插入图片描述

给定一个长度为 N 的数列 41,42,…,AN 。现在小蓝想通过若干次操作将 这个数列中每个数字清零。
每次操作小蓝可以选择以下两种之一:
1.选择一个大于0的整数,将它减去1;
2.选择连续 区 个大于 0 的整数,将它们各减去1。
小蓝最少经过几次操作可以将整个数列清零?

输入格式

输入第一行包含两个整数 N 和 K 。
第二行包含 N 个整数 A1,A2,··,AN 。

输出格式

输出一个整数表示答案。

样例输入

4 2
1 2 3 4

样例输出

6

2. 我的代码:

import os
import sys

# 贪心算法

N, K = map(int, input().split(" "))
l = list(map(int, input().split(" ")))

result = 0

# 指针记录第一个>0的点
n_p = 0

while n_p <= len(l) - K:
    # 遍历整个l
    while l[n_p] <= 0:  # 跟踪到第一个大于0的点
        n_p += 1
        if n_p > len(l) - K:
            break
    if n_p > len(l) - K:
        break

    # 先使用第二种减法(循环减去 K 个 1)
    new_n_p = N
    min_n = 10000000000000

    for min_p in range(n_p + K - 1, n_p - 1, -1):
        if l[min_p] < min_n:
            new_n_p = min_p
            min_n = l[min_p]

    if min_n != 0:  # 第二种减法
        for i in range(n_p, n_p + K):
            l[i] -= min_n

    result += min_n

    # 第一种减法
    result += sum(l[n_p: new_n_p + 1])
    n_p = new_n_p

result += sum(l[n_p:])

print(result)

温馨提示:min_n = 10000000000000一定要够大,不要吝啬,我在测试的时候总是有一个是答案错误,弄半天不知道为什么,结果是初始的不够大。

小结:

关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可:

标签:min,代码,真题,整数,蓝桥,result,new,清零
From: https://blog.csdn.net/m0_72249799/article/details/137572521

相关文章

  • 第十一届蓝桥杯C/C++组C组决赛之思维风暴 快速解题
    十五届蓝桥杯即将开赛,十一届的蓝桥杯国赛的一些巧妙解法。美丽的2 题目描述本题为填空题,只需要算出结果后,在代码中使用输出语包将所填结果输出即可。小蓝特别喜欢2,今年是公元2020年,他特别高兴。他很好奇,在公元1年到公元2020年(包含)中,有多少个年份的数位中包含数字2?......
  • Acwing2024蓝桥杯DFS
    模板:AcWing826.单链表利用数组创建单链表:#include<iostream>usingnamespacestd;constintN=100005;inthead,value[N],nextt[N],id;voidInit(){head=-1,id=0;}voidHead_Insert_x(intx){value[id]=x;nextt[id]=head;head=id++;}voidD......
  • 杨辉三角形(蓝桥杯,acwing)
    题目描述:下面的图形是著名的杨辉三角形:如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列:1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,...给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?输入格式:输入一个整数 N。输出格式:输......
  • 蓝桥杯-公平抽签
    0.题目题目描述小A的学校,蓝桥杯的参赛名额非常有限,只有m个名额,但是共有n个人报名。作为老师非常苦恼,他不知道该让谁去,他在寻求一个绝对公平的方式。于是他准备让大家抽签决定,即m个签是去,剩下的是不去。小A非常想弄明白最后的抽签结果会有多少种不同到情况,请你设计一......
  • 蓝桥杯 强者挑战赛9
    标算无理数位数查询LL没开全,WA想不太清楚细节,写了半个多小时。。。预处理而不是现算会好写一点赛时做法先确定第\(n\)位所属的数的位数,再确定该位数中第\(k\)大的数标算设\(g(x)\)表示\(m\)进制下\(1\simx\)的位数和,二分第\(n\)位所属的数贝贝的集合先不......
  • 蓝桥杯之初等数论
    在蓝桥杯竞赛中,初等数论部分涉及多个关键知识点。以下是对这些知识点的详细列出、基本概念解释、应用实例以及解题策略和步骤的说明:1.质数与合数基本概念:质数(素数):大于1的自然数中,只能被1和它本身整除的数。合数:除了1和它本身以外还有其他因数的自然数。应用实例:题目:......
  • 蓝桥杯-外卖店优先级
     代码及其解析#include<bits/stdc++.h>usingnamespacestd;constintN=100010;intorder[N];//order[id]第id号店上一次的订单,记录的是时间intprior[N];//prior[id]第id号店的优先级intflag[N];//flag[id]第id号店在不在优先缓存中structnode{......
  • 蓝桥杯-【二分】求阶乘
     思路:对于有几个0,10一定会是5的整数倍,2的因子数一定比5的多,所以只要算5的个数即可, 30%,每个n都去算#include<bits/stdc++.h>usingnamespacestd;#definelllonglongllcheck(lln){//计算n!末尾有多少个0llcnt=0;while(n)cnt+=......
  • P8625 [蓝桥杯 2015 省 B] 生命之树
    题目:链接:https://www.luogu.com.cn/problem/P8625基本思路:1.使用dp[N]记录i节点的当前最大值2.使用vectornex[N]记录图3.使用vis[N]防回退如果该节点没有子节点,那么这个点的最大值就记录为当前的值:val如果该节点有子节点,那么先遍历子节点,然后+res并记录由于使用了vis,那么......
  • 蓝桥杯历年试题 砝码称重
    看到这个题,自然而然想到用集合set来做,因为set本身就有去重的效果。#include<bits/stdc++.h>usingnamespacestd;intN;intw;set<int>s;intmain(){ cin>>N; for(inti=1;i<=N;i++) { cin>>w; vector<int>v(s.begin(),s.end()); //这里需要用v......