求助 NOIp2012 PJ 初赛 第27题
查看原帖
求助 NOIp2012 PJ 初赛 第27题
372299
超级玛丽王子楼主2020/9/29 22:00

RT,我怀疑题面和答案冲突了。原题面:

(坐标统计)输入n个整点在平面上的坐标。对于每个点,可以控制所有位于它左下方的点(即x、y坐标都比它小),它可以控制的点的数目称为“战斗力”。依次输出每个点的战斗力,最后输出战斗力最高的点的编号(如果若干个点的战斗力并列最高,输出其中最大的编号)。

#include <iostream>
using namespace std;
const int SIZE =100;
int x[SIZE],y[SIZE],f[SIZE];
int n,i,j,max_f,ans;
int main()
{
  cin>>n;
  for(i=1;i<=n;i++) cin>>x[i]>>y[i];
  max_f=0;
  for(i=1;i<=n;i++)
  {
  	f[i]= [  ①   ];
  	for(j=1;j<=n;j++)
  	{
  		if(x[j]<x[i] && [   ②    ])
  		[      ③      ] ;
  	}
  	if( [     ④       ])
  	{
  		max_f=f[i];
  		[    ⑤    ];	
  	}
  }
  for(i=1;i<=n;i++) cout<<f[i]<<endl;
  cout<<ans<<endl;
  return 0;	
}

原答案:

0
y[j]<y[i]
f[i]=f[i]+1 / ++f[i] / f[i]++
(i>1)&&(f[i]>f[i-1])
ans=max_f

我认为第四和第五个空跟题意矛盾了。第四个空答案的意思是“如果这个点的战斗力比上一个点大”,而题意要求的应当是“如果这个点的战斗力大于等于已知的最大战斗力”,即 f[i]>=max_f;第五个空答案的意思是“目前为止战斗力的max”,而题意要求的应当是“目前为止战斗力最大的点的编号”,即 ans=i

求大佬们帮忙解释!%%%

2020/9/29 22:00
加载中...