SSL_1045【采药】优化&&ybtoj【动态规划】1章1题

104 篇文章 0 订阅
23 篇文章 0 订阅

原题传送门:SSL_1045【采药】
一维数组,降低空间复杂度
上代码:

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,a[1001],b[1001],c[1001],t=0;
int main()
{
 cin>>n>>m;
 for(int i=1;i<=m;i++)cin>>a[i]>>b[i];
 for(int i=1;i<=m;i++)
 {
  for(int j=n;j>=1;j--)
  {
   if(j>=a[i])c[j]=max(c[j],c[j-a[i]]+b[i]);
   t=max(t,c[j]);
  }
 }
 cout<<t;
 return 0;
}
针对这种情况,你可以尝试以下优化代码: 1. 在调用ssl_read之前,先检查SSL握手状态,确保握手已经成功完成,否则重新进行握手。 2. 在调用ssl_read之前,先检查SSL会话是否过期,如果过期,可以考虑重新建立SSL会话。 3. 在调用ssl_read之前,先检查网络连接状态,如果连接已经中断,可以考虑进行重连或者其他网络故障处理操作。 4. 在调用ssl_read之前,使用非阻塞模式进行设置,可以避免阻塞。如果ssl_read返回-1并且errno为EAGAIN或EWOULDBLOCK,则可以再次调用select等待数据可读,直到ssl_read返回正确的数据或者出现其他错误。 5. 在代码中加入错误处理代码,避免出现逻辑错误。同时,可以加入日志记录功能,便于排查问。 示例代码: ``` // 设置非阻塞模式 int flags = fcntl(fd, F_GETFL, 0); fcntl(fd, F_SETFL, flags | O_NONBLOCK); // SSL握手 if (SSL_do_handshake(ssl) != 1) { int err = SSL_get_error(ssl, ret); if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) { // 握手未完成,等待下一次循环 continue; } else { // 握手失败,关闭连接 close(fd); return -1; } } // 检查SSL会话是否过期 if (SSL_session_reused(ssl) == 0) { // SSL会话过期,重新建立SSL会话 SSL_set_session(ssl, NULL); SSL_set_fd(ssl, fd); if (SSL_connect(ssl) != 1) { close(fd); return -1; } } // 检查网络连接状态 if (select(fd + 1, &readfds, NULL, NULL, &tv) <= 0) { // 连接中断,重连或其他处理 close(fd); return -1; } // 读取数据 int nread = 0; while ((nread = SSL_read(ssl, buf, len)) <= 0) { int err = SSL_get_error(ssl, nread); if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) { // 数据未准备好,等待下一次循环 continue; } else { // 其他错误,退出循环 break; } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值