Mind Control(暴力+枚举)
Problem - 1291C - Codeforces
你和你的n-1个朋友找到了一个整数阵列a1,a2,...,an。你们决定以如下方式分享它。你们中的n个人都按特定的顺序站成一排。每分钟,排在最前面的人选择数组中的第一个或最后一个元素,把它取出来,并留给自己。然后他离开队伍,下一个排队的人继续这个过程。
你现在站在队伍中的第m个位置。在这个过程开始之前,你可以在队伍中最多选择k个不同的人,并说服他们在轮到自己的时候总是取走阵列中的第一个或最后一个元素(每个人都有自己的选择,不一定所有的人都一样),不管这些元素本身是什么。一旦这个过程开始,你就不能再劝说更多的人,也不能改变你已经劝说过的人的选择。
假设你是以最佳方式做选择。最大的整数x是多少,使得无论你没有选择控制的朋友的选择是什么,你将从数组中取出的元素将大于或等于x?
请注意,你不控制的朋友可以任意选择,他们不一定会取最大的元素。
输入
输入由多个测试案例组成。第一行包含一个整数t(1≤t≤1000)--测试案例的数量。测试用例的描述如下。
每个测试案例的第一行包含三个空格分隔的整数n,m和k(1≤m≤n≤3500,0≤k≤n-1)--数组中的元素数量,你在队伍中的位置和你能固定的选择的人数。
每个测试案例的第二行包含n个正整数a1,a2,...,an(1≤ai≤109)--数组的元素。
保证所有测试案例的n之和不超过3500。
输出
对于每个测试案例,打印出最大的整数x,这样你就能保证至少得到x。
例子
inputCopy
4
6 4 2
2 9 2 3 8 5
4 4 1
2 13 60 4
4 1 3
1 2 2 1
2 2 0
1 2
输出拷贝
8
4
1
1
注意
在第一个测试案例中,最佳策略是强迫第一个人拿最后一个元素,第二个人拿第一个元素。
第一个人将采取最后一个元素(5),因为他或她是被你强迫采取最后一个元素的。在这个回合之后,剩下的数组将是[2,9,2,3,8]。
第二个人将拿第一个元素(2),因为他或她被你强迫拿第一个元素。在这个回合之后,剩下的数组将是[9,2,3,8]。
如果第三个人选择了第一个元素(9),那么轮到你时,剩下的数组将是[2,3,8],你将取8(最后一个元素)。
如果第三个人选择拿走最后一个元素(8),那么轮到你时,剩余的数组将是[9,2,3],你将拿走9(第一个元素)。
因此,这个策略保证最后至少有8。我们可以证明,没有任何策略能保证最后至少得到9。因此,答案是8。
在第二个测试案例中,一个最佳策略是强迫第一个人拿第一个元素。那么,在最坏的情况下,第二个和第三个人都会拿走第一个元素:你最终会得到4。
题意:给你n个数,n个人挑,每个人可以挑第一个或最后一个,并拿走,你第m个挑,但是你可以决定前k个人的挑法,最优挑法下求你能挑到的最大值一定大于多少
题解:枚举左边界与右边界,前i个人挑左边界,那么另外(k-i)个人就挑有边界,但是m可能大于k导致还要再挑(m - k -1)个不去确定的,再次枚举(m - k - 1)个人在左右边界的所有情况,找其中最大值的最小值,再找k种情况最优解的最大值
#include<iostream>
#include<algorithm>
using namespace std;
int a[4000];
int main()
{int t;scanf("%d",&t);while(t--){int n,m,k;scanf("%d%d%d",&n,&m,&k);for(int i = 1; i <= n; i++)scanf("%d",&a[i]);k = min(m - 1,k);int ans = 0;for(int i = 0; i <= k; i++){int l = i + 1,r = n - k +i;int c = 1e9;for(int j = 0; j <= m - k -1; j++){c = min(c,max(a[l+j],a[r - (m-k-1)+j]));}ans = max(ans,c);}printf("%d\n",ans);}
}
Mind Control(暴力+枚举)相关推荐
- POJ 3174 暴力枚举
思路: 暴力枚举三个点 判一判 搞定 (x1*y1=x2*y2) x1.y1.x2.y2为他们两两的差 //By SiriusRen #include <cstdio> using nam ...
- codeforces数学1600day6[CodeForces - 1029C多区间交+枚举,CodeForces 992C[数学公式推导],CodeForces 992B[质因数分解+暴力枚举]]
A - Maximal Intersection CodeForces - 1029C 题目大意:就是给你n个区间,这n个区间有公共的区间长度为x,现在叫你从这n个区间中删掉一个使得x最大化. 解题思 ...
- 最大字段和 冲出暴力枚举
这篇解题报告是对我最近一些题的总结,里面的代码都是我解题,优化,再优化的过程的记录,记录了自己对算法的完善与优化思路,还有对编程哲学的理解:do it,do it well. 很感谢孙老师您,让自己可 ...
- hdu 4587 TWO NODES 暴力枚举+tarjan
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 题意是拿掉两个点 求最多可以把整个图分成几个联通块 注意到有一个模板是可以通过找割点来快速求出 ...
- 一道暴力枚举题Win32版本示例
来看一个问题:该问题的解法是 暴力枚举:这大概是ACM方面的:名称叫火柴棒等式: 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴棍拼出的整数( ...
- C. Divisibility by Eight【暴力枚举】
暴力枚举即可.枚举1位这种情况,枚举2位这种情况,枚举3位这种情况. 3位满足足以,其他的4位,5位...都包含1000必定满足. #include<bits/stdc++.h> usin ...
- YBTOJ:灯光控制(贪心)(公倍数)(暴力枚举)
文章目录 题目描述 解析 代码 题目描述 解析 没有想出来 首先可以确定开关要么开一次,要么不动,其他都和这俩是等价的 一开始最先想到的就是贪心的方法,每个开关遍历,如果按下会使答案变好就按下. 但是 ...
- array专题2---理解暴力枚举与动态规划
746 Min Cost Climbing Stairs 一直以后对暴力枚举(又称:深度优先搜索)和动态规划不太理解,不能明白个中区别,更别说贪心.今天做这道题目的时候有点心得. 思路一:看到题目,直 ...
- 【POJ - 2965】The Pilots Brothers' refrigerator(暴力枚举,思维)
题干: The game "The Pilots Brothers: following the stripy elephant" has a quest where a play ...
最新文章
- 密恐警告:超2000万张,全球最大的人眼图像数据集开源了
- 企业过快移向MBaaS很危险
- Leetcode 349. 两个数组的交集 解题思路及C++实现
- 【译】IPFS — The Permanent, Distributed Web
- Hyper Text Transfer Protocol(超文本传输协议)
- 作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)
- 谁是“顶会狂魔”?周明、张潼等上榜,清华第四,北大第六 | 2018 ML和NLP顶会论文统计出炉...
- 360再回应Citron财务造假 双方或将升到法律层面
- Python针对Excel数据的处理(部分)
- Tecplot自定义变量
- Github优秀Android开源项目,值得引用与学习(注意!里面有巨图! )
- 智能照明控制系统在城市夜景照明工程中的应用
- 7-1 计算物体自由下落的距离
- P1287 盒子与球题解【python】
- 各大主流BBS论坛程序简介
- 第一次作业——————打印沙漏
- Android中App控制字体大小
- of vs 和 pj 2013各个版本
- U盘数据读不出怎么恢复
- oracle oci的好处,oracle的oci和thin区别