【2018百度之星初赛(A)】1002 度度熊学队列

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6375

Knowledge Point:

  STL - map:https://www.cnblogs.com/liubilan/p/9458765.html

  STL - deque:https://www.cnblogs.com/liubilan/p/9461141.html

这道题主要考的是STL容器的使用,没有写出来只说明了一个道理:

   STL很重要啊!目前你用到的没用到的你都得了解并且会使用啊!!

这题主要使用了map, deque两种容器,map是为了防止超内存,因为map的特性是需要就自动建立新的节点,否则不会开辟多余的空间;

附代码:

 1 #include<iostream>
 2 #include<map>
 3 #include<deque>
 4 using namespace std;
 5
 6 int n, q;
 7 map<int, deque<int> > imap;
 8
 9 void read(int &x){
10     char ch = getchar();x = 0;
11     for (; ch < ‘0‘ || ch > ‘9‘; ch = getchar());
12     for (; ch >=‘0‘ && ch <= ‘9‘; ch = getchar()) x = x * 10 + ch - ‘0‘;
13 }
14
15 int main()
16 {
17     int option, u, v, w, val;
18     while(cin>>n>>q)
19     {
20         imap.clear();
21         while(q--) {
22             read(option); read(u); read(w);
23
24             if(option == 1) {
25                 read(val);
26                 if(!w) imap[u].push_front(val);
27                 else imap[u].push_back(val);
28             }
29             else if(option == 2) {
30                 if(imap[u].empty()) {
31                     cout<<-1<<endl;
32                     continue;
33                 }
34                 if(!w) {
35                     cout<<imap[u].front()<<endl;
36                     imap[u].pop_front();
37                 }
38                 else {
39                     cout<<imap[u].back()<<endl;
40                     imap[u].pop_back();
41                 }
42             }
43             else if(option == 3) {
44                 read(v);
45                 if(!v)        //v接在u后
46                     imap[u].insert(imap[u].end(), imap[w].begin(), imap[w].end());
47                 else        //v翻转后接在u后
48                     imap[u].insert(imap[u].end(), imap[w].rbegin(), imap[w].rend());
49                 imap[w].clear();
50             }
51         }
52     }
53
54     return 0;
55 }

原文地址:https://www.cnblogs.com/liubilan/p/9461107.html

时间: 2024-10-03 17:55:02

【2018百度之星初赛(A)】1002 度度熊学队列的相关文章

2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-inverse #navbar > .navbar-nav > li > a:hover, .navbar-inverse #navbar > .navbar-nav > li > a:focus { background-image: none; background-color:

2019 年百度之星 初赛一 1002 Game

传送门 Problem Description 度度熊在玩一个好玩的游戏.游戏的主人公站在一根数轴上,他可以在数轴上任意移动,对于每次移动,他可以选择往左或往右走一格或两格.现在他要依次完成 n 个任务,对于任务 i,只要他处于区间 [ai,bi] 上,就算完成了任务.度度熊想知道,为了完成所有的任务,最少需要移动多少次?度度熊可以任意选择初始位置. Input 第一行一个整数 T (1≤T≤10) 表示数据组数.对于每组数据,第一行一个整数 n (1≤n≤1000) 表示任务数.接下来 n 行

2018百度之星初赛B - A,D,F

总结:这一次的百度之星之行到这里也就结束了,充分的认识到了自己的不足啊...果然还是做的题太少,,见识的题型也还太少,对于STL的掌握还是不够到位啊!!(STL大法是真的好,建议大家认认真真的好好学学),这一次在一群大佬中被狂虐,下来之后还是继续刷题吧,希望明年继续加油!!!(共勉,加油!) A. degree Problem Description 度度熊最近似乎在研究图论.给定一个有 NN 个点 (vertex) 以及 MM 条边 (edge) 的无向简单图 (undirected simp

2018 百度之星 初赛 第六题

三原色图 Accepts: 281 Submissions: 1261 Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Problem Description 度度熊有一张 nn 个点 mm 条边的无向图,所有点按照 1,2,\cdots,n1,2,?,n 标号,每条边有一个正整数权值以及一种色光三原色红.绿.蓝之一的颜色. 现在度度熊想选出恰好 kk 条边,满足只用这 kk 条

2017&quot;百度之星&quot;程序设计大赛 - 资格赛-度度熊与邪恶大魔王(dp+后缀最小值)

度度熊与邪恶大魔王 思路:由于防御和血量的范围很小,所以暴力枚举出对于每种防御造成的每种伤害所需的最小花费,最后只需在伤害大于等于血量的情况下再找到最小花费(这个只需要后缀最小值预处理一下就可以了) 状态:dp[i][j]表示对防御为i的怪兽造成伤害为j的所需最小晶石花费. 状态转移方程:dp[i][j]=min(dp[i][j],dp[i][j-t])(t表示每种技能造成的伤害,t=p-i,t≥0) 代码1: #include<bits/stdc++.h> using namespace s

2017&quot;百度之星&quot;程序设计大赛 - 资格赛 度度熊的王国战略

度度熊的王国战略 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族. 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士. 所以这一场战争,将会十分艰难. 为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦族. 第一步就是应该使得哗啦啦族内部不能同心齐力,需要内部有间隙. 哗啦啦族一共有n个将领,他们一共有m个强关系,摧毁每一个强关系都需要一定的代价. 现在度度熊命令你需要摧毁一些强关系,使得内部的将领,不能通过这些强关系,连成一个完整的连通块,以保证战争的顺利进行. 请

hdu 6375 度度熊学队列 (链表模拟)

度度熊正在学习双端队列,他对其翻转和合并产生了很大的兴趣. 初始时有 N 个空的双端队列(编号为 1 到 N ),你要支持度度熊的 Q 次操作. ①1 u w val 在编号为 u 的队列里加入一个权值为 val 的元素.(w=0 表示加在最前面,w=1 表示加在最后面). ②2 u w 询问编号为 u 的队列里的某个元素并删除它.( w=0 表示询问并操作最前面的元素,w=1 表示最后面) ③3 u v w 把编号为 v 的队列“接在”编号为 u 的队列的最后面.w=0 表示顺序接(队列 v 

2018 “百度之星”程序设计大赛 - 初赛(A)度度熊学队列 list rope

c++ list使用 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cmath> 4 #include <cstring> 5 #include <time.h> 6 #include <string> 7 #include <set> 8 #include <map> 9 #include <list> 10 #include <e

百度之星2017资格赛1003 度度熊与邪恶大魔王

思路: 真是菜的不行. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 const int INF = 0x3f3f3f3f; 7 int dp[11][1001], A[100005], B[100005], K[1005], P[1005], n, m; 8 9 int main() 10 { 11 while (scanf(&