数据规模:

  

用优先队列对各个事件的发生先后记录即可:

#include<iostream>
#include<queue> using namespace std;
int key[];
struct node
{
int no;
int begin;
int end;
int type;//表示借,1表示时在还
node(int no, int begin,int end, int type):no(no),begin(begin),end(end),type(type)
{ }
friend bool operator <(node a, node b)
{
if(!a.type)
{
if(!b.type)//都是借
{
return a.begin>b.begin;
}
else//借遇到还的
{
return (a.begin>=(b.begin+b.end));
}
}
else
{
if (!b.type)
{
return (a.begin+a.end)>b.begin;
}
else
{
//都是还
if((a.begin+a.end)>(b.begin+b.end))
return true;
else if((a.begin+a.end)==(b.begin+b.end))
return a.no > b.no;
else
return false;
}
}
};
};
priority_queue<node> q; int main()
{
ios::sync_with_stdio(false);
int N,k;
cin>>N>>k;
node t(,,,);
int a,b,c;
for(int i=;i<N;i++)
{
key[i]=i+;
}
while(k--)
{
cin>>a>>b>>c;
q.push(node(a,b,c,));
q.push(node(a,b,c,));
}
while(!q.empty())
{
t=q.top();
//cout<<t.no<<t.type<<endl;
if(!t.type)
{
for (int i = ; i < N; i++)
{
if(key[i]==t.no)
{
key[i]=-;
break;
}
}
}
else
{
for (int i = ; i < N; i++)
{
if(key[i]==-)
{
key[i]=t.no;
break;
}
}
}
q.pop();
}
for (int i = ; i < N; i++)
{
cout<<key[i]<<" ";
}
return ;
}

csp 201709-2 优先队列模拟的更多相关文章

  1. HDU 5437 Alisha’s Party (优先队列模拟)

    题意:邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当最后所有人都到了还会再开一次门,让还没进来的人进来,每次都是礼物价值高的人先进.最后 ...

  2. Alisha’s Party (HDU5437)优先队列+模拟

    Alisha 举办聚会,会在一定朋友到达时打开门,并允许相应数量的朋友进入,带的礼物价值大的先进,最后一个人到达之后放外面的所有人进来.用优先队列模拟即可.需要定义朋友结构体,存储每个人的到达顺序以及 ...

  3. hdu 5437(优先队列模拟)

    Alisha’s Party Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  4. Codeforces Round #318 (Div. 2) A Bear and Elections (优先队列模拟,水题)

    优先队列模拟一下就好. #include<bits/stdc++.h> using namespace std; priority_queue<int>q; int main( ...

  5. 暑假练习赛 004 E Joint Stacks(优先队列模拟)

    Joint StacksCrawling in process... Crawling failed Time Limit:4000MS     Memory Limit:65536KB     64 ...

  6. Codeforces Round #375 (Div. 2) Polycarp at the Radio 优先队列模拟题 + 贪心

    http://codeforces.com/contest/723/problem/C 题目是给出一个序列 a[i]表示第i个歌曲是第a[i]个人演唱,现在选出前m个人,记b[j]表示第j个人演唱歌曲 ...

  7. Problem E: 穷游中国在统题 优先队列 + 模拟

    http://www.gdutcode.sinaapp.com/problem.php?cid=1049&pid=4 Problem E: 穷游中国在统题 Description Travel ...

  8. bzoj1216 操作系统(优先队列模拟)

    1216: [HNOI2003]操作系统 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1172  Solved: 649[Submit][Statu ...

  9. 优先队列 + 模拟 - HDU 5437 Alisha’s Party

    Alisha’s Party Problem's Link Mean: Alisha过生日,有k个朋友来参加聚会,由于空间有限,Alisha每次开门只能让p个人进来,而且带的礼物价值越高就越先进入. ...

随机推荐

  1. Angular7入门总结篇

  2. 【电脑】win10开启telnet服务

  3. C语言前置知识汇编基础--总线【地址总线,控制总线,数据总线】练习题

    寻址就是用一个数字表示一个字节存储单元的地址,而不是表示这个存储单元中的内容,所以不用乘以8. 1. 1个CPU的寻址能力为8KB,那么它的地址总线宽度是多少? 8*1024=8192     共有8 ...

  4. Docker 简单发布dotnet core项目 图文版

    原文:https://www.cnblogs.com/chuankang/p/9474591.html docker发布dotnet core简单流程 需要结合这个版本看哈 地址:https://ww ...

  5. C++ TCP客户端网络消息发送接收同步实现

    废话不多说, 直入主题, 我们在写客户单的时候希望在哪里发消息出去,然后在哪里返回消息(同步), 然后继续往下运行-, 而不是在这里发送了一个消息给服务端, 在另一个地方接受消息(异步) , 也不知道 ...

  6. Wireshark使用入门

    目录 1. Wireshark介绍 1.1 客户端界面 1.2 Display Filter 的常用方法 1.3 界面上一些小TIPS 2. 使用Wireshark分析TCP三次握手过程 2.1 三次 ...

  7. mysql 创建用户, 分配权限, 删除用户

    通过create user 命令来创建用户, 有两种方式:(只介绍通过 create user 命令, 直接往user表中插入数据的方式,这里就不说了) 创建用户的同时, 指定用户可登录的主机和密码 ...

  8. tf.clip_by_value

    tf.clip_by_value(t, clip_value_min, clip_value_max, name=None) 功能:基于定义的min与max对tesor数据进行截断操作,目的是为了应对 ...

  9. NLP第一课(我也是才开始学)

    闲着无聊的时候,我就会问问自己,编程也有了五年经验了,除了增删改查,我还会什么,有一天我跳槽,去面试的时候,我能比那些年轻而且期望薪资待遇低的年轻毕业生,我有什么优势,而且我只是一个专科的机电系学生, ...

  10. 使用SolrJ(即java客户端)开发Solr。

    1.什么是SolrJ呢? 答:Solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务.开始配置schema ...