Freda的队列 简单模拟

Freda的队列

Problem Description
Freda有一个队列,最初它是空的。
现在Freda接到了一系列指令,每个指令包含一个整数x。
如果x>0,表示在队列开头加入一个数x。
如果x=0,表示把队列复制一份,并接在现有队列的末尾。
如果x=-1,表示弹出队列头部的数,并输出这个数值。
但是指令实在是太多了,Freda实在是计算不过来每次要输出什么数值,请你帮帮她吧。
Input
第一行包含一个整数N,表示指令的个数。
接下来N行每行一个整数x,描述每条指令。
Output
对于每条x=-1的指令,若此时队列不为空,则输出一个整数,表示从队头弹出的数。否则不进行任何操作。
Sample Input
8
3
4
0
-1
-1
-1
-1
1
Sample Output
4
3
4
3
Tip
对于50%的数据,1≤N≤1000
对于100%的数据,1≤N≤106,-1≤x≤109

观察此题,我们可以知道,这是一道简单的模拟题,题目要求我们建出一个队列,并且包含向后复制这个队列,向前插入数,输出并删除第一个数这三个操作。
那么,我们就可以直接模拟出这道题的情况。
但是,我们考虑到,如果题目不断的复制后面的队列,将会导致我们所需要的时间过长。
所以,我们认真观察数据,发现N的范围在[1,106]内,那么,也就是说,最坏的情况,题目要求我们一直输出,也只能输出106个数。所以,我们的队列如果长度超过106,那么,后面的部分都可以舍弃,不需要再向后添加数。所以,我们得到如下的代码。

#include <cstdio>
 
using namespace std;
 
const int maxn=1000050;
int x[maxn<<1];
int head=maxn+1,tail=maxn;
int n,a;
 
inline int read()
{
    int f=0,x=0;char c=getchar();
    while (((c<'0')||(c>'9'))&&(c!='-'))
        c=getchar();
    if (c=='-')
        c=getchar(),f=1;
    while ((c>='0')&&(c<='9'))
        x=(x<<3)+(x<<1)+c-'0',c=getchar();
    return f?-x:x;
}
 
int main()
{
    n=read();
    while (n--)
    {
        a=read();
        switch (a)
        {
            case -1:
                if (head<=tail)
                    printf("%d\n",x[head++]);
                break;
            case 0:
                for (int t=tail,q=head;((tail-1)<=(maxn<<1))&&(tail-head+51<=maxn)&&q<=t;q++)
                    x[++tail]=x[q];
                break;
            default:
                x[--head]=a;
        }
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当然可以!这里是一个使用 Python 3 和 smtplib 库发送电子邮件的示例脚本: ``` import smtplib # 定义邮件服务器地址和端口 smtp_server = 'smtp.example.com' smtp_port = 587 # 定义发件人地址、收件人地址和邮件主题 sender = 'sender@example.com' recipient = 'recipient@example.com' subject = '测试邮件' # 定义邮件正文 message = '''\ From: {} To: {} Subject: {} 这是一封测试邮件。 '''.format(sender, recipient, subject) # 连接到邮件服务器 server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 使用安全连接 # 登录邮件服务器 username = 'sender@example.com' password = 'password' server.login(username, password) # 发送邮件 server.sendmail(sender, recipient, message) # 断开连接 server.quit() ``` 在这个脚本中,你需要替换 `smtp_server` 和 `smtp_port` 的值为你使用的邮件服务器的地址和端口,并替换 `sender` 和 `recipient` 的值为发件人和收件人的地址。你也需要替换 `username` 和 `password` 的值为你的邮件服务器的用户名和密码。 希望这能帮到你! ### 回答2: 当然可以!下面是一个简单的以SMTP协议发送邮件的Python 3脚本示例: ```python import smtplib from email.mime.text import MIMEText from email.header import Header def send_email(sender, password, receiver, subject, content): smtp_server = 'smtp.example.com' # 设置SMTP服务器地址 smtp_port = 25 # 设置SMTP服务器端口号 msg = MIMEText(content, 'plain', 'utf-8') # 创建邮件正文 msg['From'] = Header(sender, 'utf-8') # 设置发件人 msg['To'] = Header(receiver, 'utf-8') # 设置收件人 msg['Subject'] = Header(subject, 'utf-8') # 设置邮件主题 try: smtpObj = smtplib.SMTP(smtp_server, smtp_port) # 创建SMTP对象 smtpObj.login(sender, password) # 登录SMTP服务器 smtpObj.sendmail(sender, receiver, msg.as_string()) # 发送邮件 print("邮件发送成功") except smtplib.SMTPException: print("邮件发送失败") # 使用示例 sender = 'sender@example.com' # 发件人邮箱 password = 'password' # 发件人邮箱密码 receiver = 'receiver@example.com' # 收件人邮箱 subject = '这是一封测试邮件' # 邮件主题 content = '你好,这是一封使用Python发送的测试邮件。' # 邮件内容 send_email(sender, password, receiver, subject, content) ``` 请根据实际情况将`smtp_server`、`smtp_port`、`sender`、`password`、`receiver`、`subject`和`content`替换为你自己的值。该脚本使用了smtplib库和email库来发送纯文本邮件。 ### 回答3: 当然可以,以下是一个简单的Python 3脚本,用于发送邮件: ```python import smtplib from email.mime.text import MIMEText def send_email(sender, receiver, subject, message, smtp_server, smtp_port, username, password): # 创建邮件内容 msg = MIMEText(message) msg['Subject'] = subject msg['From'] = sender msg['To'] = receiver try: # 连接SMTP服务器 server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 登录邮箱 server.login(username, password) # 发送邮件 server.sendmail(sender, receiver, msg.as_string()) # 关闭连接 server.quit() print("邮件发送成功!") except Exception as e: print("发送邮件时出错:", str(e)) # 设置发件人、收件人、主题、内容等信息 sender = "your_email@example.com" receiver = "recipient@example.com" subject = "测试邮件" message = "这是一封测试邮件!" smtp_server = "smtp.example.com" smtp_port = 25 username = "your_username" password = "your_password" # 调用发送邮件函数 send_email(sender, receiver, subject, message, smtp_server, smtp_port, username, password) ``` 请注意,你需要将 `your_email@example.com`、`recipient@example.com`、`smtp.example.com`、`your_username` 和 `your_password` 替换为你自己的邮箱、SMTP服务器及登录凭据。同时确保你的计算机已经安装了 `smtplib` 和 `email` 库。这个脚本简单地发送了一封包含文本内容的测试邮件。你可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值