2020年2月12日 队列

林大OJ 1632 周末舞会-队列

队列的基本题目,重在理解队列的原理。

#include <bits/stdc++.h>using namespace std;queue<int>vis1,vis2;int main()
{int n,m,k,s1,s2;cin>>n>>m;cin>>k;for(int i=1;i<=n;i++)vis1.push(i);for(int i=1;i<=m;i++)vis2.push(i);for(int i=1;i<=k;i++){s1=vis1.front();vis1.pop();s2=vis2.front();vis2.pop();cout<<s1<<" "<<s2<<endl;vis1.push(s1);vis2.push(s2);}return 0;
}

林大OJ 1633 取牌游戏-队列-SET

本题注意的问题:

当剩下的牌数小于p时,也是要翻的!

例如: p=3;

还剩下的编号 为4 和5;

第1次翻:5 4;

第2次翻:4 5;

第3次翻:5 4;

也是要翻3次的,哪怕就省下1张牌了,也要翻P次!

一开始学的队列的原理,没有涉及SET的知识,学完SET以后回来用SET重新写一遍。

#include <bits/stdc++.h>using namespace std;const int N=1e5+1;
queue<int>vis;
int a[N];int main()
{int n,k,p,num=0,q=0;cin>>n>>k>>p;for(int i=1;i<=k;i++)vis.push(i);while(!vis.empty()){int tmp=vis.front();vis.pop();num++;if(num%n==0) a[q++]=tmp;if(!vis.empty())for(int i=1;i<=p;i++){int tp=vis.front();vis.pop();vis.push(tp);}}sort(a,a+k/n);for(int i=0;i<k/n;i++)cout<<a[i]<<endl;return 0;
}

林大OJ 1634 报数-队列-约瑟夫环

这题就是著名的约瑟夫问题:N个人围成一圈,第一个人从1开始报数,报数到M的人就出局,下一个人再从1开始报数,报数到M的人就出局…直到最后只剩下一个人。

#include <bits/stdc++.h>using namespace std;queue<int>q;int main()
{int n,m,t,num;cin>>n>>m;for(int i=1;i<=n;i++)q.push(i);num=0;while(q.size()>1){num++;t=q.front();q.pop();if(num%m!=0) q.push(t);}printf("%d\n",q.front());return 0;
}

林大OJ 1635 酒桌游戏-队列

用结构体存储名字与报的数,最后用约瑟夫问题的思路解决。

#include <bits/stdc++.h>using namespace std;struct sa
{int num;string name;
}p[1001];
queue<sa>q;
bool judge(int x)
{if(x%7==0) return 1;while(x){if(x%10==7) return 1;x/=10;}return 0;
}int main()
{int n,m,t;string name;cin>>n>>m>>t;for(int i=1;i<=n;i++){cin>>p[i].name;p[i].num=i;}for(int i=1;i<=n;i++)q.push(p[i]);for(int i=1;i<=m-1;i++){q.push(p[i]);q.pop();}t--;while(q.size()>1){t++;sa p=q.front();q.pop();if(!judge(t)) q.push(p);}cout<<q.front().name<<endl;return 0;
}

林大OJ 1636 / 洛谷 P2058 海港

NOIP2016普及组真题

难点:num[x]是桶排序的数组,ans是国家的数量。
1、根据num[x]==0 来判断是增加或减少一个国家。
2、每次新来的船,都先入队列,并统计国家数。
3、用刚新来船的时间和队列头部的船只时间进行比较
4、时间大于等于86400,就出队列,并计算国家数。
5、输出当前的国家数。

#include <bits/stdc++.h>using namespace std;const int N=1e5+1;
struct sa
{int t;//timeint x;//country
}s;
queue<sa>vis;
int a[N];int main()
{int n,t,k,x,ans=0;cin>>n;for(int i=1;i<=n;i++){cin>>t>>k;for(int j=1;j<=k;j++){scanf("%d",&x);vis.push({t,x});if(a[x]==0) ans++;a[x]++;}while(t-vis.front().t>=86400){s=vis.front();vis.pop();int x1=s.x;a[x1]--;if(a[x1]==0) ans--;}cout<<ans<<endl;}return 0;
}

林大OJ 1662 Blash数集-队列-set

这题和林大OJ 574 丑数有点相似,把排序的过程想清楚就行了,不用队列也能做,丑数那题就是由前面几个数生成后面的数然后升序排列,这题也可以用同样的思路做。

#include <bits/stdc++.h>using namespace std;const int N=1e5+10;
int n,p2,p3,a[N];int main()
{ios::sync_with_stdio(false);cin>>a[1]>>n;p2=1,p3=1;for(int i=2;i<=n;i++){a[i]=min(2*a[p2]+1,3*a[p3]+1);if(a[i]==2*a[p2]+1) p2++;if(a[i]==3*a[p3]+1) p3++;}cout<<a[n]<<endl;return 0;
}

林大OJ 1663 关系网络-队列

用队列实现BFS,实现最短步数的搜索。

#include <bits/stdc++.h>using namespace std;int n,beginx,endx,newx,a[101][101],vis[10001];
int dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}};
struct node
{int x,cnt;
};
queue<node>q;int main()
{ios::sync_with_stdio(false);cin>>n>>beginx>>endx;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)cin>>a[i][j];}q.push({beginx,0});while(!q.empty()){node tmp=q.front();q.pop();if(tmp.x==endx){printf("%d\n",tmp.cnt-1);break;}vis[tmp.x]=1;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(a[i][j]==1 && i==tmp.x && vis[j]==0)q.push({j,tmp.cnt+1});}}}return 0;
}

2020年2月12日 林大OJ习题 队列相关推荐

  1. 2020年1月2日 林大OJ习题 暴力枚举

    2020年1月2日 暴力枚举 林大OJ 8 二倍的问题 #include <bits/stdc++.h>using namespace std;int main() {int n,i,j, ...

  2. 2020年2月17日 林大OJ习题 map

    2020年2月17日 map map相当于一种特殊的数组.普通的数组是从数到数或字符的映射,即int或char类型的数组,下标都是数字.而map则是任意数据类型间的映射.借助map能完成更多类型的插入 ...

  3. 2020年2月18日 林大OJ习题 set

    2020年2月18日 set set相当于一个自动排序+自动去重的数组,即插入时会自动排序,插入重复元素时不会变化.set的元素访问需要用到迭代器,其原理可以类比普通循环中的循环变量i. 林大OJ 7 ...

  4. 弹射王服务器正在维护中,【 合服公告】《弹射王》2020年11月12日

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 各位亲爱的蛋挞, <弹射王>IOS版将于2020年11月12日早上7:00-09:30进行合服维护. 合服: 333&335 341& ...

  5. 2020年10月12日斗鱼虎牙合并的瓜

    斗鱼.企鹅电竞.虎牙的瓜 前言 今天看知乎的时候 ,看到了斗鱼被转让企鹅电竞业务并退市,斗鱼.虎牙将按 1:1 合并,直播行业将迎来哪些变化?.好奇之下看了看.里面的知乎网友说了许多有意思的观点.可惜 ...

  6. 林大OJ习题 2020年1月11日

    3个数的运算 #include <stdio.h> #include <stdlib.h>int main() {long a,b,c,d;while(scanf(" ...

  7. 林大OJ习题 2020年1月7日

    合并字符串 (也可以直接使用函数 strcat()) #include <stdio.h> #include <stdlib.h> #include <string.h& ...

  8. 林大OJ习题 2020年1月5日

    二分查找 #include <iostream> #include <bits/stdc++.h> using namespace std; int a[1000000]; i ...

  9. 林大OJ习题 2020年1月14日

    n个数求和 #include <stdio.h> #include <stdlib.h>int main() {long long sum,n,i;while(scanf(&q ...

最新文章

  1. Google首席科学家Peyman 《计算成像去噪进展》斯坦福演讲报告,附视频与Slides
  2. [转载]为什么mysql用的是B+树?
  3. oppo手机工程模式清除数据需要密码_「MIUI玩机技巧27」如何快速查询和清除电池信息...
  4. TO C AND TO B IN TERMS OF CUSTOMER
  5. PHP的十个高级技巧
  6. 该如何高效实用Kotlin?看这一篇就够了!
  7. gradle安装与配置_gradle相关安装
  8. python 面试必问,不会真的要打脸~
  9. HTML5语音识别(已被抛弃)
  10. iso硬盘安装 凤凰os_phoenix os安装全教程 凤凰系统进不去安装注意事项
  11. 关于小米笔记本Pro内部风扇异响问题解决方法
  12. mcinabox运行库下载_mcinabox运行库官方版下载_mcinabox运行库 v20200328官方版 - Win7旗舰版...
  13. Attrbute value muster
  14. Qt + libVlc
  15. mysql 大写 小写_MySQL大写和小写问题
  16. MySQL GIS功能介绍
  17. linux samba 实验 Windows无法访问\\ 请检查名称的拼写。否则,网络可能有问题。 就一个小问题!!已解决!!!
  18. Verilog HDL 实验题
  19. 与其苟延残喘,不如纵情燃烧
  20. 【系统之家首发】10月最新GhostWin7_SP1旗舰版(64位)电脑公司装机版v2011.10

热门文章

  1. 圣路易斯大学计算机科学专业,圣路易斯华盛顿大学计算机科学研究生专业排名最新...
  2. [译] 用 30 分钟建立一个网站的方式来学习 Bootstrap 4
  3. Docker 拉取镜像及标签 pull | tag
  4. 从“以旧换新”送手机看年礼消费新风尚
  5. 什么是数值转换以及数值转换的方法
  6. vue 权限管理 动态路由(6)
  7. 【UE4】4.26安卓打包流程
  8. 两种微型水泵介绍——微型电磁泵和微型隔膜泵
  9. 电力电子器件的分类以及IGBT的相关介绍
  10. 这些黑客故事你尽管听,不奇葩算我输!