CCF 202012-2 期末预测之最佳阈值(C++)岛屿加sort结构体

image

将阈值想象成水,安全系数想象成岛屿,从一开始阈值最低,慢慢升高,从低往高淹没岛屿,当岛屿的result为1,淹没扣分,result为0,淹没加分,寻找最佳阈值,使得分数最高。

需要注意的:

  1. 使用了结构体将result和y绑定在一起,易于之后的sort排序
  2. sort自定义排序
  3. 淹没岛屿时要淹没所有相同y值的岛屿
#include<iostream>
#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int m;
struct stu {
    int y;
    int result;
}cl[100005];

bool cmp(stu a, stu b){
    return a.y < b.y;
}

int main()
{
    cin >> m;
    int last = 0;
    for (int i = 0; i < m; i++){
        scanf("%d %d", &cl[i].y, &cl[i].result);
        last += cl[i].result;
    }
    sort(cl, cl+m, cmp);
    int nice = cl[0].y;
    int ant = last;
    for (int i = 0; i < m-1; i++){
        if (cl[i].result==1){
            ant--;
        }else if(cl[i].result==0){
            ant++;
        }
	//淹没所有相同y值的岛屿
        if (cl[i].y==cl[i+1].y) continue;
        if (ant >= last){
            last = ant;
            nice = cl[i+1].y;
        }
    }
    cout << nice;
    return 0;
}

posted @ 2022-08-28 19:41  白缺  阅读(49)  评论(0编辑  收藏  举报