【笔试】算法的暴力美学——牛客 NC221681:dd爱框框

【笔试】算法的暴力美学——牛客 NC221681:dd爱框框

一、题目描述

二、算法原理

思路:滑动窗口

1)定义两个指针,一开始都为0,cur 从左开始遍历,定义一个 sum 来表示 prev 到 cur 的之间的值的总和,当 sum >= x 时,我们要根据题目条件来保存 prev 和 cur 的值;

2)当 sum >= x 时,我们记录完 prev 和 cur 的值的之后,sum -= arr[ prev ],prev++ ,往后走,只要满足条件 sum >= x 我们就要记录 prev 和 cur 的值,不断重复上面的工作;

3)当 sum < x 时,cur++,sum += arr[ cur ];

4)直至遍历完整个数组;

三、代码实现

#include <iostream> #include <vector> using namespace std; int main() { //准备工作 int n,x; cin >> n >> x; vector<int> arr(n,0); for(int i = 0; i < n; i++) cin >> arr[i]; int index[2] = {0};//保存最后的结果 //滑动窗口 int cur = 0; int prev = 0; int sum = 0; while(cur < n) { sum += arr[cur]; while(sum >= x)//入窗口 { if(index[0] == 0 && index[1] == 0) { index[0] = prev; index[1] = cur; sum -= arr[prev++]; continue; } int length = index[1] - index[0]; int camplen = cur - prev; if(length == camplen || length > camplen) { if(prev < index[0] || length > camplen) { index[0] = prev; index[1] = cur; } } sum -= arr[prev++]; } //出窗口 cur++; } cout << index[0] + 1 << ' ' << index[1] + 1 << endl; return 0; }

Read more

libIEC61850:开源IEC 61850协议库使用指南

项目概述 【免费下载链接】libiec61850Official repository for libIEC61850, the open-source library for the IEC 61850 protocols 项目地址: https://gitcode.com/gh_mirrors/li/libiec61850 libIEC61850是由MZ Automation开发的开放源码库,主要用于实现IEC 61850标准中的通信协议。该库完全符合IEC 61850标准,支持MMS(制造报文规范)、GOOSE(通用面向对象变电站事件)及SV(采样值)等关键协议。 libIEC61850提供了客户端和服务器端的应用编程接口(API),采用C语言(符合C99标准)开发,确保最大程度的可移植性。它可以在嵌入式系统和运行Linux、Windows、MacOS的PC上使用,已成功应用于多个商业软件产品和设备中。 核心特性 * 协议支持完整:支持MMS客户端/服务器、GOOSE(

By Ne0inhk

PhotoEdit:强大的Android图片编辑开源库

PhotoEdit:强大的Android图片编辑开源库 【免费下载链接】PhotoEditFor Android studio 图片处理 1、图片编辑(图片添加,文字添加),实现图片编辑中的图片添加,旋转,缩放,删除;文字的添加,大小缩放,字体更换,颜色更换,删除; 2,基本滤镜实现与接口封装; 涂鸦(画笔的样式,粗细,颜色,橡皮擦,贴图); 相框(简单相框,酷炫相框); 马赛就克(基本马赛克,酷炫马赛克,橡皮擦)及其接口封装 3,接下来, 图像剪切,旋转等功能实现测试接口封装 项目地址: https://gitcode.com/gh_mirrors/ph/PhotoEdit PhotoEdit是一个专为Android平台设计的开源图片编辑库,提供了丰富的图片处理功能,

By Ne0inhk
用 Rust 构建 Git 提交历史可视化工具

用 Rust 构建 Git 提交历史可视化工具

在软件开发中,版本控制系统的历史记录往往承载着项目的演进脉络。然而,当项目规模扩大、分支增多时,纯文本的 git log 输出很难直观地展现提交之间的复杂关系。今天,我想分享一个用 Rust 构建的轻量级工具 —— git-graph-rs,它能把 Git 仓库的提交历史转换为可视化的图结构,为代码审查、项目复盘和工程决策提供直观的支持。 目录 * 为什么需要可视化? * 技术方案的选择 * 1. 利用系统 Git 命令 * 2. 模块化的 Rust 架构 * 3. 双格式输出策略 * 核心实现解析 * Git 数据获取的艺术 * 图结构的一致性保证 * 合并提交的可视化区分 * 工程化思维体现 * 错误处理的前置化 * 参数设计的克制 * 输出格式的稳定性 * 实际应用场景 * 1. CI/CD 集成 * 2. 代码审查辅助 * 3. 项目文档化

By Ne0inhk
GitHub使用指南(保姆级教学)2025年12月15日版

GitHub使用指南(保姆级教学)2025年12月15日版

一、GitHub简介 GitHub是一项基于云的服务,为软件开发和Git版本控制提供Internet托管。这有助于开发人员存储和管理他们的代码,同时跟踪和控制对其代码的更改。 功能类别具体功能功能说明代码托管与版本控制    仓库(Repository)管理支持创建公共和私有代码仓库,用于存储代码、文档等资源,免费版可满足无限协作者的私有仓库需求。分支与合并管理    支持创建分支独立开发功能,可通过合并请求整合代码,还能设置分支保护规则,限制特定人员操作以保障代码安全。提交历史追踪    完整记录代码的每一次修改,包括修改人、时间、内容,支持版本回滚,可随时恢复到历史稳定版本。代码搜索与浏览支持按文件、目录、符号等维度在线搜索代码,界面直观,可快速定位和查看代码细节。团队协作相关Pull Request(PR)开发者完成代码修改后提交合并请求,期间可开展多轮讨论,待审核通过后再合并至主分支。代码评审支持在代码行级别添加评论,标注问题或建议,搭配 Code Owners 功能,确保关键代码变更经过对应负责人审核。Issues 跟踪用于记录和管理任务、漏洞、需求等,可分配负责人、

By Ne0inhk