求问两份代码的区别
  • 板块P1918 保龄球
  • 楼主Yaixy
  • 当前回复22
  • 已保存回复22
  • 发布时间2020/9/13 21:46
  • 上次更新2023/11/5 13:13:22
查看原帖
求问两份代码的区别
300283
Yaixy楼主2020/9/13 21:46

RT

代码1:

#include<bits/stdc++.h>
using namespace std;
struct node{
	long long xx,yy;
}a[5000005];
bool flag;
long long i,n,m,x,mid,l,r;
bool cmp(node x,node y)
{
	return x.xx<y.xx;
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){cin>>a[i].xx;a[i].yy=i;}
	sort(a+1,a+1+n,cmp);cin>>m;
	while(m--)
	 {
	    flag=false;cin>>x;
		l=1;r=n;
		while(l<=r)
		 {
		 	mid=(l+r)/2;
		 	if(a[mid].xx==x){cout<<a[mid].yy<<endl;flag=true;break;}
		 	if(x<a[mid].xx) r=mid-1;
		 	else l=mid+1;
		 }
		if(!flag) cout<<0<<endl;
	 }
	return 0;
}

代码2:

#include<bits/stdc++.h>
using namespace std;
struct node
{
	long long xx,yy;
} a[5000005];
bool flag;
long long i,n,m,x,mid;
bool cmp(node x,node y)
{
	return x.xx<y.xx;
}
void search(long long l,long long r)
{
	if(l>r)
	{
		cout<<0<<endl;
		return;
	}
	if(flag) return;
	mid=(l+r)/2;
	if(a[mid].xx==x)
	{
		cout<<a[mid].yy<<endl;
		flag=true;
		return;
	}
	if(a[mid].xx<x) search(mid+1,r);
	if(a[mid].xx>x) search(l,mid-1);
}
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		cin>>a[i].xx;
		a[i].yy=i;
	}
	sort(a+1,a+n+1,cmp);
	cin>>m;
	while(m--)
	{
		flag=false;
		cin>>x;
		search(1,n);
	}
	return 0;
}

我觉得两份代码基本上没有区别啊,但是评测出来却是第1份100,第2份10分,求问各位有什么两份代码区别啊qwq

2020/9/13 21:46
加载中...