蓝桥杯刷题DAY3:Horner 法则 前缀和+差分数组 贪心

news/2025/2/6 3:58:10/

所谓刷题,最重要的就是细心

📌 题目描述

X 进制 中,每一数位的进制不固定。例如:

  • 最低位 采用 2 进制
  • 第二位 采用 10 进制
  • 第三位 采用 8 进制

X 进制数 321 的十进制值为:

3×(10×8)+2×8+1=65

现在,给定两个以 X 进制表示的整数 A 和 B,它们的每一数位的进制上限为 N 进制,下限为 2 进制,你需要计算:

A−B

十进制下的最小可能值,并输出 模 10^9+7 后的结果


📌 输入格式

  • 第一行:一个正整数 N(表示最高进制)。
  • 第二行:一个正整数 Ma(表示 X 进制数 A 的位数)。
  • 第三行Ma 个用空格分隔的整数(表示 A 的各个位,从 高位到低位)。
  • 第四行:一个正整数 Mb(表示 X 进制数 B 的位数)。
  • 第五行Mb 个用空格分隔的整数(表示 B 的各个位,从 高位到低位)。

📌 输出格式

  • 输出 一个整数,表示 A - B 的最小可能值,转换为十进制后模 10^9+7 的结果。

📌 输入输出示例

输入

11 3 10 4 0 3 1 2 0

输出

94


📌 题目说明

  1. 你需要 找到最小的进制分配方案,使得 A - B 最小
    • 每一位的进制必须 ≥ max(1, A[i], B[i]) + 1(确保 A 和 B 的每一位都是合法的)。
    • 每一位的进制不能小于 2(最小是二进制)。
    • 最优解 是选择 尽可能小的进制,这样计算出的 A 和 B 的十进制值最小,从而 A - B 也最小。
  2. 进制计算方式
    • 例如,若 A = [10, 4, 0]B = [1, 2, 0]
    • 进制可以选择:d = [11, 5, 2]
    • 计算: A10=10×(5×2)+4×2+0=108  B10​=1×(5×2)+2×2+0=14
    • 最终 A - B = 108 - 14 = 94

📌 约束条件

  • 对于 30% 的数据
    • N≤10
    • 1≤Ma,Mb≤8
  • 对于 100% 的数据
    • 2≤N≤1000
    • 1≤Ma,Mb≤100000
    • 保证 A ≥ B
  • 运行限制
    • C++ / C / Java / Python3
    • 最大运行时间:1s
    • 最大运行内存:256MB
import os
import sys# 请在此输入您的代码if __name__=="__main__":mod = 1000000007N=int(input())Ma=int(input())A= list(map(int,input().split()))Mb=int(input())B= list(map(int,input().split()))for i in range(Ma-Mb):B.insert(0,0)result=0for i in range(Ma):if i==Ma-1:result= (1)*(result+A[i]-B[i])%modelse:result= (max(1,A[i+1],B[i+1])+1)*(result+A[i]-B[i])%modprint(result%mod)

字符迁移【算法赛】

题目描述
小蓝最近获得了一个长度为 N 的字符串 S,他对它爱不释手。
小桥为了考验小蓝对字符串的处理能力,决定给他提出一个挑战:她会进行 Q 次操作,每次操作给定三个整数 l, r, k,将 S 的第 l 个字符到第 r 个字符都循环右移 k 次。

字符右移的含义为:按照字母表顺序进行移动,例如:

'a' 右移 1 次变为 'b';
'b' 右移 2 次变为 'd';
特别地,'z' 右移 1 次变回 'a'。
操作完成后,请输出字符串 S 的最终结果。

输入格式
第一行输入两个整数 N, Q
(1 ≤ N, Q ≤ 2×10<sup>5</sup>),表示字符串 S 的长度以及操作次数。

第二行输入一个字符串 S,保证 S 只包含小写字母。

接下来 Q 行,每行输入三个整数 l, r, k
(1 ≤ l ≤ r ≤ N, 1 ≤ k ≤ 10<sup>9</sup>),表示一次操作:将 S 中第 l 个字符到第 r 个字符循环右移 k 次。

输出格式
输出一个字符串,表示操作完成后的 S。

输入样例
5 3
abcde
1 5 3
1 2 4
2 5 3
输出样例
hlijk
运行限制
Python3:最大运行时间 3s,最大运行内存 256M

import os
import sys# 请在此输入您的代码if __name__=="__main__":N,Q=map(int,input().split())S = list(input())n=len(S)d=[0]*(n+1)s=[0]*nfor i in range(Q):l,r,k=map(int,input().split())d[l-1]+=kd[r]-=kfor i in range(n):if i==0:s[i]=d[i]else:s[i]=s[i-1]+d[i]for i in range(n):S[i]=  chr(( s[i] +( ord(S[i]) - ord('a') ))%26 + ord('a') )print("".join(S))

食堂 

题目描述

S 学校里一共有
a2​ 个两人寝、
a3​ 个三人寝、
a4​ 个四人寝。食堂里有
b4 个四人桌和
b6​ 个六人桌。学校想要安排学生们在食堂用餐,并且满足每个寝室里的同学都在同一桌就坐。请问这个食堂最多同时满足多少同学用餐?


输入格式

采用多组数据输入。
输入共 q+1 行:

  • 第一行为一个正整数 q,表示数据组数。

  • 后面 q 行,每行五个非负整数 a2,a3,a4,b4,b6,表示一组数据。


输出格式

输出共 q 行,每行一个整数,表示对应输入数据的答案。


样例输入

2  
3 0 1 0 1  
0 2 2 1 1  

样例输出

6  
10  

样例说明

  1. 第一组数据

    • 仅有一个六人桌,最多安排三个两人寝的同学就餐。

    • 答案为 2+2+2=6。

  2. 第二组数据

    • 用一个六人桌安排两个三人寝的同学,用一个四人桌安排一个四人寝的同学。

    • 答案为 (3+3)+4=10。


评测用例规模与约定

  1. 20% 的评测用例

    • 保证 a2+a3+a4≤8。

  2. 100% 的评测用例

    • 保证 q≤100,b4+b6≤a2+a3+a4≤100。


运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java3s512M
Python310s512M

import os
import sys# 请在此输入您的代码if __name__=="__main__":q= int(input())for i in range(q):a2,a3,a4,b4,b6=map(int,input().split())total=0tmp=min(a4,b4)total+=tmp*4a4-=tmpb4-=tmptmp=min(a2,a4,b6)total+=tmp*6a2-=tmpa4-=tmpb6-=tmptmp=min(a3//2,b6)total+=tmp*6a3-=tmp*2b6-=tmptmp=min(a2//2,b4)total+=tmp*4a2-=tmp*2b4-=tmptmp=min(a2//3,b6)total+=tmp*6a2-=tmp*3b6-=tmptmp=min(a2,a3,b6)total+=tmp*5a2-=tmpa3-=tmpb6-=tmptmp=min(a4,b6)total+=tmp*4a4-=tmpb6-=tmptmp=min(a2//2,b6)total+=tmp*4a2-=tmp*2b6-=tmptmp=min(a3,b4)total+=tmp*3a3-=tmpb4-=tmptmp=min(a3,b6)total+=tmp*3a3-=tmpb6-=tmptmp=min(a2,b4)total+=tmp*2a2-=tmpb4-=tmptmp=min(a2,b6)total+=tmp*2a2-=tmpb6-=tmpprint(total)


http://www.ppmy.cn/news/1569695.html

相关文章

深入剖析Electron的原理

Electron是一个强大的跨平台桌面应用开发框架&#xff0c;它允许开发者使用HTML、CSS和JavaScript来构建各种桌面应用程序。了解Electron的原理对于开发者至关重要&#xff0c;这样在设计应用时能更合理&#xff0c;遇到问题也能更准确地分析和解决。下面将从多个方面深入剖析E…

Vue 3.0打造响应式用户界面的新方式

1 简介 Vue.js 是一个用于构建用户界面的渐进式框架。Vue 3.0 是其最新版本,引入了许多新特性和改进,使得开发者能够更高效地构建响应式的Web应用程序。本文将带你深入了解如何使用Vue 3.0来打造响应式用户界面,并通过实际案例和代码示例帮助你快速上手。 2 环境搭建 要开…

pycharm(2)

conda 我下载安装conda的时候产生了各种问题&#xff0c;最终我发现&#xff0c;打开杀毒软件会有阻碍 cuda的版本问题很大&#xff0c;我尝试多个版本之后&#xff0c;发现anaconda3-2024.06.1-windows-x86_64安装了之后不会报错&#xff0c;另外pycharm的版本也一直有问题&a…

Java中的泛型及其用途是什么?

Java中的泛型&#xff08;Generics&#xff09;是Java语言在2004年引入的一项重要特性&#xff0c;用于增强代码的类型安全性和复用性。泛型允许程序员在定义类、接口或方法时指定类型参数&#xff0c;从而实现对不同数据类型的统一操作。本文将详细探讨Java泛型的概念、用途以…

【漫话机器学习系列】075.隐含层(Hidden Layer)

隐含层&#xff08;Hidden Layer&#xff09; 在人工神经网络&#xff08;ANN&#xff09;中&#xff0c;隐含层是指输入层和输出层之间的层。它们由多个神经元&#xff08;或节点&#xff09;组成&#xff0c;这些神经元负责从输入层接收信号&#xff0c;进行处理后将信号传递…

稳定Android Studio2021.1.2.16的安装

作者有话说&#xff1a; 这个版本的android studio比较稳定&#xff0c;适合计算机专业的同学去用&#xff08;不深学&#xff09;&#xff0c;如果是企业或者爱好者&#xff0c;建议下载更新的版本。 里面还包含一个适配的模拟器以及相关以来软件&#xff0c;包拿上就能用。 网…

Golang 并发机制-4:用Mutex管理共享资源

并发性是Go的强大功能之一&#xff0c;它允许多个线程&#xff08;并发线程&#xff09;同时执行。然而&#xff0c;权力越大&#xff0c;责任越大。当多个例程并发地访问和修改共享资源时&#xff0c;可能会导致数据损坏、竞争条件和不可预测的程序行为。为了解决这些问题&…

网站快速收录:如何设置robots.txt文件?

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/34.html 为了网站快速收录而合理设置robots.txt文件&#xff0c;需要遵循一定的规则和最佳实践。robots.txt文件是一个纯文本文件&#xff0c;它告诉搜索引擎爬虫哪些页面可以访问&#xff…