CF371 D Searching Rectangles

本文介绍了一种使用二分查找算法解决矩形区域内特定问题的方法。通过多次调用检查函数并根据返回值调整搜索范围,最终确定矩形的边界。此方法适用于需要精确定位目标位置的应用场景。

基本思路就是二分 每条边分别二分求
c++11 用fflush(sdtout) 不行 囧啊

#include<bits/stdc++.h>
using namespace std;

int ans[2][4];
int inp;
int check(int x1,int y1,int x2,int y2) {
    printf("? %d %d %d %d\n",x1,y1,x2,y2);
    fflush(stdout);
    scanf("%d",&inp);
    return inp;
}
int has(int x1,int y1,int x2,int y2) {
    if(x1 <= ans[0][0] && y1 <= ans[0][1] && x2 >= ans[0][2] && y2 >= ans[0][3]) return 1;
    return 0;
}
void solve(int x1,int y1,int x2,int y2,int flag){
    int l=x1, r=x2;  
    while(l<=r){
        int mid = (l+r)>>1;
        int num = check(mid,y1,x2,y2);
        if(flag &&  has(mid,y1,x2,y2) ) num--;
        if(num==1 || num==2)
            ans[flag][0] = mid, l = mid+1;
        else
            r = mid-1;
    }
    x1 = ans[flag][0];
//  printf("x1:%d\n",x1);

    l=x1,r=x2;
    while(l<=r){
        int mid = (l+r)>>1;
        int num = check(x1,y1,mid,y2);
        if( flag && has(x1,y1,mid,y2) ) num--;
        if(num==1 || num==2)
            ans[flag][2]=mid, r = mid-1;
        else
            l = mid+1;
    }
    x2 = ans[flag][2];
//  printf("x2;%d\n",x2);

    l=y1,r=y2;
    while(l<=r){
        int mid = (l+r)>>1;
        int num = check(x1,mid,x2,y2);
        if(flag &&  has(x1,mid,x2,y2) ) num--;
        if(num==1 || num==2)
            ans[flag][1]=mid, l = mid+1;
        else
            r=mid-1;
    }
    y1 = ans[flag][1];
//  printf("y1:%d\n",y1);

    l=y1,r=y2;
    while(l<=r){
        int mid = (l+r)>>1;
        int num = check(x1,y1,x2,mid);
        if(flag &&  has(x1,y1,x2,mid) ) num--;
        if(num==1 || num==2)
            ans[flag][3]=mid, r=mid-1;
        else
            l=mid+1;
    }
    y2 = ans[flag][3];
//  printf("y2:%d\n",y2);
}

int main(){
    int n;
    while(~scanf("%d",&n)) {
        solve(1,1,n,n,0);
        solve(1,1,n,n,1);

        printf("!");
        for(int i = 0; i < 2; ++i) {
            for(int j = 0; j < 4; ++j) {
                printf(" %d",ans[i][j]);
            } 
        }printf("\n"); fflush(stdout);
    }
    return 0;
}
【轴承故障诊断】加权多尺度字典学习模型(WMSDL)及其在轴承故障诊断上的应用(Matlab代码实现)内容概要:本文介绍了加权多尺度字典学习模型(WMSDL)在轴承故障诊断中的应用,并提供了基于Matlab的代码实现。该模型结合多尺度分析与字典学习技术,能够有效提取轴承振动信号中的故障特征,提升故障识别精度。文档重点阐述了WMSDL模型的理论基础、算法流程及其在实际故障诊断中的实施步骤,展示了其相较于传统方法在特征表达能力和诊断准确性方面的优势。同时,文中还提及该资源属于一个涵盖多个科研方向的技术合集,包括智能优化算法、机器学习、信号处理、电力系统等多个领域的Matlab仿真案例。; 适合人群:具备一定信号处理和机器学习基础,从事机械故障诊断、工业自动化、智能制造等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习并掌握加权多尺度字典学习模型的基本原理与实现方法;②将其应用于旋转机械的轴承故障特征提取与智能诊断;③结合实际工程数据复现算法,提升故障诊断系统的准确性和鲁棒性。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注字典学习的训练过程与多尺度分解的实现细节,同时可参考文中提到的其他相关技术(如VMD、CNN、BILSTM等)进行对比实验与算法优化。
【硕士论文复现】可再生能源发电与电动汽车的协同调度策略研究(Matlab代码实现)内容概要:本文档围绕“可再生能源发电与电动汽车的协同调度策略研究”展开,旨在通过Matlab代码复现硕士论文中的核心模型与算法,探讨可再生能源(如风电、光伏)与大规模电动汽车接入电网后的协同优化调度方法。研究重点包括考虑需求侧响应的多时间尺度调度、电动汽车集群有序充电优化、源荷不确定性建模及鲁棒优化方法的应用。文中提供了完整的Matlab实现代码与仿真模型,涵盖从场景生成、数学建模到求解算法(如NSGA-III、粒子群优化、ADMM等)的全过程,帮助读者深入理解微电网与智能电网中的能量管理机制。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源、智能电网、电动汽车等领域技术研发的工程人员。; 使用场景及目标:①用于复现和验证硕士论文中的协同调度模型;②支撑科研工作中关于可再生能源消纳、电动汽车V2G调度、需求响应机制等课题的算法开发与仿真验证;③作为教学案例辅助讲授能源互联网中的优化调度理论与实践。; 阅读建议:建议结合文档提供的网盘资源下载完整代码,按照目录顺序逐步学习各模块实现,重点关注模型构建逻辑与优化算法的Matlab实现细节,并通过修改参数进行仿真实验以加深理解。
在当代储能装置监控技术领域,精确测定锂离子电池的电荷存量(即荷电状态,SOC)是一项关键任务,它直接关系到电池运行的安全性、耐久性及整体效能。随着电动车辆产业的迅速扩张,业界对锂离子电池SOC测算的精确度与稳定性提出了更为严格的标准。为此,构建一套能够在多样化运行场景及温度条件下实现高精度SOC测算的技术方案具有显著的实际意义。 本文介绍一种结合Transformer架构与容积卡尔曼滤波(CKF)的混合式SOC测算系统。Transformer架构最初在语言处理领域获得突破性进展,其特有的注意力机制能够有效捕捉时间序列数据中的长期关联特征。在本应用中,该架构用于分析电池工作过程中采集的电压、电流与温度等时序数据,从而识别电池在不同放电区间的动态行为规律。 容积卡尔曼滤波作为一种适用于非线性系统的状态估计算法,在本系统中负责对Transformer提取的特征数据进行递归融合与实时推算,以持续更新电池的SOC值。该方法增强了系统在测量噪声干扰下的稳定性,确保了测算结果在不同环境条件下的可靠性。 本系统在多种标准驾驶循环(如BJDST、DST、FUDS、US06)及不同环境温度(0°C、25°C、45°C)下进行了验证测试,这些条件涵盖了电动车辆在实际使用中可能遇到的主要工况与气候范围。实验表明,该系统在低温、常温及高温环境中,面对差异化的负载变化,均能保持较高的测算准确性。 随附文档中提供了该系统的补充说明、实验数据及技术细节,核心代码与模型文件亦包含于对应目录中,可供进一步研究或工程部署使用。该融合架构不仅在方法层面具有创新性,同时展现了良好的工程适用性与测算精度,对推进电池管理技术的进步具有积极意义。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### MobileNetV3 模型介绍 MobileNetV3 是一种轻量级深度学习模型,专为移动设备和嵌入式设备设计,以实现高效的图像识别任务。它通过应用平台感知的神经架构搜索(NAS)和 NetAdapt 算法来优化网络结构,并结合了新的改进技术,如 Squeeze-and-Excite 模块和 Hard-Swish 激活函数,从而在保持低计算成本的同时提高了模型性能。 该模型分为两个版本:**MobileNetV3-Large** 和 **MobileNetV3-Small**,分别适用于高资源需求和低资源需求的场景[^1]。这两个版本在 ImageNet 数据集上的表现优于前代模型 MobileNetV2,尽管实际部署中 MobileNetV2 仍然较为常见[^2]。 #### 主要特性 - **轻量化设计**:采用深度可分离卷积(Depthwise Separable Convolution),大幅减少参数数量和计算量。 - **Squeeze-and-Excite 模块**:引入通道注意力机制,提升特征表达能力。 - **Hard-Swish 激活函数**:相比传统 ReLU,提供更平滑的非线性变换,有助于提高模型精度。 - **平台感知 NAS 搜索**:利用自动化网络搜索技术优化模型结构,使其在特定硬件平台上达到最佳性能。 ### 应用指南 #### 图像分类 MobileNetV3 可用于图像分类任务,尤其适合在计算资源受限的设备上运行。以下是一个使用 TensorFlow/Keras 加载预训练 MobileNetV3-Small 模型并进行图像分类的示例: ```python import tensorflow as tf from tensorflow.keras.applications.mobilenet_v3 import MobileNetV3Small, preprocess_input, decode_predictions from tensorflow.keras.preprocessing import image import numpy as np # 加载预训练的小型模型 model = MobileNetV3Small(weights='imagenet') # 加载并预处理输入图像 img_path = 'path_to_your_image.jpg' img = image.load_img(img_path, target_size=(224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) # 进行预测 preds = model.predict(x) print('Predicted:', decode_predictions(preds, top=3)[0]) ``` #### 目标检测与语义分割 MobileNetV3 也可作为特征提取器应用于目标检测(如 SSD、YOLO)或语义分割(如 DeepLab)等任务中。通常会将 MobileNetV3 的主干网络替换原有特征提取模块,以获得更高的推理效率。 #### 部署建议 - 在移动端部署时,推荐使用 **MobileNetV3-Small** 版本,以节省内存和计算资源。 - 若需更高精度且对资源要求不敏感,可选择 **MobileNetV3-Large**。 - 利用 TensorFlow Lite 或 ONNX Runtime 等工具进行模型压缩和加速,以便更好地适应边缘设备。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值