3298. 期末预测之最佳阈值

摘要
Title: 3298. 期末预测之最佳阈值
Tag: 前缀和、思维题
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

3298. 期末预测之最佳阈值

  • 题意

    见原题

  • 思路

    统计某个数前面有多少0,后面有多少1即可

    ps: 可能会出现某个数既有0状态也有1状态的情况,那么我们可以把1的排前面,也就是从大到小
    这样可以保证第一个1状态的这个数,得到的结果是最大的

  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    '''
    Author: NEFU AB-IN
    Date: 2022-03-17 17:47:16
    FilePath: \ACM\Acwing\3298.py
    LastEditTime: 2022-03-17 17:47:17
    '''
    class Node():
    def __init__(self, grade=0, flag=0):
    self.grade = grade
    self.flag = flag


    n = int(input())
    nums = [Node() for _ in range(n + 1)]

    for i in range(1, n + 1):
    nums[i].grade, nums[i].flag = map(int, input().split())

    nums.sort(key = lambda x : (x.grade, -x.flag))
    ans = 0
    maxn = 0

    for i in range(1, n + 1):
    nums[i].flag += nums[i - 1].flag

    cnt = 0
    for i in range(1, n + 1):
    sum = (i - 1) - (nums[i - 1].flag - nums[0].flag) # 加0
    sum += nums[n].flag - nums[i - 1].flag #加1
    if maxn <= sum:
    maxn = sum
    ans = nums[i].grade
    print(ans)
使用搜索:谷歌必应百度