20分代码
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N=1e4+10;
const int M=2e3+10;
int a[N];
int cnt[M];
int n,m,q;
int main()
{
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++)
a[i]=0;
cnt[0]=n;
int op,x1,x2,x3;
for(int i=1;i<=q;i++)
{
scanf("%d",&op);
switch(op)
{
case 1:
{
scanf("%d%d%d",&x1,&x2,&x3);
for(int j=x1;j<=x2;j++)
{
cnt[a[j]]--;
cnt[x3]++;
a[j]=x3;
}
break;
}
case 2:
{
scanf("%d%d",&x1,&x2);
cnt[x2]+=cnt[x1];
cnt[x1]=0;
for(int j=1;j<=n;j++)
{
if(a[j]==x1)
a[j]=x2;
}
break;
}
case 3:
{
scanf("%d%d",&x1,&x2);
swap(cnt[x1],cnt[x2]);
for(int j=1;j<=n;j++)
{
if(a[j]==x1)
a[j]=x2;
else if(a[j]==x2)
a[j]=x1;
}
break;
}
case 4:
{
scanf("%d",&x1);
cout<<cnt[x1]<<endl;
break;
}
case 5:
{
int ans=-1;
int goal=-1;
for(int j=1;j<=n;j++)
{
if(cnt[j]>ans)
{
ans=cnt[j];
goal=j;
}
}
if(ans>0)
cout<<goal<<endl;
else
cout<<0<<endl;
break;
}
}
}
}
ToBeContinue
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstdio>
#include<set>
#include<map>
using namespace std;
typedef pair<pair<int,int>,int>PIII;
struct node
{
int l;
int r;
int value;
bool operator<(const node& n)const
{
return l<n.l;
}
};
const int N=1e4+10;
const int M=2e3+10;
int cnt[M];
int cnt_help[M];
priority_queue<PIII>heap;
set<int>store;
map<int,node>Map;
int Hash[M];
int n,m,q;
void init()
{
cnt[0]=n;
heap.push({{n,0},0});
store.insert(n);
Map[n]={1,n,0};
for(int i=0;i<=m;i++)
Hash[i]=i;
}
void op1(int l,int r,int x)
{
set<int>::iterator t=store.lower_bound(l);
vector<set<int>::iterator>tmp;
for(auto i=t;i!=store.end();i++)
{
int index=*i;
node&n=Map[index];
if(r<n.l||n.r<l)
break;
tmp.push_back(i);
}
vector<node>NEW;
if()
{
}
}
void op2(int x,int w)
{
}
void op3(int x,int y)
{
}
int op4(int w)
{
}
int op5()
{
}
int main()
{
scanf("%d%d%d",&n,&m,&q);
init();
int op,x1,x2,x3;
for(int i=1;i<=q;i++)
{
scanf("%d",&op);
switch(op)
{
case 1:
{
scanf("%d%d%d",&x1,&x2,&x3);
op1(x1,x2,x3);
break;
}
case 2:
{
scanf("%d%d",&x1,&x2);
op2(x1,x2);
break;
}
case 3:
{
scanf("%d%d",&x1,&x2);
op3(x1,x2);
break;
}
case 4:
{
scanf("%d",&x1);
cout<<op4(x1)<<endl;
break;
}
case 5:
{
cout<<op5()<<endl;
break;
}
}
}
}