mxqz 过不去第八个点
  • 板块CF670C Cinema
  • 楼主zplqwq
  • 当前回复18
  • 已保存回复18
  • 发布时间2021/10/11 11:16
  • 上次更新2023/11/4 04:05:32
查看原帖
mxqz 过不去第八个点
369904
zplqwq楼主2021/10/11 11:16
#include<bits/stdc++.h>
using namespace std;
#define ll long long
inline double DoubleRead()
{
    long long s=0,w=1,k=0,n=0,m=0;
    char ch=getchar();
    while(ch<'0' ||ch>'9')
    {
        if(ch ='-') w=-1;
        ch=getchar();
    }
    while((ch>='0' && ch<='9') || ch=='.')
    {
        if(ch=='.')
            n=1;
        else if(n==0)
            s=s*10+ch-'0';
           else k=k*10+ch-'0',m++;
        ch=getchar();
    }
    return (pow(0.1,m)*k+s)*w;
}
inline int read()
{
	int s=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')
			f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		s=s*10+ch-'0';
		ch=getchar();
	}
	return s*f;
}
// by : zplqwq
const int N=20010;
int n;
int a[N];
int m;
int x[N];
int sz=0;
int y[N];
int b[N]; 
int all[N];
int cnt[N];
void discrete()
{
	sort(all+1,all+1+sz);
	for(int i=1;i<=sz;i++)
	{
		if(i==1 or all[i]!=all[i-1])
		{
			b[++m]=all[i];
		}
	}
}
int query(int x)
{
	return lower_bound(b+1,b+sz+1,x)-b;
}
signed main()
{
	n=read();
	for(int i=1;i<=n;i++)
	{
		a[i]=read();
		all[++sz]=a[i];
	}
	m=read();
	for(int i=1;i<=m;i++)
	{
		x[i]=read();
		all[++sz]=x[i];
	}
	for(int i=1;i<=m;i++)
	{
		y[i]=read();
		all[++sz]=y[i]; 
	}
	discrete();
	for(int i=1;i<=n;i++)
	{
		cnt[query(all[i])]++;
	}
	int ans=0;
	int tmp=0;
	int id=1;
	for(int i=1;i<=m;i++)
	{
		int ansx=cnt[query(x[i])];
		int ansy=cnt[query(y[i])];
		if(ansx>ans or ansx==ans and ansy>tmp)
		{
			id=i;
			ans=ansx;
			tmp=ansy;
		//	cout<<ansx<<" "<<ansy<<endl;
		}
	}
	cout<<id<<endl;
	return 0;
}


思路就是离散化。

2021/10/11 11:16
加载中...