【蓝桥杯】每日练习 Day7

news2025/3/26 2:42:12

目录

前言

领导者

分析

代码

空调

分析

代码

面包店

分析

代码


前言

今天是第一部分的最后一天(主打记忆恢复术和锻炼思维),从明天开始主播会逐步更新从位运算到dp问题的常见题型。


领导者(分类讨论)


分析

通过观察奶牛成为领导者的条件,即:

  • 名单中包含其品种的所有奶牛

  • 名单中包含另一品种的领导者

可以明显的想到任意一种可行的方案必定有至少一个奶牛是因为其满足了包含同类所有奶牛的条件而成为的领导者。

以此为切入点不难想到对于另外一个成为领导者的奶牛可能有两种情况,即:

  • 包含另一个领导者

  • 包含同类所有奶牛

观察样例GGGHHHHG,可以发现所有可能成为领导者的G均在H之前,换个方向想,第二个出现的品种当且仅当其包含其所有同类时才能成为领导者。

对于后出现的品种只有头部才有可能成为领导者,即:只有一种情况。

所以我们可以分类讨论可以成为领导者的头部,随后在其之前查找可能成为领导者的牛即可。


代码

#include<iostream>
using namespace std;
const int N = 200010;
int n;
char str[N];
int s1[N], s2[N], e[N];
int l;
int main()
{
    cin >> n >> str + 1;
    for(int i = 1; i <= n; i++)
    {
        s1[i] = s1[i - 1] + (str[i] == 'G');
        s2[i] = s2[i - 1] + (str[i] == 'H');
    } //前缀和
    
    for(int i = 1; i <= n; i++)
    {
        cin >> e[i];
        if(str[i] == 'G')
        {
            if(s1[e[i]] - s1[i - 1] == s1[n])
            {
                for(int j = 1; j < i; j++) 
                    if(e[j] >= i || s2[e[j]] - s2[j - 1] == s2[n])
                        l++;
            }
        }
        else
        {
            if(s2[e[i]] - s2[i - 1] == s2[n])
            {
                for(int j = 1; j < i; j++)
                    if(e[j] >= i || s1[e[j]] - s1[j - 1] == s1[n])
                        l++;
            }
        }
    }
    
    cout << l;
    return 0;
}

空调(搜索)


分析

每台空调都有运行成本和降温度数,这让主播一开始以为这是一道背包题?

后来发现其实不是,首先主播找不到递推公式……

随后注意到每台空调降温范围都是固定的并且只有开与不开两种选择

所以这应该是一道搜索题。

可以注意到数据范围很小。最多有2^10即1000种选择,区间操作的话就算不用差分也只有10*100的操作数,总共乘起来也不到一百万。所以直接暴力搜索就好


代码

// 搜索 + 差分 
// 对于每台空调只有开与不开两个选择,最多有2 ^ 10
// 暴搜就好。
#include<iostream>
using namespace std;
const int N = 110, M = 15;
int n, m;
int s[N], s1[N], st[N];
int a[M], b[M], v[M], w[M];

int dfs(int i) //二项分布,参数表示选第几个
{
    if(i == m + 1)
    {
        int x = 0;
        for(int j = 1; j < N; j++)
        {
            x += s1[j];
            if(x < st[j])
                return 0x3f3f3f3f;
        }
        return 0;
    }
    int l = dfs(i + 1); //不使用
    
    s1[a[i]] += w[i], s1[b[i] + 1] -= w[i];
    l = min(l, dfs(i + 1) + v[i]);
    s1[a[i]] -= w[i], s1[b[i] + 1] += w[i];
    return l;
}

int main()
{
    cin >> n >> m;
    for(int i = 0; i < n; i++)
    {
        int x, y, z;
        cin >> x >> y >> z;
        s[x] += z; s[y + 1] -= z; //差分处理区间操作
    }
    
    for(int i = 1; i < N; i++)
        st[i] = st[i - 1] + s[i];
    
    for(int i = 1; i <= m; i++)
        cin >> a[i] >> b[i] >> w[i] >> v[i];
    
    cout << dfs(1);
    
    return 0;
}

面包店(公式推导 + 二分答案)


分析

初始制作时间为A * tc + B * tm

并且每个客人都相互独立,不互相影响,对于每一个客人有一个忍耐上限C

如果制作时间超过C,客人就会生气离开。

我们可以在第1个客人到来之前升级设备,每次升级都选择饼干或松饼使他们的制作时间减一。

问:至少升级多少次级才不会得罪每个客人。

初始主播以为这是一道贪心题(在过程中升级装备,按需求升级,最终得到的就是最优解),但是注意到只能在第1个客人之前升级装备就和贪心无关了。

我们设饼干升级x次,松饼升级y次,就可以得到下面的不等式:

A * (tc - x) + B * (tm - y) <= c

可以观察到有两个变量,并不能直接解出不等式。

要引入已知,考虑使用二分答案,而使用二分要求区间必须有线性性质

如何判断是否满足线性性质呢?使用数学归纳法

我们设升级P次的所有方案中仅有一种方案满足要求。

那么升级P + 1次就至少存在一种方案满足要求。

对于P - 1次,使用反证法设存在一种方案满足要求,即:

A * (tc - x) + B * (tc - y) <= c, x + y = p - 1

我们对xy分别加一,可得两种方案:

  • A * (tc - x - 1) + B * (tc - y) <= c, x + y + 1 = p

  • A * (tc - x) + B * (tc - y - 1) <= c, x + y + 1 = p

很明显上方两种方案均满足要求,即对升级P次来说有至少两种可行的方案,与假设不符

所以升级p - 1不存在可行方案。证明完成,P具有单调性

所以,我们可以使用二分答案。

P = x + y,则y = P - x,代入上式可得:

A * (tc - x) + B * (tm - P + x) <= c

化简

(B - A)*x <= c - A*tc - B(tm - P)

于是我们就得出了关于x的表达式。

同时根据x自身的范围0 ~ tc - 1y的范围0 ~ tm - 1

可以得出两个不等式:

0 <= x <= tc - 1

0 <= P - x <= tm - 1

随后进行区间合并操作判断区间是否合法即可。

注:因为区间有可能出现负数所以我们需要使用floorceil函数。


代码

#include<iostream>
#include<cmath>
using namespace std;
typedef long long LL;
const int N = 110;
LL t, n, tc, tm;
LL a[N], b[N], c[N];

bool func(LL x)
{
    LL l = max((LL)0, x + 1 - tm), r = min(tc - 1, x);
    for(int i = 1; i <= n; i++)
    {
        double m = c[i] + (double)b[i]*x - (double)a[i]*tc - (double)b[i]*tm;
        double n = b[i] - a[i];
        if(n == 0 && m < 0) return false;
        else if(n > 0)
            r = min(r, (LL)floor(m/n));
        else if(n < 0)
            l = max(l, (LL)ceil(m/n));
    }
    if(r - l >= 0)
        return true;
    return false;
}

int main()
{
    cin >> t;
    while(t--)
    {
        cin >> n >> tc >> tm;
        for(int i = 1; i <= n; i++) cin >> a[i] >> b[i] >> c[i];
        LL l = 0, r = tc + tm - 2;
        while(l < r)
        {
            LL m = (l + r) >> 1;
            if(func(m))
                r = m;
            else
                l = m + 1;
        }
        cout << r << '\n';
    }
    
    
    return 0;
}

题目均来自AcWing

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2321680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地部署Stable Diffusion生成爆火的AI图片

直接上代码 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…

从国家能源到浙江交通投资,全息技术在能源交通领域的创新应用

一、3D全息技术行业应用参数及设计制作要求 全息投影 全息投影技术通过激光器、全息片等设备&#xff0c;将物体的三维信息记录下来&#xff0c;并在特定条件下再现。应用参数包括投影距离、投影面积、投影亮度等。设计制作要求&#xff1a;高清晰度、高亮度、低噪音、稳定性好…

PageHiOffice网页组件(WebOffice文档控件)开发集成技巧专题一

PageHiOffice网页组件作为最新一代的WebOffice文档控件&#xff0c;这是目前市场上唯一能做到在Chrome等最新版浏览器中实现内嵌网页运行的商用文档控件&#xff0c;是OA及ERP等系统处理各种文档的福音。从发布到完善已经超过3年&#xff0c;不管是功能性还是稳定性都已经有了长…

本地安装deepseek大模型,并使用 python 调用

首先进入 ollama 官网 https://ollama.com/点击下载 下载完成后所有都是下一步&#xff0c;就可以 点击搜索 Models &#xff1a; https://ollama.com/search然后点击下载&#xff1a; 选择后复制: ollama run deepseek-r1:32b例如&#xff1a; 让它安装完成后&#xff1…

Android:蓝牙设置配套设备配对

一、概述 在搭载 Android 8.0&#xff08;API 级别 26&#xff09;及更高版本的设备上&#xff0c;配套设备配对会代表您的应用对附近的设备执行蓝牙或 Wi-Fi 扫描&#xff0c;而不需要 ACCESS_FINE_LOCATION 权限。这有助于最大限度地保护用户隐私。使用此方法执行配套设备&am…

Python 变量作用域、global 关键字与闭包作用域深度解析 第三部分

## 三、闭包作用域的存在原因及适用场景 ### 3.1 闭包作用域存在的原因 #### 3.1.1 数据封装与隐藏 闭包可以把数据封装在外部函数的作用域中&#xff0c;只有内部函数能够访问这些数据&#xff0c;这有助于实现数据的隐藏和保护。 python def counter(): count 0 def incre…

zookeeper使用

下载 官网 链接 1. 2. 然后解压&#xff1a; 启动 先复制一份这个文件&#xff0c; 双击启动 默认占用8080&#xff0c;和Tomcat冲突&#xff0c; 解决方法&#xff1a;链接 然后重启

使用BootStrap 3的原创的模态框组件,没法弹出!估计是原创的bug

最近在给客户开发一个CRM系统&#xff0c;其中用到了BOOTSTRAP的模态框。版本是3。由于是刚开始用该框架。所以在正式部署到项目中前&#xff0c;需要测试一下&#xff0c;找到框架中的如下部分。需要说明的是。我用的asp.net mvc框架开发。测试也是在asp.net mvc环境下。 复制…

【Azure 架构师学习笔记】- Azure Networking(1) -- Service Endpoint 和 Private Endpoint

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Networking】系列。 前言 最近公司的安全部门在审计云环境安全性时经常提到service endpoint&#xff08;SE&#xff09;和priavate endpoint&#xff08;PE&#xff09;的术语&#xff0c;为此做了一些研究储备。 云…

Excel第41套全国人口普查

2. 导入网页中的表格&#xff1a;数据-现有链接-考生文件夹&#xff1a;网页-找到表格-点击→变为√-导入删除外部链接关系&#xff1a;数据-点击链接-选中连接-删除-确定&#xff08;套用表格格式-也会是删除外部链接&#xff09;数值缩小10000倍&#xff08;除以10000即可&am…

VUE2导出el-table数据为excel并且按字段分多个sheet

首先在根目录下建一个文件夹export用来存储export.js import * as XLSX from xlsxfunction autoWidthFunc(ws, data) {// 设置每列的最大宽度const colWidth data.map(row > row.map(val > {var reg new RegExp([\\u4E00-\\u9FFF], g) // 检测字符串是否包含汉字if (v…

PDF文件转Markdown,基于开源项目marker

​ 首先我们来问下deepseek 为啥要选marker呢 基于深度学习&#xff0c;一看就逼格拉满。搞科研必备&#xff0c;效果应该不会太差。 看下官网 https://github.com/VikParuchuri/marker ​ 一看头像是个印度佬&#xff0c;自吹——又快又好。那就试试吧。 安装步骤 安装…

【蓝桥杯速成】| 9.回溯升级

题目一&#xff1a;组合综合 问题描述 39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返…

【uni-app】引用公共组件

目录 一、建立公共组件 1.1新建vue文件 1.2编写公共文件代码 1.3使用 注意事项 一、建立公共组件 1.1新建vue文件 在公共组件文件目录下新建所需要的功能文件 1.2编写公共文件代码 按需求写对应功能的代码 1.3使用 在需要使用的文件下引用公共组件 注意事项 想要使用s…

API-Arrays

Arrays 操作数组的工具类 1.tostring import java.util.Arrays;public class demo1 {public static void main(String[] args) {Integer[] arr {2, 3, 1, 5, 6, 7, 8, 4, 9};System.out.println(Arrays.toString(arr));//[2, 3, 1, 5, 6, 7, 8, 4, 9]} } 2.binarySearch 二…

尝试在软考62天前开始成为软件设计师-信息系统安全

安全属性 保密性:最小授权原则(能干活的最小权限)、防暴露(隐藏)、信息加密、物理保密完整性(防篡改):安全协议、校验码、密码校验、数字签名、公证 可用性:综合保障( IP过滤、业务流控制、路由选择控制、审计跟踪)不可抵赖性:数字签名 对称加密 DES :替换移位 3重DESAESR…

dsPIC33CK64MC105 Curiosity Nano|为高性能数字电源与电机控制而生

「dsPIC33CK64MC105 Curiosity Nano」面向高性能数字电源与电机控制而生 dsPIC33CK64MC105 Curiosity Nano 该评估套件是一个经济高效的硬件平台&#xff0c;用于评估dsPIC33CK系列高性能数字信号控制器&#xff08;DSC&#xff09;。该板采用 100 MHz dsPIC33CK64MC105 DSC&am…

《面向车险理赔的事故信息提取》开题报告

个人主页&#xff1a;大数据蟒行探索者 目录 一、选题的依据及意义 二、国内外研究概况及发展趋势 &#xff08;1&#xff09;车牌识别技术 &#xff08;2&#xff09;证件信息提取技术 &#xff08;3&#xff09;交通事故认定书文本提取 三、研究内容及实验方案 1.研究…

【AI神经网络】深度神经网络(DNN)技术解析:从原理到实践

引言 深度神经网络&#xff08;Deep Neural Network, DNN&#xff09;作为人工智能领域的核心技术&#xff0c;近年来在计算机视觉、自然语言处理、医疗诊断等领域取得了突破性进展。与传统机器学习模型相比&#xff0c;DNN通过多层非线性变换自动提取数据特征&#xff0c;解决…

EasyRTC轻量级Webrtc音视频通话SDK,助力带屏IPC在嵌入式设备中的应用

一、市场背景 随着人们生活水平的提高&#xff0c;对于家居安全和远程监控的需求日益增长&#xff0c;带屏IPCam不仅满足了用户实时查看监控画面的需求&#xff0c;还提供了诸如双向语音通话、智能报警等丰富的功能&#xff0c;极大地提升了用户体验。 此外&#xff0c;技术的…