今天养老了,stl简单题,,,就多看看别人大佬的思路吧
p3613
这个题用的是一个比较巧妙的方法,就是参考dl的博客,,,因为数据范围只有1e5,所以你可以通过第一维*1e5+第二维来表示,这样就用一个map就可
#include <bits/stdc++.h>
using namespace std;
//现在的过程就是,简单题处理细节,难的题就学习思路
map<long long,long long> m;
int n,q;
int main(){
cin>>n>>q;
while(q--){
int t;
cin>>t;
if(t==1){
long long a,b,c;
cin>>a>>b>>c;
m[a*100000+b]=c;
}
else{
long long a,b;
cin>>a>>b;
cout<<m[a*100000+b]<<endl;
}
}
return 0;
}
还有一个你可以用结构体(结构体数组嵌套两个vector)
num[a].v1.push_back(b)
num[a].v2.push_back(c)
建立一个这种映射
约瑟夫环
重刷约瑟夫,用queue
#include<iostream>
#include<queue>
using namespace std;
queue<int> q;
int n;
int k;
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
q.push(i);
}
int num=1;
while(!q.empty()){
if(num==k){
int x=q.front();
q.pop();
cout<<x;
num=1;
if(q.size()!=0){
cout<<" ";
}
}
else{
int x=q.front();
q.pop();
q.push(x);
num++;
}
}
}