Codeforces 1293A - ConneR and the A.R.C. Markland-N
题目大意:
ConneR老师想吃东西,他现在在大楼的第s层,大楼总共有n层,但是其中有k层的餐厅关门了。
然后给了这k层关门的餐厅分别所在的楼层。
所以问ConneR老师最少得往上(或者往下)走几层楼,才能到最近的还开门的餐厅就餐?
解题思路1:
对于关闭的k层,存在数组a里排序。(放在1~k的位置)
先循环一遍数组a,看看s层是否存在于a数组里,如果不存在,直接输出0作为答案。
如果存在,开始找答案楼层。
数组a第0的位置赋值0,第k+1的位置赋值n+1。(后面的思路计算中有需要)
然后i从0开始循环到k,每次判断a[i+1]-a[i]是否大于1。
如果大于1,说明a[i+1]与a[i]之间存在着开放的楼层可以成为目的地。
可以取a[i]+1和a[i+1]-1两个楼层进行判断。(因为s层此时是存在于数组a内的,所以最佳答案楼层一定是相邻于某个元素的,不想写那么多判断条件的话直接无脑判断这两个楼层好了,小贪心一下)
最后输出最优解即可。
#include<bits/stdc++.h>
using namespace std;
int a[];
void solve(){
int n,s,k,d,i,p,ans;
cin>>n>>s>>k;
for(i=;i<=k;i++)
cin>>a[i];
sort(a+,a++k);
a[]=;
a[k+]=n+;
ans=;
bool flag=true;
for(i=;i<=k;i++){
if(a[i]==s||a[i+]==s)
flag=false;
if(a[i+]-a[i]>){
ans=min(ans,abs(s-a[i+]+));
ans=min(ans,abs(s-a[i]-));
}
}
if(flag)
ans=;
cout<<ans<<endl;
}
int main(){
int T;
cin>>T;
while(T--)
solve(); return ;
}
解题思路2:
同样的,排序后先循环一遍数组a,看看s层是否存在于a数组里,如果不存在,直接输出0作为答案。
如果存在,因为只有连续的几层楼相邻关闭的时候才会使答案增大。
所以从s层开始,向上向下都搜一遍最少走几层能到a[i+1]-a[i]大于1的楼层。(即这两层楼之间一定有楼层是开放的)
#include<bits/stdc++.h>
using namespace std;
int a[];
void solve(){
int n,s,k,i,p,sp,ans;
cin>>n>>s>>k;
bool flag=true;
for(i=;i<=k;i++){
cin>>a[i];
if(a[i]==s)
flag=false;
}
if(flag){
cout<<<<endl;
return;
}
sort(a+,a+k+);
sp=find(a+,a++k,s)-a;
a[]=;
a[k+]=n+;
ans=;
for(i=sp;i<=k;i++)
if(a[i+]-a[i]>){
ans=min(ans,a[i]+-s);
break;
}
for(i=sp;i;i--)
if(a[i]-a[i-]>){
ans=min(ans,s-(a[i]-));
break;
}
cout<<ans<<endl;
}
int main(){
ios::sync_with_stdio();
cin.tie();cout.tie();
int T;
cin>>T;
while(T--)
solve(); return ;
}
Codeforces 1293A - ConneR and the A.R.C. Markland-N的更多相关文章
- Codeforces Round #614 (Div. 2) A-E简要题解
链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...
- 贪心 CodeForces 124B Permutations
题目传送门 /* 贪心:全排列函数使用,更新最值 */ #include <cstdio> #include <algorithm> #include <cstring& ...
- Codeforces #614 div.2 (A-E)
A ConneR and the A.R.C. Markland-N #include <bits/stdc++.h> using namespace std; #define ll l ...
- [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes
################## Rancher v2.1.7 + Kubernetes 1.13.4 ################ ##################### ...
- 利用python进行数据分析2_数据采集与操作
txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...
- Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页
{#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...
- 计算a^b==a+b在(l,r)的对数Codeforces Round #597 (Div. 2)
题:https://codeforces.com/contest/1245/problem/F 分析:转化为:求区间内满足a&b==0的对数(解释见代码) ///求满足a&b==0在区 ...
- Codeforces Round #333 (Div. 1) C. Kleofáš and the n-thlon 树状数组优化dp
C. Kleofáš and the n-thlon Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...
- Codeforces Round #377 (Div. 2) A. Buy a Shovel【暴力/口袋里面有无限枚 10 元和一枚 r 面值的硬币,问最少可以买多少把价值为 k 的铁铲】
A. Buy a Shovel time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
随机推荐
- 转: 十大Intellij IDEA快捷键
Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论.每个人都有自己的最爱,想排出个理想的榜单还真是困难.以前也整理过Intellij的快捷键,这次就按 ...
- io流对数据的读写
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; i ...
- mini2440 裸机程序下载到 sdram 不能运行。
今天在 写了个简单的 led 的汇编程序,下载到 mini2440 的 nand flash 里面可以正常运行,但是下载到 sdram 里面不能运行. 后来发现有几个注意点, 要在 sdram 中运行 ...
- Mac下使用Hexo搭建个人博客
Hexo介绍 利用原作者的一句话:A fast,simple&powerful blog framework,powered by Node.js Hexo是基于Node.js的博客平台,He ...
- python数据拼接: pd.concat
1.concat concat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合 pd.concat(objs, axis=0, join='outer', join_axes=Non ...
- POJ 1663:Number Steps
Number Steps Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13664 Accepted: 7378 Des ...
- VS程序不显示控制台
之所以会有这样的想法是因为,有时候我会用到一些库,这些库在使用的时候会在控制台输出一些信息,虽然这是无可厚非的事情,但是,如果我写了一个界面,这个时候当然是希望要显示什么就显示在界面上,或者就不要显示 ...
- 2020牛客寒假算法基础集训营5 G街机争霸
题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...
- webservice wsdl文件标签讲解
<?xml version="1.0" encoding="utf8"?> <wsdl:definitions targetNamespace ...
- 更新anaconda包
升级安装python环境后, 把老的包重新安装回去. ls -l /opt/anaconda3/lib/python3.7/site-packages/ | grep "\-info&quo ...