CF-1291C:Mind Control (优雅地暴力决策)

题目

思路

数据量较短,可以枚举。
题目中存在两种决策,且最后答案只取决于数组左边选了多少人,右边选了多少人(根据这个进行枚举)

  1. 选择可以劝说的人,如何进行决策选择
  2. 对于无法劝说的人,如何进行选择

这样,我们使用两个for循环来嵌套的枚举所有可能的组合形式,这样答案
∑ i = 0 k m a x ( 决 策 可 控 制 的 人 ) { ∑ j = 0 m − 1 − i m i n ( 决 策 不 可 控 制 的 人 ) } \sum_{i=0}^{k}max(决策可控制的人)\left \{ \sum_{j=0}^{m-1-i}min(决策不可控制的人) \right \} i=0kmax(){j=0m1imin()}

代码

void solve() {
        int t;
        cin >> t;
        while (t--) {
            int n, m, k;
            cin >> n >> m >> k;
            vector<int> a(n, 0);
            for (int i = 0; i < n; i++) cin >> a[i];
            int cnt = 0, i = 0, j = n - 1;
            int len = min(k, m - 1);
            int res = INT_MIN;
            for (int left = 0; left <= len;left++){//先选最外层的组合,再选最内层的组合
                int right=len-left;
                int ans=INT_MAX;
                for(int l=0;l<=m-1-len;l++){
                    int r=m-1-len-l;
                    ans=min(ans,max(a[l+left],a[n-1-right-r]));
                }
                res=max(res,ans);
            }
            cout<<res<<endl;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值