abc094d<组合数>

题目

Binomial Coefficients
n个数中选择两个数作为组合数C(m,r)mr,使得组合数的值最大。

思路

  1. 首先选择最大的数作为m
  2. 其次,对于确定的m,要使得组合数最大,使得r接近m2即可。(即使得|aim2|最小者。

代码

点击查看代码
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
using LL = long long;

void solv()
{
    vector<int> a;
    int n, t;
    cin >> n;
    for (int i = 1; i <= n; i ++)
    {
        cin >> t;
        a.push_back(t);
    }

    sort(a.begin(), a.end());
    int tar = (a.back() + 1) / 2;
    int idx = lower_bound(a.begin(), a.end(), tar) - a.begin();
    
    int l = max(0, idx - 2);
    int r = min(n - 1, idx + 2);
    int min_delta = 2e9, min_idx = -1;
    for (int i = l; i <= r; i ++)
        if (abs(a[i] - tar) < min_delta)
        {
            min_delta = abs(a[i] - tar);
            min_idx = i;
        }

    int ans1 = a.back();
    int ans2 = a[min_idx];

    cout << ans1 << " " << ans2 << '\n';
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int T = 1;
    // cin >> T;
    while (T--)
        solv();
    return 0;
}

posted @   O2iginal  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示