无情UNAC
查看原帖
无情UNAC
205782
R浩轩泽Anmicius楼主2020/8/14 10:11

蒟蒻刚接触离散化,代码如下

#pragma GCC optimize(2)
#include<iostream> 
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
#define re register int
#define lei_yu main
const int N=2e5+5;
int n,m,cnt,lan[N],cinev[N],cines[N],disc[N],ans_min,ans;
//cinema_voice cinema_subtitle discretization存储离散化前的原数据 
vector<int>f;
struct Languages{
	int tot;
	int num;
}Rey[N];
bool cmp(Languages a,Languages b)
{
	return a.tot>b.tot;
}
inline int Yao_Juntao(int x)
{
	return lower_bound(disc+1,disc+cnt+1,x)-disc;
}
int lei_yu()
{
	ios::sync_with_stdio(false);
	memset(Rey,0,sizeof(Rey));
	cin>>n;
	for(re i=1;i<=n;++i)
	{
		cin>>lan[i];
		disc[i]=lan[i];
	}
	cin>>m;
	for(re i=1;i<=m;++i)
	cin>>cinev[i];
	for(re i=1;i<=m;++i) 
	cin>>cines[i];
	sort(disc+1,disc+n+1);
	cnt=unique(disc+1,disc+n+1)-disc-1;
	for(re i=1;i<=n;++i)
	{
		lan[i]=Yao_Juntao(lan[i]);
		Rey[lan[i]].num=lan[i];
		++Rey[lan[i]].tot;
	}
	sort(Rey+1,Rey+cnt+1,cmp);
	for(re i=1;i<=m;++i)
	{
		cinev[i]=Yao_Juntao(cinev[i]);
		cines[i]=Yao_Juntao(cines[i]);
	}
	bool flag=false;
	for(re i=1;i<=cnt;++i)
	{
		for(re j=1;j<=m;++j)
		if(Rey[i].num==cinev[j])
		{
			f.push_back(j);
			flag=true;
		}
		if(flag)break;
	}
	ans_min=cnt;
	for(re i=0;i<f.size();++i)
	for(re j=1;j<=ans_min;++j)
	if(Rey[j].num==cines[f[i]])
	{
		ans_min=j;
		ans=f[i];
		break;
	}
	cout<<ans<<'\n';
	return 0;
}

dalao帮帮我

2020/8/14 10:11
加载中...