1
2026-04-29 21:18:36
发布于:浙江
@prediction
开始是这么写的:
#include <iostream>
#include <string>
#include <vector>
template<typename T>
class deque{
private:
std::vector<T> v;
public:
void init(int k){
}bool full(){
return false;
}bool empty(){
return v.empty();
}void push_front(T val){
v.insert(v.begin(), val);
}void pop_front(){
if(empty())return ;
v.erase(v.begin());
}void push_back(T val){
v.push_back(val);
}void pop_back(){
if(empty())return ;
v.pop_back();
}int size(){
return v.size();
}T get_front(){
return v.front();
}T get_back(){
return v.back();
}
};
const int MAXM=1e6;
deque<int> dq[MAXM];
int main(){
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int q;
std::cin >> q;
while(q--){
std::string op;
std::cin >> op;
if(op=="push_back"){
int a,x;
std::cin >> a >> x;
dq[a].push_back(x);
}else if(op=="pop_back"){
int a;
std::cin >> a;
dq[a].pop_back();
}else if(op=="push_front"){
int a,x;
std::cin >> a >> x;
dq[a].push_front(x);
}else if(op=="pop_front"){
int a;
std::cin >> a;
dq[a].pop_front();
}else if(op=="size"){
int a;
std::cin >> a;
std::cout << dq[a].size() << '\n';
}else if(op=="front"){
int a;
std::cin >> a;
if(!dq[a].empty()){
std::cout << dq[a].get_front() << '\n';
}
}else if(op=="back"){
int a;
std::cin >> a;
if(!dq[a].empty()){
std::cout << dq[a].get_back() << '\n';
}
}
}
return 0;
}
后面被洛谷数据搏杀了,用 AI 支了个招
#include <iostream>
#include <string>
#include <vector>
template<typename T>
class deque{
private:
std::vector<T> l,r;
public:
void init(int k){
}bool full(){
return false;
}bool empty(){
return l.empty()&&r.empty();
}void push_front(T val){
l.push_back(val);
}void pop_front(){
if(empty())return ;
if(l.empty()){
while(!r.empty()){
l.push_back(r.back());
r.pop_back();
}
}
l.pop_back();
}void push_back(T val){
r.push_back(val);
}void pop_back(){
if(empty())return ;
if(r.empty()){
while(!l.empty()){
r.push_back(l.back());
l.pop_back();
}
}
r.pop_back();
}int size(){
return l.size()+r.size();
}T get_front(){
if(!l.empty())return l.back();
return r.front();
}T get_back(){
if(!r.empty())return r.back();
return l.front();
}
};
const int MAXM=1000001;
deque<int> dq[MAXM];
int main(){
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int q;
std::cin >> q;
while(q--){
std::string op;
std::cin >> op;
if(op=="push_back"){
int a,x;
std::cin >> a >> x;
dq[a].push_back(x);
}else if(op=="pop_back"){
int a;
std::cin >> a;
dq[a].pop_back();
}else if(op=="push_front"){
int a,x;
std::cin >> a >> x;
dq[a].push_front(x);
}else if(op=="pop_front"){
int a;
std::cin >> a;
dq[a].pop_front();
}else if(op=="size"){
int a;
std::cin >> a;
std::cout << dq[a].size() << '\n';
}else if(op=="front"){
int a;
std::cin >> a;
if(!dq[a].empty()){
std::cout << dq[a].get_front() << '\n';
}
}else if(op=="back"){
int a;
std::cin >> a;
if(!dq[a].empty()){
std::cout << dq[a].get_back() << '\n';
}
}
}
return 0;
}
修好了(
全部评论 3
- 置顶
如果你直接用
deque你会被洛谷数据搏杀昨天 来自 浙江
0所以说手写的很重要知道吧(
昨天 来自 浙江
0明白了,我之后也写写看
17小时前 来自 浙江
0用两个 vector 数组维护,一个是队列前段倒着存,还有一个是队列后端正着存
15小时前 来自 浙江
0
这是模拟啥
昨天 来自 上海
0双端队列
昨天 来自 浙江
0好的没听过(
昨天 来自 上海
0橙题(
昨天 来自 浙江
0
原本说直接写一个循环数组的,但是被洛谷模版的 hack 数据搏杀了。
昨天 来自 浙江
0然后让 AI 支了个招()()()



昨天 来自 浙江
0



















有帮助,赞一个