当前位置: 首页 > news >正文

【二分 优先队列】P3611 [USACO17JAN] Cow Dance Show S|普及+

本文涉及的基础知识点

C++二分查找
C++堆(优先队列)

[USACO17JAN] Cow Dance Show S

题面翻译

题目描述

经过几个月的排练,奶牛们基本准备好展出她们的年度舞蹈表演。今年她们要表演的是著名的奶牛芭蕾——“cowpelia”。

表演唯一有待决定的是舞台的尺寸。一个大小为 K K K 的舞台可以支持 K K K 头牛同时在舞台上跳舞。在牛群中的 N N N 头牛按照她们必须出现在舞蹈中的顺序方便地编号为 1 , 2 , … , N 1,2,\dots,N 1,2,,N。第 i i i 头牛计划跳 d i d_i di 的特定持续时间。
一开始,第 1 , 2 , … , K 1,2,\dots,K 1,2,,K 头牛出现在舞台上并开始跳舞。当这些牛中的某一头牛首先完成了她的部分,她会马上离开舞台并且第 K + 1 K+1 K+1 头牛会出现在舞台上并开始跳舞。所以,舞台上总有 K K K 头奶牛在跳舞(直到表演的尾声,奶牛不够的时候)。当最后一头奶牛完成了她的舞蹈部分,表演结束,共花了 T T T 个单位时间。

显然, K K K 的值越大, T T T 就越小。由于表演不能拖太长,你得知了指定 T T T 的最大可能值的上限 T m a x T_{max} Tmax。请根据这个约束,确定 K K K 的最小值。

输入格式

第一行包括 N N N T m a x T_{max} Tmax 两个整数。

接下来的 N N N 行,第 i i i 行给出了第 i i i 头牛跳舞的持续时间 d i d_i di。第 i i i 行包括一个整数 d i d_i di

保证 K = N K=N K=N 时表演会按时完成。

输出格式

输出在表演时间不大于 T m a x T_{max} Tmax 时的 K K K 的最小可能值。

提示说明

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 1 0 4 1 \le N \le 10^4 1N104 T m a x ≤ 1 0 6 T_{max} \le 10^6 Tmax106 1 ≤ d i ≤ 1 0 5 1 \le d_i \le 10^5 1di105

题目描述

After several months of rehearsal, the cows are just about ready to put on their annual dance performance; this year they are performing the famous bovine ballet “Cowpelia”.

The only aspect of the show that remains to be determined is the size of the stage. A stage of size K K K can support K K K cows dancing simultaneously. The N N N cows in the herd ( 1 ≤ N ≤ 10 , 000 1 \leq N \leq 10,000 1N10,000) are conveniently numbered 1 … N 1 \ldots N 1N in the order in which they must appear in the dance. Each cow i i i plans to dance for a specific duration of time d ( i ) d(i) d(i). Initially, cows 1 … K 1 \ldots K 1K appear on stage and start dancing. When the first of these cows completes her part, she leaves the stage and cow K + 1 K+1 K+1 immediately starts dancing, and so on, so there are always K K K cows dancing (until the end of the show, when we start to run out of cows). The show ends when the last cow completes her dancing part, at time T T T.

Clearly, the larger the value of K K K, the smaller the value of T T T. Since the show cannot last too long, you are given as input an upper bound T m a x T_{max} Tmax specifying the largest possible value of T T T. Subject to this constraint, please determine the smallest possible value of K K K.

输入格式

The first line of input contains N N N and T m a x T_{max} Tmax, where T m a x T_{max} Tmax is an integer of value at most 1 million.

The next N N N lines give the durations d ( 1 ) … d ( N ) d(1) \ldots d(N) d(1)d(N) of the dancing parts for cows 1 … N 1 \ldots N 1N. Each d ( i ) d(i) d(i) value is an integer in the range 1 … 100 , 000 1 \ldots 100,000 1100,000.

It is guaranteed that if K = N K=N K=N, the show will finish in time.

输出格式

Print out the smallest possible value of K K K such that the dance performance will take no more than T m a x T_{max} Tmax units of time.

样例 #1

样例输入 #1

5 8
4
7
8
6
4

样例输出 #1

4

二分查找+优先队列

二分查找:寻找首端
参赛返回:[1,N]
优先队列(大根堆)记录舞台上奶牛结束时间。
堆定元素如果大于TMax,返回假。
否则加入新奶牛。

代码

核心代码

#include <iostream>
#include <sstream>
#include <vector>
#include<map>
#include<unordered_map>
#include<set>
#include<unordered_set>
#include<string>
#include<algorithm>
#include<functional>
#include<queue>
#include <stack>
#include<iomanip>
#include<numeric>
#include <math.h>
#include <climits>
#include<assert.h>
#include<cstring>
#include<list>#include <bitset>
using namespace std;template<class T1, class T2>
std::istream& operator >> (std::istream& in, pair<T1, T2>& pr) {in >> pr.first >> pr.second;return in;
}template<class T1, class T2, class T3 >
std::istream& operator >> (std::istream& in, tuple<T1, T2, T3>& t) {in >> get<0>(t) >> get<1>(t) >> get<2>(t) ;return in;
}template<class T1, class T2, class T3, class T4 >
std::istream& operator >> (std::istream& in, tuple<T1, T2, T3, T4>& t) {in >> get<0>(t) >> get<1>(t) >> get<2>(t) >> get<3>(t);return in;
}template<class T = int>
vector<T> Read() {int n;scanf("%d", &n);vector<T> ret(n);for(int i=0;i < n ;i++) {cin >> ret[i];}return ret;
}template<class T = int>
vector<T> Read(int n) {vector<T> ret(n);for (int i = 0; i < n; i++) {cin >> ret[i];}return ret;
}template<int N = 12 * 1'000'000>
class COutBuff
{
public:COutBuff() {m_p = puffer;}template<class T>void write(T x) {int num[28], sp = 0;if (x < 0)*m_p++ = '-', x = -x;if (!x)*m_p++ = 48;while (x)num[++sp] = x % 10, x /= 10;while (sp)*m_p++ = num[sp--] + 48;}inline void write(char ch){*m_p++ = ch;}inline void ToFile() {fwrite(puffer, 1, m_p - puffer, stdout);}
private:char  puffer[N], * m_p;
};template<int N = 12 * 1'000'000>
class CInBuff
{
public:inline CInBuff() {fread(buffer, 1, N, stdin);}inline int Read() {int x(0), f(0);while (!isdigit(*S))f |= (*S++ == '-');while (isdigit(*S))x = (x << 1) + (x << 3) + (*S++ ^ 48);return f ? -x : x;}
private:char buffer[N], * S = buffer;
};template<class TSave, class TRecord >
class CRangUpdateLineTree
{
protected:virtual void OnQuery(const TSave& save, const int& iSaveLeft, const int& iSaveRight) = 0;virtual void OnUpdate(TSave& save, const int& iSaveLeft, const int& iSaveRight, const TRecord& update) = 0;virtual void OnUpdateParent(TSave& par, const TSave& left, const TSave& r, const int& iSaveLeft, const int& iSaveRight) = 0;virtual void OnUpdateRecord(TRecord& old, const TRecord& newRecord) = 0;
};template<class TSave, class TRecord >
class CVectorRangeUpdateLineTree : public CRangUpdateLineTree<TSave, TRecord>
{
public:CVectorRangeUpdateLineTree(int iEleSize, TSave tDefault, TRecord tRecordNull) :m_iEleSize(iEleSize), m_save(iEleSize * 4, tDefault), m_record(iEleSize * 4, tRecordNull) {m_recordNull = tRecordNull;}void Update(int iLeftIndex, int iRightIndex, TRecord value){Update(1, 0, m_iEleSize - 1, iLeftIndex, iRightIndex, value);}void Query(int leftIndex, int rightIndex) {Query(1, 0, m_iEleSize - 1, leftIndex, rightIndex);}//void Init() {//	Init(1, 0, m_iEleSize - 1);//}TSave QueryAll() {return m_save[1];}void swap(CVectorRangeUpdateLineTree<TSave, TRecord>& other) {m_save.swap(other.m_save);m_record.swap(other.m_record);std::swap(m_recordNull, other.m_recordNull);assert(m_iEleSize == other.m_iEleSize);}
protected://void Init(int iNodeNO, int iSaveLeft, int iSaveRight)//{//	if (iSaveLeft == iSaveRight) {//		this->OnInit(m_save[iNodeNO], iSaveLeft);//		return;//	}//	const int mid = iSaveLeft + (iSaveRight - iSaveLeft) / 2;//	Init(iNodeNO * 2, iSaveLeft, mid);//	Init(iNodeNO * 2 + 1, mid + 1, iSaveRight);//	this->OnUpdateParent(m_save[iNodeNO], m_save[iNodeNO * 2], m_save[iNodeNO * 2 + 1], iSaveLeft, iSaveRight);//}void Query(int iNodeNO, int iSaveLeft, int iSaveRight, int iQueryLeft, int iQueryRight) {if ((iSaveLeft >= iQueryLeft) && (iSaveRight <= iQueryRight)) {this->OnQuery(m_save[iNodeNO], iSaveLeft, iSaveRight);return;}if (iSaveLeft == iSaveRight) {//没有子节点return;}Fresh(iNodeNO, iSaveLeft, iSaveRight);const int mid = iSaveLeft + (iSaveRight - iSaveLeft) / 2;if (mid >= iQueryLeft) {Query(iNodeNO * 2, iSaveLeft, mid, iQueryLeft, iQueryRight);}if (mid + 1 <= iQueryRight) {Query(iNodeNO * 2 + 1, mid + 1, iSaveRight, iQueryLeft, iQueryRight);}}void Update(int iNode, int iSaveLeft, int iSaveRight, int iOpeLeft, int iOpeRight, TRecord value){if ((iOpeLeft <= iSaveLeft) && (iOpeRight >= iSaveRight)){this->OnUpdate(m_save[iNode], iSaveLeft, iSaveRight, value);this->OnUpdateRecord(m_record[iNode], value);return;}if (iSaveLeft == iSaveRight) {return;//没有子节点}Fresh(iNode, iSaveLeft, iSaveRight);const int iMid = iSaveLeft + (iSaveRight - iSaveLeft) / 2;if (iMid >= iOpeLeft){Update(iNode * 2, iSaveLeft, iMid, iOpeLeft, iOpeRight, value);}if (iMid + 1 <= iOpeRight){Update(iNode * 2 + 1, iMid + 1, iSaveRight, iOpeLeft, iOpeRight, value);}// 如果有后代,至少两个后代this->OnUpdateParent(m_save[iNode], m_save[iNode * 2], m_save[iNode * 2 + 1], iSaveLeft, iSaveRight);}void Fresh(int iNode, int iDataLeft, int iDataRight){if (m_recordNull == m_record[iNode]){return;}const int iMid = iDataLeft + (iDataRight - iDataLeft) / 2;Update(iNode * 2, iDataLeft, iMid, iDataLeft, iMid, m_record[iNode]);Update(iNode * 2 + 1, iMid + 1, iDataRight, iMid + 1, iDataRight, m_record[iNode]);m_record[iNode] = m_recordNull;}vector<TSave> m_save;vector<TRecord> m_record;TRecord m_recordNull;const int m_iEleSize;
};template<class INDEX_TYPE>
class CBinarySearch
{
public:CBinarySearch(INDEX_TYPE iMinIndex, INDEX_TYPE iMaxIndex, INDEX_TYPE tol = 1) :m_iMin(iMinIndex), m_iMax(iMaxIndex), m_iTol(tol) {}template<class _Pr>INDEX_TYPE FindFrist(_Pr pr){auto left = m_iMin - m_iTol;auto rightInclue = m_iMax;while (rightInclue - left > m_iTol){const auto mid = left + (rightInclue - left) / 2;if (pr(mid)){rightInclue = mid;}else{left = mid;}}return rightInclue;}template<class _Pr>INDEX_TYPE FindEnd(_Pr pr){INDEX_TYPE leftInclude = m_iMin;INDEX_TYPE right = m_iMax + m_iTol;while (right - leftInclude > m_iTol){const auto mid = leftInclude + (right - leftInclude) / 2;if (pr(mid)){leftInclude = mid;}else{right = mid;}}return leftInclude;}
protected:const INDEX_TYPE m_iMin, m_iMax, m_iTol;
};class Solution {
public:int Ans(int T, vector<int>& a) {const int N = a.size();auto Check = [&](int mid) {priority_queue<int, vector<int>, greater<int>> maxHeap;int i = 0;for (; i < mid; i++) {maxHeap.emplace(a[i]);}while (maxHeap.size()) {if (maxHeap.top() > T) { return false; }if (i < N) {maxHeap.emplace(maxHeap.top() + a[i]); i++;}maxHeap.pop();}return true;};return CBinarySearch<int>(1, N).FindFrist(Check);}
};int main() {
#ifdef _DEBUGfreopen("a.in", "r", stdin);
#endif // DEBUG	int n,T;cin >> n >> T ;auto a = Read<int>(n);	auto res = Solution().Ans(T,a);cout << res;
#ifdef _DEBUG		/*printf("T=%d,", T);Out(a, "a=");*///Out(edge, "edge=");
#endif // DEBUG	return 0;
}

单元测试

int T;vector<int> a;TEST_METHOD(TestMethod11){T = 8, a = { 4,7,8,6,4 };auto res = Solution().Ans(T,a);AssertEx(4, res);}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

相关文章:

【二分 优先队列】P3611 [USACO17JAN] Cow Dance Show S|普及+

本文涉及的基础知识点 C二分查找 C堆(优先队列) [USACO17JAN] Cow Dance Show S 题面翻译 题目描述 经过几个月的排练&#xff0c;奶牛们基本准备好展出她们的年度舞蹈表演。今年她们要表演的是著名的奶牛芭蕾——“cowpelia”。 表演唯一有待决定的是舞台的尺寸。一个大…...

蓝桥杯分享经验

系列文章目录 提示&#xff1a;小白先看系列 第一章 蓝桥杯的钱白给吗 文章目录 系列文章目录前言一、自我介绍二、经验讲解:1.基础知识2.进阶知识3.个人观点 三、总结四、后续 前言 第十六届蓝桥杯已经省赛已经结束了&#xff0c;相信很多小伙伴也已经得到自己的成绩了。接下…...

TDengine 安全部署配置建议

背景 TDengine 的分布式、多组件特性导致 TDengine 的安全配置是生产系统中比较关注的问题。本文档旨在对 TDengine 各组件及在不同部署方式下的安全问题进行说明&#xff0c;并提供部署和配置建议&#xff0c;为用户的数据安全提供支持。 安全配置涉及组件 TDengine 包含多…...

Grafana当前状态:SingleStat面板

Grafana的SingleStat面板是一种用于展示单个关键指标(KPI)的可视化组件&#xff0c;特别适合需要突出显示核心业务指标的场景(如实时销售额、在线用户数、系统错误率等)。它通过简洁的布局和丰富的样式选项&#xff0c;帮助用户快速聚焦核心数据。Singlem Panel侧重于展示系统的…...

专题五:floodfill算法(太平洋大西洋水流问题)

以leetcode417题为例 题目解析&#xff1a; 整张图&#xff0c;左边深蓝的是太平洋&#xff0c;右边浅蓝的是大西洋&#xff0c;你需要在矩阵中找到一个点&#xff0c;使其可以流向太平洋又可以流向大西洋&#xff0c;并且你每次流的时候只能由高到低&#xff0c;或者相等到相…...

【HTML】【面试提问】HTML面试提问总结

第一章 HTML基础相关提问 1.1 HTML基本概念 1.1.1 什么是HTML HTML 即超文本标记语言&#xff08;HyperText Markup Language&#xff09;&#x1f60e;&#xff0c;它是用于创建网页的标准标记语言。简单来说&#xff0c;HTML 就像是搭建房屋的砖块&#x1f9f1;&#xff0…...

解锁MySQL性能调优:高级SQL技巧实战指南

高级SQL技巧&#xff1a;解锁MySQL性能调优的终极指南 开篇 当前&#xff0c;随着业务系统的复杂化和数据量的爆炸式增长&#xff0c;数据库性能调优成为了技术人员面临的核心挑战之一。尤其是在高并发、大数据量的场景下&#xff0c;SQL 查询的性能直接影响到整个系统的响应…...

数据分析与应用---数据可视化基础

目录 Matplotlib基础绘图 &#xff08;一&#xff09;、pyplot绘图基础语法与常用参数 1、pyplot基础语法 &#xff08;1&#xff09; 创建画布与创建子图 &#xff08;2&#xff09; 添加画布内容 &#xff08;3&#xff09; 保存与显示图形 案例代码 2. 设置pyplot的动态…...

android双屏之副屏待机显示图片

摘要&#xff1a;android原生有双屏的机制&#xff0c;但需要芯片厂商适配框架后在底层实现。本文在基于芯发8766已实现底层适配的基础上&#xff0c;仅针对上层Launcher部分对系统进行改造&#xff0c;从而实现在开机后副屏显示一张待机图片。 副屏布局 由于仅显示一张图片&…...

oracle序列自增问题

1.先查询表名对应的序列名称 SELECT trigger_name, trigger_type, triggering_event FROM all_triggers WHERE table_name 表名;2. 查询id最大值 SELECT MAX(ID) FROM 表名;3. 查询下一次生成ID SELECT SJCJ_ENERGY_DATA_INSERTID.NEXTVAL FROM DUAL;4. 设置临时步长,越过…...

FLASHDB API分析

fdb_kvdb_init 函数详解 fdb_kvdb_init 是 FlashDB 框架中用于 ​初始化键值数据库&#xff08;KVDB&#xff09;​​ 的核心接口&#xff0c;其功能涵盖底层存储配置、默认数据加载与多模式适配。以下从功能、参数、使用场景及注意事项展开分析&#xff1a; 一、功能与作用 ​…...

使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务

&#x1f680; 使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务 本文基于 ABP vNext MinIO 的对象存储集成实践&#xff0c;系统讲解从 MinIO 部署、桶创建、ABP 集成、上传 API、安全校验、预签名访问&#xff0c;到测试、扩展及多租户支持的全过程。目标是构建一套可复…...

3.安卓逆向2-安卓文件目录

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 上一个内容&#xff1a;2.安卓逆向2-adb指令 首先使用adb连接到手机&#xff0c;如下图使用adb命令列出手机的目录&am…...

云原生时代的系统可观测性:理念变革与实践体系

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:为什么可观测性在云原生时代变得更加重要? 传统应用系统运行于固定服务器,拓扑结构稳定、依赖路径清晰,排查故障依赖日志和人工经验已足够支撑运维。但在云原生环境中,系统正快速演变为: 微…...

力扣网-复写零

1.题目要求 2.题目链接 1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 3.题目解答 class Solution {public void duplicateZeros(int[] arr) {int cur0,dest-1,narr.length;while(cur<n){//遇到0就dest走两步if(arr[cur]0){dest2;}//遇到非零元素dest就走一步els…...

高项-挣值管理TCPI

TCPI&#xff08;完工尚需绩效指数&#xff09;的英文全称及含义 TCPI 是项目管理&#xff08;尤其是挣值管理EVM, Earned Value Management&#xff09;中的一个关键指标&#xff0c;其英文全称为&#xff1a; To-Complete Performance Index 中文译为**“完工尚需绩效指数”…...

Java大厂面试三轮问答:微服务与数据库技术深度解析

Java大厂面试&#xff1a;谢飞机的三轮挑战 第一轮&#xff1a;微服务基础与电商场景设计 面试官: "谢飞机&#xff0c;假设我们要设计一个电商平台&#xff0c;需要支持用户下单、支付以及订单追踪。你会如何设计微服务架构&#xff1f;" 谢飞机: "呃&#…...

Linux 移植 Docker 详解

一、移植前的环境准备 在将 Docker 移植到 Linux 系统之前&#xff0c;需要确保系统满足一定的条件&#xff0c;以保证 Docker 能够稳定运行。 1. 操作系统版本要求 Docker 对 Linux 操作系统版本有一定的要求&#xff0c;不同的 Docker 版本适配不同的 Linux 发行版及版本。常…...

滑动验证码缺口识别与自动化处理技术解析

在如今的网络安全环境中&#xff0c;滑动验证码作为一种主流的人机验证方案&#xff0c;被广泛应用。它的核心挑战主要集中在两个方面&#xff1a;一是如何准确地识别出缺口位置&#xff0c;二是如何模拟出逼真的拖动轨迹。 一、缺口识别技术方案 &#xff08;一&#xff09;…...

C++字符串处理:`std::string`和`std::string_view`的区别与使用

在 C中&#xff0c;std::string和std::string_view都用于处理字符串&#xff0c;但它们的用途和性能特点有很大不同。本教程将通过代码示例和流程图&#xff0c;帮助你快速掌握它们的使用方法。 1.什么是std::string和std::string_view&#xff1f; 1.1std::string std::str…...

Uniapp中动态控制scroll-view滚动的方式

在Uniapp 4.45中&#xff0c;动态修改scroll-view的scroll-left属性时无法触发滚动&#xff08;直接设置scroll-left属性值没问题&#xff09;&#xff0c;这通常是因为数据更新与 DOM 渲染之间的异步特性导致的。知道了原因&#xff0c;但是直接修改scroll-left属性值还是失败…...

手机怎么查看网络ip地址?安卓/iOS设备查询指南

在移动互联网时代&#xff0c;IP地址作为设备的网络身份证&#xff0c;无论是网络调试、远程连接还是排查故障都至关重要。本文将系统介绍安卓和iOS设备查看IP地址的多种方法&#xff0c;帮助您快速掌握这一实用技能。 一、安卓手机查看IP地址方法 1、通过WiFi设置查看 打开设…...

R语言+贝叶斯网络:涵盖贝叶斯网络的基础、离散与连续分布、混合网络、动态网络,Gephi可视化,助你成为数据分析高手!

&#x1f50d; 在现代生态、环境及地学研究中&#xff0c;变量及其因果关系的推断是核心课题之一。然而&#xff0c;传统的因果关系研究通常依赖于昂贵的实验&#xff0c;而实验结果往往与天然环境中的实际因果联系存在较大偏差。例如&#xff0c;在生态系统中&#xff0c;物种…...

手机内存不够,哪些文件可以删?

1️⃣应用缓存文件 安卓&#xff1a;通过「文件管理器」→「Android」→「data」或「cache」文件夹&#xff08;部分需权限&#xff09;&#xff0c;或直接在应用设置中清除缓存 iOS&#xff1a;无需手动清理&#xff0c;系统会自动管理&#xff0c;或在应用内设置中清除&…...

C语言之 比特(bit)、字节(Byte)、字(Word)、整数(Int)

在C语言中&#xff0c;经常出现上述的概念&#xff0c;即比特&#xff08;bit&#xff09;、字节&#xff08;Byte&#xff09;、字&#xff08;Word&#xff09;、整数&#xff08;Int&#xff09;。查看C语言标准&#xff0c;比特&#xff08;bit&#xff09;的定义如下&…...

组态王通过开疆智能profinet转ModbusTCP网关连接西门子PLC配置案例

本案例是组态王通过使用开疆智能研发的Profinet转ModbusTCP网关采集西门子1200PLC中数据的案例。 网关配置 首先来配置网关的参数&#xff0c;打开网关配置软件“Gateway Configuration Studio” 由于组态王那侧设定为ModbusTCP客户端所以网关作为ModbusTCP服务器。新建项目…...

GO语言学习(五)

GO语言学习&#xff08;五&#xff09; 前面我们已经学了一些关于golang的基础知识&#xff0c;从这一期开始&#xff0c;我们就来讲解一下基于golang为后端的web开发&#xff0c;首先这一期为一些golang为后端的web开发基础讲解&#xff0c;我们将会从web的工作方式、golang如…...

Supermemory:让大模型拥有“长效记忆“

目录 引言&#xff1a;打破大语言模型的记忆瓶颈&#xff0c;迎接AI交互新范式 一、Supermemory 核心技术 1.1 透明代理机制 1.2 智能分段与检索系统 1.3 自动Token管理 二、易用性 三、性能与成本 四、可靠性与兼容性 五、为何选择 Supermemory&#xff1f; 六、对…...

Hooks实现原理与自定义Hooks

React Hooks 是 React 16.8 引入的一种机制&#xff0c;允许在函数组件中使用状态&#xff08;state&#xff09;、副作用&#xff08;effect&#xff09;等功能&#xff0c;而无需编写 class 组件。其核心原理是通过闭包和链表结构&#xff0c;在 React 的 Fiber 架构中管理组…...

【NLP】35. 构建高质量标注数据

如何构建高质量标注数据&#xff1f;大语言模型背后的那只“看不见的手” 在讨论大语言模型&#xff08;LLM&#xff09;性能突破时&#xff0c;人们总是聚焦在模型参数、结构设计和训练技巧上。但真正懂行的人都知道——再好的模型也离不开一手好数据&#xff0c;尤其是那些“…...

2024CCPC吉林省赛长春邀请赛 Java 做题记录

目录 I. The Easiest Problem G. Platform Game L. Recharge E. Connected Components I. The Easiest Problem 签到题 直接输出 21 即可 // github https://github.com/Dddddduo // github https://github.com/Dddddduo/acm-java-algorithm // github https://github.com/…...

黑马程序员C++2024新版笔记 第三章 数组

1.数组定义 数组是一批相同类型的元素&#xff08;element&#xff09;的集合组成的数据结构。 声明语法&#xff1a; <数据类型> <数组名> [<数组长度>] int v[6] // 声明了可以存放6个int数字的数组 数组的每个元素有编号&#xff0c;称之为下标索引…...

Golang的网络安全策略实践

Golang的网络安全策略实践 一、理解网络安全的重要性 当今的网络环境中&#xff0c;安全问题日益突出&#xff0c;各种类型的攻击如雨后春笋般涌现&#xff0c;给个人和组织的信息资产造成了严重威胁。因此&#xff0c;制定和实施有效的网络安全策略至关重要。 二、Golang在网络…...

SAP学习笔记 - 开发13 - CAP 之 添加数据库支持(Sqlite)

上一章学习了CAP开发准备&#xff0c;添加Service。 SAP学习笔记 - 开发12 - CAP 之 开发准备&#xff0c;添加服务-CSDN博客 本章继续学习CAP开发 - 添加数据库支持&#xff08;Sqlite&#xff09;。 目录 1&#xff0c;数据库准备 - H2 内存数据库 - Sqlite数据库 a&…...

DRIVEGPT4: 通过大语言模型实现可解释的端到端自动驾驶

《DriveGPT4: Interpretable End-to-End Autonomous Driving via Large Language Model》 2024年10月发表&#xff0c;来自香港大学、浙江大学、华为和悉尼大学。 多模态大型语言模型&#xff08;MLLM&#xff09;已成为研究界关注的一个突出领域&#xff0c;因为它们擅长处理…...

LLM最后怎么输出值 解码语言模型:从权重到概率的奥秘

LM Head Weights&#xff08;语言模型头部权重&#xff09;&#xff1a;左侧的“LM Head Weights”表示语言模型头部的权重矩阵&#xff0c;它是模型参数的一部分。权重矩阵与输入数据进行运算。Logits&#xff08;未归一化对数概率&#xff09;&#xff1a;经过与LM Head Weig…...

Better Faster Large Language Models via Multi-token Prediction 原理

目录 模型结构&#xff1a; Memory-efficient implementation&#xff1a; 实验&#xff1a; 1. 在大规模模型上效果显著&#xff1a; 2. 在不同类型任务上的效果&#xff1a; 为什么MLP对效果有提升的几点猜测&#xff1a; 1. 并非所有token对生成质量的影响相同 2. 关…...

【NLP】34. 数据专题:如何打造高质量训练数据集

构建大语言模型的秘密武器&#xff1a;如何打造高质量训练数据集&#xff1f; 在大语言模型&#xff08;LLM&#xff09;如 GPT、BERT、T5 爆发式发展的背后&#xff0c;我们常常关注模型架构的演化&#xff0c;却忽视了一个更基础也更关键的问题&#xff1a;训练数据从哪里来…...

uniapp 微信小程序 获取openId

嗨&#xff0c;我是小路。今天主要和大家分享的主题是“uniapp 微信小程序 获取openId”。 一、主要属性 1.uni.login 二、实例代码 1、前端代码 uni.login({provider: weixin,success: (res) > {uni.showLoading({title: 登录中...,mask: true})let code res.…...

企业标准信息公共服务平台已开放标准通编辑器访问入口

标准通 数字化标准编辑器 专业、高效、便捷 企业标准信息公共服务平台 近日&#xff0c;企业标准信息公共服务平台已开放标准通编辑器访问入口&#xff0c;可进入官网指定版块使用&#xff01; 核心功能亮点 解决企业痛点 传统标准编制&#xff0c;需反复核对格式、逐条…...

小米MUJIA智能音频眼镜来袭

智能眼镜赛道风云再起&#xff0c;小米新力作MIJIA智能音频眼镜2正式亮相&#xff0c;引发市场热议。 这款产品在设计和功能上都有显著提升&#xff0c;为用户带来更舒适便捷的佩戴体验&#xff0c;同时也标志着小米在智能眼镜领域的持续深耕。 轻薄设计&#xff0c;舒适体验 …...

Node.js 实战八:服务部署方案对比与实践

你开发好了接口&#xff0c;准备上线&#xff0c;然后开始犹豫&#xff1a; “直接 node app.js 启就行了吗&#xff1f;” “要不要用 PM2&#xff1f;听说 Docker 更稳&#xff1f;” “Serverless 是不是就不用管服务器了&#xff1f;” 部署是从“能运行”到“能长久运行”…...

地下水安全监测实施方案

一、方案目标 本方案的核心目标在于构建一个全方位、科学严谨且高效运转的地下水监测体系&#xff0c;旨在实现对地下水资源全方位的动态监测、科学化的管理和有效的保护。监测的具体目标涵盖了地下水位、流量以及水质等多个关键性指标&#xff0c;通过精准的数据采集和分析&am…...

HTTP由浅入深

概述 超文本传输协议&#xff08;HTTP, Hypertext Transfer Protocol&#xff09; 是一种用于传输超媒体文档&#xff08;例如 HTML&#xff09;的应用层协议。它最初被设计用于 Web 浏览器与 Web 服务器之间的通信&#xff0c;但也广泛应用于其他客户端与服务器的交互。 HTT…...

Conda 环境下安装 GCC 和 glibc (crypt.h) 教程

Conda 环境下安装 GCC 和 glibc (crypt.h) 教程 由于运行Low-Light Image Enhancement via Structure Modeling and Guidance原始论文代码&#xff0c;发现服务器的gcc版本太老&#xff0c;没法运行。同时缺少libxcrypt (crypt.h)&#xff0c;不得不询问gpt进行解答。发现可以…...

C++面试3——const关键字的核心概念、典型场景和易错陷阱

const关键字的核心概念、典型场景和易错陷阱 一、const本质&#xff1a;类型系统的守护者 1. 与#define的本质差异 维度#defineconst编译阶段预处理替换编译器类型检查作用域无作用域&#xff08;全局污染&#xff09;遵循块作用域调试可见性符号消失保留符号信息类型安全无类…...

超小多模态视觉语言模型MiniMind-V 训练

简述 MiniMind-V 是一个超适合初学者的项目&#xff0c;让你用普通电脑就能训一个能看图说话的 AI。训练过程就像教小孩&#xff1a;先准备好图文材料&#xff08;数据集&#xff09;&#xff0c;教它基础知识&#xff08;预训练&#xff09;&#xff0c;再教具体技能&#xf…...

深入理解仿函数(Functors):从概念到实践

文章目录 1. 什么是仿函数&#xff1f;2. 仿函数与普通函数的区别3. 标准库中的仿函数4. 仿函数的优势4.1 状态保持4.2 可定制性4.3 性能优势 5. 现代C中的仿函数5.1 Lambda表达式5.2 通用仿函数 6. 仿函数的高级应用&#xff08;使用C2020标准库及以上版本&#xff09;6.1 函数…...

第二届parloo杯的RSA_Quartic_Quandary

&#xff08;害&#xff0c;还是太菜了&#xff0c;上去秒了一道题之后就动不了了&#xff0c;今晚做个记录&#xff0c;一点点的往回拾起吧&#xff09; # from Crypto.Util.number import getPrime, bytes_to_long # import math # # FLAG b************** # # # def gene…...

团队氛围紧张,如何提升工作积极性?

当团队氛围长期处于紧张状态时&#xff0c;员工的积极性、创造力和凝聚力会显著下降。要有效提升工作积极性&#xff0c;应从建设心理安全环境、优化管理沟通方式、提升认可与激励机制、加强情感联结与归属感等方面系统改善。其中&#xff0c;建设心理安全环境是最重要的基础&a…...