Codeforces 1290A/1291C - Mind Control
题目大意:
总共有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[],dm[];
void solve(){
int n,m,k,len,rand,i,j,ans=,mn;
cin>>n>>m>>k;
k=min(k,m-);
len=n-m+;
rand=m-k-;
for(i=;i<=n;i++){
cin>>ar[i];
if(i>=len)
dm[i-len+]=max(ar[i],ar[i-len+]);
}
for(i=;i<=k;i++){
mn=0x3f3f3f3f;
for(j=i+;j<=i++rand;j++)
mn=min(mn,dm[j]);
ans=max(ans,mn);
}
cout<<ans<<'\n';
}
int main(){
ios::sync_with_stdio();
cin.tie();cout.tie();
int T;cin>>T;while(T--)
solve(); return ;
}
Codeforces 1290A/1291C - Mind Control的更多相关文章
- C - Mind Control CodeForces - 1291C
		菜到家了,题意都读不懂. 题目大意: 总共有n个人和n个数字 n个人拍成一队,n个数字也是有顺序的 你排在第m个位置 按照顺序的每个人可以拿走这个序列中的第一个数字或者最后一个数字 你可以在所有人操作 ... 
- Educational Codeforces Round 45 (Rated for Div. 2) F - Flow Control
		F - Flow Control 给你一个有向图,要求你给每条边设置流量,使得所有点的流量符合题目给出的要求. 思路:只有在所有点的流量和为0时有解,因为增加一条边的值不会改变所有点的总流量和, 所以 ... 
- Maximum Control (medium) Codeforces - 958B2
		https://codeforces.com/contest/958/problem/B2 题解:https://www.cnblogs.com/Cool-Angel/p/8862649.html u ... 
- Codeforces Round #616 (Div. 2) C. Mind Control
		题目链接:http://codeforces.com/contest/1291/problem/C 思路: 我们可以很容易想到,只有前m-1个人才能影响m的选择的大小,后面的人无法影响. 如果所有人都 ... 
- Codeforces 1291  Round #616 (Div. 2) C. Mind Control(超级详细)
		C. Mind Control You and your n−1 friends have found an array of integers a1,a2,-,an. You have decide ... 
- Codeforces 346D Robot Control(01BFS)
		题意 有一个 \(N\) 个点, \(M\) 条边的有向图, 初始有一个机器人在 \(1\) 号点. 每个时刻, 这个机器人会随机选择一条从该点出发地边并通过.当机器人到达点 \(N\) 时, 它就会 ... 
- Codeforces 346D Robot Control DP spfa 01BFS
		题意及思路:https://www.cnblogs.com/zjp-shadow/p/9562888.html 这题由于性质特殊,可以用01BFS来进行DP的转移. 代码: #include < ... 
- Codeforces Gym 100610 Problem K. Kitchen Robot 状压DP
		Problem K. Kitchen Robot Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10061 ... 
- ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined)  D. The Door Problem 2-SAT
		题目链接:http://codeforces.com/contest/776/problem/D D. The Door Problem time limit per test 2 seconds m ... 
随机推荐
- metasploit扫描
			实验目的: 一. 基于TCP协议收集主机信息 二. 基于SNMP协议收集主机信息 三. 基于SMB协议收集信息 四. 基于SSH协议收集信息 五. 基于FTP协议收集信息 实验环境: ... 
- C++字符集和词法记号以及符号常量
			C++字符集 大小写的英文字母:A~Z,a~z 数字符号:0~9 特殊字符:!#%*()等 关键字:C++预定义的单词 标识符:程序员声明的单词,它命名程序正文中的一些实体 文字:在程序中直接使用符号 ... 
- MySQL查询事务 杀死事务
			遇到 com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock 查询: SELECT * FROM inf ... 
- Python测试进阶——(2)配置PyCharm远程调试环境
			新建一个Python项目 配置Deployment,用于本地文件和远程文件的同步,在pycharm的菜单栏依次找到:Tools > Deployment > Configuration 点 ... 
- Centos上安装FastDFS
			更新yum源 cd /etc/yum.repos.d wget http://mirrors.aliyun.com/repo/Centos-7.repo yum update 安装gcc(编译时需要) ... 
- 通过虚拟机增加Linux的磁盘(分区容量)
			因为安装oracle设置的磁盘空间不足,所以安装失败.这里总结一下如何添加磁盘挂载 1. 右键虚拟机点击设置,然后点击磁盘,点击添加按钮 2.然后点击下一步下一步,直到安装成功 3.然后输入 fdis ... 
- SQL statement ignored
			存储过程语句错误,字段或变量名可能拼错,导致存储过程无法执行. 解决办法:仔细检查存储过程里的变量,字段,语句等是否正确. 
- SpringBoo#Mybatis多个数据源配置,Sqlite&Mysql
			第一步:排除数据源的自动配置类: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 第二步:定义好两个数据源的 ... 
- 机器学习(ML)八之正向传播、反向传播和计算图,及数值稳定性和模型初始化
			正向传播 正向传播的计算图 通常绘制计算图来可视化运算符和变量在计算中的依赖关系.下图绘制了本节中样例模型正向传播的计算图,其中左下角是输入,右上角是输出.可以看到,图中箭头方向大多是向右和向上,其中 ... 
- Manjaro Linux 添加源及输入法
			生成可用的中国镜像站列表 sudo pacman-mirrors -i -c China -m rank 勾选相应的镜像站 ,看自己的喜好 如中科大:http://mirrors.ustc.edu.c ... 
