洛谷P9050《 Sumy》详细题解

目录

一.运用的代码

二.思路详细讲解

三.代码辅助思考


题目传送门

一.运用的代码

        这道题的主要思想是二分,先把二分模板提供给大家(相信大家已经不会看我这个蒟蒻发的模板了)

while(l<=r){
		mid=(l+r)/2;//取中间值
		if(check(mid)){//check函数要自己写哦~
	 		r=mid-1;//缩小寻找范围-------|
		}else{//                        |二者可互换位置
			l=mid+1;//缩小寻找范围,too__|
		}
	}

二.思路详细讲解

        本题是一个类似于“大鱼吃小鱼,小鱼吃虾米,虾米吃NOI”的题,一条鱼有三种属性(体重,原位置,是否能作为活到最后的鱼),所以我们需要定义一个结构体

​
struct node{
	int kg;//鱼的体重
	int id;//排序前的位置
	char TN;//能否作为活到最后的鱼
};

​

大家肯定知道二分基础是排序,而题目要求我们按原顺序输出,所以我们需要写两个cmp函数,一个对鱼的体重排序,另一个对fi

你可能感兴趣的:(算法,c++)