luogu线性表刷题

今天养老了,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++;
		}
	}
}
为了自己,和那些爱你的人
原文地址:https://www.cnblogs.com/zhmlzhml/p/14367520.html