这是一道比较不错的思维题吧,刚开始我以为要用结构体来对每个人的天梯赛成绩和pta成绩来进行分别排序,然后发现其实并不是这样。看了一下别人的代码发现并不是这样。
思路:
不难发现,题目中所描述的天梯赛成绩>=175,以及pta>=s(第一个例子里是90)的人是无论如何都可以接受的,所以一旦有人满足了这个条件,推荐的学生人数就加一,接下来我们要考虑的就是只有天梯赛成绩>=175的人。我们可以用一个下标为各个成绩的数组来进行判断,判断它是否有超过推荐批次。(在不考虑pta>=s的情况下,也就是pta<s时,每一批次,每一个分值的人都只能推荐一个,因为题目中描述的是严格递增)所以数值中的值就是它的批次,每当有人满足成绩>175时,批次就加一,直到超过题中给定的批次。
#include<cstdio>
using namespace std;
int main()
{
int n,k,s,t,p;
int num=0;
int a[291]={0};
scanf("%d%d%d",&n,&k,&s);
while(n--)
{
scanf("%d%d",&t,&p);
if(t>=175)
{
if(p>=s) num++;//两个成绩都满足,企业可以无条件接受
else if(a[t]<k)//如果批次还小于题目中的批次,就可以继续推荐
{
a[t]++;
num++;
}
}
}
printf("%d",num);
return 0;
}