nyoj754 黑心医生 结构体优先队列

<span style="font-family: Arial, Helvetica, sans-serif;">对队列不懂的  可以看看我转的这篇文章<a target=_blank href="http://blog.csdn.net/su20145104009/article/details/44562659" target="_blank">STL整理</a>。</span>
<pre name="code" class="cpp">#include <stdio.h>
#include <queue>
using namespace std;
typedef struct
{
	int rich,num;
}node;
queue<node> s1;
priority_queue<int,vector<int>,less<int> >s2;//把less换成greater就是从小到大
int main()
{
	node t,v;
	int n,m,x;
	while(scanf("%d %d",&n,&m)!=EOF)
	{
		while(!s1.empty())//必须清队列
		s1.pop();
		while(!s2.empty())//同上
		s2.pop();
		for(int i=0;i<n;i++)
		{
			scanf("%d",&x);
			t.rich=x;
			t.num=i;
			s1.push(t);
			s2.push(x);
		}
		for(int i=0;i<n;i++)
		{
			v=s1.front();
			if(v.rich==s2.top())
			s2.pop();
			else
			{
				while(v.rich!=s2.top())
				s1.push(v),s1.pop(),v=s1.front();
			    s2.pop();
			}
			if(v.num==m)
			{
				s1.pop();
				break;
			}
			else
			s1.pop();
		}
		printf("%d\n",n-s2.size());
	}
	return 0;
}

				
时间: 2024-10-12 03:03:01

nyoj754 黑心医生 结构体优先队列的相关文章

hdu1873 看病要排队(结构体优先队列)

看病要排队 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5769    Accepted Submission(s): 2369 Problem Description 看病要排队这个是地球人都知道的常识. 只是经过细心的0068的观察,他发现了医院里排队还是有讲究的. 0068所去的医院有三个医生(汗,这么少)同一时候看病.而看病

结构体优先队列的用法

今天做一个微软的校招笔试题 Registration Day ,用优先队列模拟操作的.粘贴来别人的代码,谨记 pq 的用法.另外 memset 包含在 string.h 里. 1 #include <stdio.h> 2 #include <string.h> 3 #include <limits.h> 4 #include <queue> 5 #include <vector> 6 #include <set> 7 #include

hdu1873-看病要排队-(结构体优先队列)

http://acm.hdu.edu.cn/showproblem.php?pid=1873 #include<stdio.h> #include<iostream> #include<algorithm> #include<cstring> #include<math.h> #include<string> #include<map> #include<queue> #include<stack>

POJ: 2413 ——优先队列——结构体cmp函数一级排序

我要翻译题目!!! /* A group of cows grabbed a truck and ventured on an  expedition deep into the jungle. Being rather poor drivers, the cows unfortunately managed to run over a rock and puncture the truck's fuel tank. The truck now leaks one unit of fuel ev

C++ STL——优先队列的结构体表示方法

优先队列是队列的一种,但是自身具有一定的排序功能,所以不具有队列“先进先出”的性质 刚刚接触优先队列,看过网上的用法后感觉还是太过于朦胧,所以打算自己写一个稍微细节一点的. 头文件 #include<queue> 常用操作 q.push() //放入元素 q.pop() //弹出元素 q.empty()//判断队列是否为空 q.top()//返回头部元素 q.size()//返回队列元素个数 声明方式 priority<int>q; 默认的情况是大顶锥,及先输出的是元素较大的: 如

std::map使用结构体自定义键值

使用STL中的map时候,有时候需要使用结构题自定义键值,比如想统计点的坐标出现的次数 struct Node{ int x,y; }; ...... map<Node,int>mp; mp[(Node){x,y}]++; 这样子的话,会出现一堆报错 c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_function.h||In instantiation of 'bool std::less<_Tp>::operator()(

关于结构体

1.结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构. typedef struct People { int a; char b; double c; }P: 其中:struct是关键词, People是标签, a b c是成员, P是此结构体声明的变量. 于是在声明变量的时候就可:P p1; 这里的P实际上就是struct People的别名.P==struct People 另外这里也可以不写People(于是也不能struct People p1;了,

Linux C中结构体初始化

    在阅读GNU/Linux内核代码时,我们会遇到一种特殊的结构初始化方式.该方式是某些C教材(如谭二版.K&R二版)中没有介绍过的.这种方式称为指定初始化(designated initializer).下面我们看一个例子,Linux-2.6.x/drivers/usb/storage/usb.c中有这样一个结构体初始化项目: static struct usb_driver usb_storage_driver = { .owner = THIS_MODULE, .name = "

在Swift结构体中如何实现写时复制?

结构体(Struct)在Swift语言中占有重要地位,在Swift标准库中,大约有90%的公开类型都是结构体,包括我们常用的Array.String.Dictionary.结构体相比类,一个最重要的特性就是它是值类型,而类似引用类型.值类型是通过复制值来赋值的,而不是引用同一个内存地址,这样就不存在数据共享的问题,能防止意外的数据改变,并且它是线程安全的. 举一个很简单的例子,在objc中,数组是类,是引用类型,在Swift中,数组是结构体,是值类型.因此下面的代码中: let array1 =