codeforces div1A
A. Circular Local MiniMax
题目翻译:给我们一个数组(循环的也就是1和n是相邻的),我们可以对数组进行任意调序,对于每个数b[i]要求满足b[i] < b[i - 1] && b[i] < b[i + 1] 或者满足b[i] > b[i - 1] && b[i] > b[i + 1]。如果存在就输出yes并且输出构造的序列,否则输出no。
思路:我们考虑当一个数是波峰时,那么和他相邻的数一定是波谷,所以波峰波谷一定是交替出现的,所以当n是奇数时,最后一个数和第一个数是一样的,同为波峰或波谷,这样便和我们刚才所说的波峰波谷交替出现矛盾了。
至此我们考虑了一定无解的情况,
然后我们考虑当n为偶数时,我们很容易想到波峰就是较大的n/2个数,波谷就是较小的n/2个数,所以我们sort一遍,然后依次将前n/2个数的最小值,后n/2个数的最小值,前n/2个数的次小值,
后n/2个数的次小值,这样的顺序排列,构成序列,当然这里面也会有不合法的情况,我们需要再o(n)扫一遍。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N], b[N];
void run()
{
int n;
cin >> n;
for(int i = 1; i <= n; ++ i) scanf("%d", &a[i]);
int ans = 0;
if(n & 1)
{
puts("NO");
return;
}
else
{
sort(a + 1, a + 1 + n);
int now = 0;
int l = 1, r = n / 2 + 1;
for(int i = 0; i < n / 2; ++ i)
{
b[++ now] = a[l + i];
b[++ now] = a[r + i];
}
bool success = true;
for(int i = 1; i <= n; ++ i)
{
int l = i - 1, r = i + 1;
if(l == 0) l = n;
if(r == n + 1) r = 1;
if((b[l] > b[i] && b[r] > b[i]) || (b[l] < b[i] || b[r] < b[i]))
continue;
else
{
success = false;
break;
}
}
if(success)
{
puts("YES");
for(int i = 1; i <= n; ++ i) cout << b[i] << ' ';
cout << endl;
}
else puts("NO");
}
}
int main()
{
// freopen("1.in", "r", stdin);
int t;cin >> t;
while(t --) run();
return 0;
}
codeforces div1A的更多相关文章
- Codeforces Round #243
CF 243 DIV1 & DIV2 DIV2的A和B都太水,直接暴力搞就可以的. DIV2A /* ******************************************** ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- Vue学习之认识ref
ref相当于一个dom节点,值为string 通俗将类似于原生js的document.querySelector('xxx'):但是不同的是vue是操纵虚拟dom,在渲染初期并没有这个属性,而是在创建 ...
- 2023河南省ICPC大学生程序设计竞赛-wh
第一次出去比赛,首先感谢程老师选择我们新生更多的比赛机会,感谢! 在周六我们一起做了高铁出发取洛阳参加icpc河南省赛,不得不说洛阳师范学院确实环境很好看..在热身赛时,已经被泼了冷水,这C也太难了, ...
- shell: xcall
#!/bin/bash ips=( 1.1.1.2 1.1.1.1 ) port= user= passwd= for i in ${ips[@]} do echo "== $i ==&qu ...
- 「Python实用秘技16」快速提取字体子集
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第16 ...
- PHP插件
- k8s实战案例之运行WordPress
1.WordPress架构 LNMP案例之基于Nginx+PHP实现WordPress博客站点,要求Nginx+PHP运⾏在同⼀个Pod的不同容器;nginx主要作用是接入站点请求,如果请求静态资源n ...
- mac安装mysql8.0
1.进入下载页 历史版本:https://downloads.mysql.com/archives/community/ 最新版本:https://dev.mysql.com/downloads/my ...
- shiro框架基本概念介绍
什么是Shiro: Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证.授权.加密和会话管理 Shiro的核心功能包括: 身份验证(Authentication):验证用户的身份,确保用户 ...
- SQL Server实例间同步登录用户
SQL Server实例间同步登录用户 问题痛点:由于AlwaysOn和数据库镜像无法同步数据库外实例对象,例如 登录用户.作业.链接服务器等,导致主库切换之后,应用连接不上数据库或者作业不存在导致每 ...
- Kafka与RabbitMQ
一.什么是kafka,什么是rabbit Kafka是由Scala语言开发的一种分布式流处理框架,主要用于处理活跃的流式数据,以及大数据量的数据处理.它采用发布-订阅模型,支持消息的批量处理,数据 ...