最大序列 seq.cpp

【一句话题意】给定入队序列,求字典序最大的出队序列。

【分析】显然,这是一道模拟题;显然,满足字典序最大,贪心即可。
然后喷一下出题人,没有设置Θ(n)\Theta(n)Θ(n)的点,Θ(nlog2n)∗STL\Theta(nlog_2n)*STLΘ(nlog2n)STL乱搞也可以轻松卡过。

【code】

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=2e5+100;
int n,a[maxn],mx[maxn];
int s[maxn],top;
inline void read(int &x){
	x=0;int fl=1;char tmp=getchar();
	while(tmp<'0'||tmp>'9') {if(tmp=='-')fl=-fl;tmp=getchar();}
	while(tmp>='0'&&tmp<='9') x=(x<<1)+(x<<3)+tmp-'0',tmp=getchar();
	x=x*fl;
}
int main(){
	freopen("seq.in","r",stdin);
	freopen("seq.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++) read(a[i]);
	for(int i=n;i>=1;i--) mx[i]=max(mx[i+1],a[i]);
	for(int i=1;i<=n;i++){
		if(!top) s[++top]=a[i];
		else{
			while(top>0&&s[top]>mx[i])printf("%d ",s[top--]);
			s[++top]=a[i];
		}
	}
	while(top>0) printf("%d ",s[top--]);
	return 0;
}
llama.cpp框架通过运行gguf模型文件来启动对话或者回答一个问题,但是大语言模型本身似乎并没有上下文管理的能力,所以我有以下疑问: 1.在使用llama.cpp框架运行gguf大语言模型的时候,是否具有上下文理解的能力,就是基于前面的对话内容进行下一次回答,最简单的比如,我对这次回答不满意,我输入"重新回答上一个问题",他能否理解我的意图? 2.我了解到,大语言模型本身不具有上下文管理,目前主流的open AI能实现那种对话,只是因为厂商企业做了对话内容的存取管理,那么llama.cpp运行gguf模型,llama.cpp有一个对话模式,这个模式是否有这种管理?还是只是让用户能多次询问,模型回答问题而已,对话前后并不能联系起来? 3.我的研究现在是想用llama.cpp进行token的管理,上下文管理。因为模型似乎有一个上下文管理串口限制(解释一下为什么会有这个限制?是不是模型一次性输入有限制?还是一次性处理的token有限?等等?),比如token量(但是因为我不知道llama.cpp是否具有上下文管理,所以不知道可行性),假设llama.cpp运行gguf只能回答问题,前后上下文无关,也就是没有上下文管理,没有token管理,是不是就不存在前面提到的上下文管理串口限制?那么在llama.cpp的基础上,我能否通过再写,增加某些代码,实现模型上下文管理,比如,跟现在主流的open ai一样,保存一个消息序列(对话记录,现在好像有些模型是思维链推理,也可能需要保留思维链的推理过程步骤token或者结果),能通过某些算法,删除部分token来保留相对更有价值的token? 注意要搜索相关资料,回答要有依据,就算是推理,也要根据相关资料有理有据地推理。我是要进行研究,保证回答正确才能帮助我。
05-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值