zoukankan      html  css  js  c++  java
  • Codeforces 1290A/1291C

    题目大意:

    总共有n个人和n个数字

    n个人拍成一队,n个数字也是有顺序的

    你排在第m个位置

    按照顺序的每个人可以拿走这个序列中的第一个数字或者最后一个数字

    你可以在所有人操作开始前说服最多k个人

    让他们固定拿这个序列的第一个或者是最后一个数字

    问你在所有可能的情况中可以拿到的数字的最大值中的最小值(即,到你取得的时候,首尾两个数字你总是会取最大的那个,问这些数字中的最小值)

    ※所有没有被说服的人拿数字是随机拿的,不存在博弈论中的什么总是拿最大或最小

    解题思路:

    因为只有说服排在自己前面的人才有用

    所以可以先让 k=min(k,m-1)

    每次轮到自己时,场上还会剩下n-m+1个数字,所以先令len=n-m+1

    每次在自己前面的人里至少会有m-k-1个人是不受控制的,令rand=m-k-1

    先预处理出最后可能的答案所在区间的答案

    即取一段长度为len的区间,答案即它的左端点与右端点中的较大值

    总共会有n-len+1个区间,即m个区间,将答案存在数组dm中待调用

    然后,最多可以说服k个人,贪心可得越多人能被说服则对答案贡献更大

    又因为除了这些被说服的人外,其他排在自己前面的人没被说服的(随机的)人的操作方式是不可预判的!!!

    所以,这些被说服的人最好能先取,才能让整个局面更能被自己掌握(确信嘿嘿嘿)

    综上,就可以开始枚举这k个人里,有多少人取了这个数列的前端,有多少人取了后端

    则循环 i=0~k,i 表示有i个人取了前端

    那么,这样取的话最后答案区间就会变成 [i+1,n-i] ,总共会出现rand+1个len长度的可能答案

    又因为前面预处理了最后可能的答案

    所以最终再循环一次 j=i+1~i+1+rand

    取这些答案中的最小值mn

    所以这就是这一遍的答案

    又因为说服的那些人怎么操作是可控的

    所以最终的答案是所有mn中的最大值

    #include<bits/stdc++.h>
    using namespace std;
    int ar[3550],dm[3550];
    void solve(){
        int n,m,k,len,rand,i,j,ans=0,mn;
        cin>>n>>m>>k;
        k=min(k,m-1);
        len=n-m+1;
        rand=m-k-1;
        for(i=1;i<=n;i++){
            cin>>ar[i];
            if(i>=len)
                dm[i-len+1]=max(ar[i],ar[i-len+1]);
        }
        for(i=0;i<=k;i++){
            mn=0x3f3f3f3f;
            for(j=i+1;j<=i+1+rand;j++)
                mn=min(mn,dm[j]);
            ans=max(ans,mn);
        }
        cout<<ans<<'
    ';
    }
    int main(){
        ios::sync_with_stdio(0);
        cin.tie(0);cout.tie(0);
        int T;cin>>T;while(T--)
            solve();
        
        return 0;
    }
  • 相关阅读:
    迭代器、生成器、内置函数
    函数
    文件操作
    使用 java 做爬虫的简单例子
    关于 spring 使用 mongodb 的 mongotemplate 对象操作数据库,对象注入问题(即该对象能否正常的调用相应的CRUD方法来处理数据)
    eclipse 使用 “全局搜索” 失灵的解决方法
    使用 Qrcode 生成中间带 logo 的二维码!
    将 BufferedImage 对象图片,转成 Base64 编码给前端<img src="编码"/>展示图片用
    使用 Qrcode 生成二维码
    链接转化成二维码
  • 原文地址:https://www.cnblogs.com/stelayuri/p/12254484.html
Copyright © 2011-2022 走看看