问题 G: 懒羊羊吃草

题目描述

众所周知,懒羊羊是所有小羊里最贪吃的一只。然而,鲜为人知的是,懒羊羊也有存储粮食的习惯。而更让大家吃惊的事实是,我们的懒羊羊做事很有条理,每当他存储一份粮食时,他会专门拿出一个筐来存放。因此,他的仓库里有很多很多筐的青草。而我们的懒羊羊又是一个经常馋嘴的小羊,每当他想吃草时,就会从仓库里找出数量最少的一筐草,把它吃掉。可是懒羊羊因为草吃得太多了导致大脑运转缓慢,所以他不得不向你请求支援,帮他找出他应该吃数量为多少的青草。

输入

第一行为一个正整数n,表示懒羊羊一共进行了n次操作(2<=n<=1000000)
第二行至第n+1行每行表示一个懒羊羊的操作,当这行形式为单独一个字符‘q’时,表示懒羊羊肚子饿了,要吃掉仓库里当前数量最少的那份青草;当这行形式为一个字符‘ i’和一个整数k时,表示懒羊羊将一份数量为k(1<=k<=2147483647)的青草存入了仓库,‘ i’和k之间用空格隔开。
输入数据保证每次询问时仓库里都有草可吃且所有操作中懒羊羊至少会吃一次草。

输出

每当输入为‘q’时,输出懒羊羊当前吃掉的那份青草的数量是多少。

样例输入

5
i 5
i 2
q
i 9
q

样例输出

2
5

这道题我用了队列做,每次输入是i,就将值放进队列中;如果输入是q就将队头移出

#include<bits/stdc++.h>
using namespace std;
priority_queue < int , vector < int > , greater < int > > q;  //开一个降序的队列,这个我也不会看网上的 
int ans,a[1000005],n,x,i,j,k;
int main()
{   char ch;
    cin>>n; 
    for(int i=0;i<n;i++){
    	 cin>>ch;
    	 if(ch=='i') {   cin>>x;    //如果是i,就放到队列中 
    	 	             q.push(x);
		             }
		 if(ch=='q') {
		 	           a[j++]=q.top();  //如果是q,就将队头的值赋给a数组,并加队头移出队列 
		 	           q.pop();   
		             }
	}
 for(int i=0;i<j;i++)
  cout<<a[i]<<endl; //依次输出a数组即可 
	return 0;
	
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值