题目链接:https://vjudge.net/problem/CodeForces-128D

题意:给出一组数,要求将这些数排列成一个环,满足每相邻两个数的差值为1,问能否完成。

思路:先取出最小的数min,作为环中一点,则如果能够完成排列,该数两侧的数字即为min+1,如果min有多个,则放在min+1旁边,重复这样的过程,使用list可以很容易地完成。

代码如下:

 #include<cstdio>
#include<list>
#include<iostream>
#include<cmath>
#include<unordered_map>
using namespace std;
int n,arr[],book[];
unordered_map<int,int> mp;
int main(){
scanf("%d",&n);
int ha=,minVal=;
for(int i=;i<=n;i++){
scanf("%d",&arr[i]);
minVal=min(minVal,arr[i]);
if(mp[arr[i]]==)
mp[arr[i]]=++ha;
book[mp[arr[i]]]++;
}
int ans=;
list<int> lt;
lt.push_front(minVal);
book[mp[minVal]]--;
int tmpFro=minVal,tmpBac=minVal,nn=n-;
while(){
if(book[mp[tmpFro+]]){
book[mp[tmpFro+]]--;
lt.push_front(tmpFro+);
nn--;
if(book[mp[tmpFro]]){
book[mp[tmpFro]]--;
lt.push_front(tmpFro);
nn--;
}
else tmpFro++;
}
if(book[mp[tmpBac+]]){
book[mp[tmpBac+]]--;
lt.push_back(tmpBac+);
nn--;
if(book[mp[tmpBac]]){
book[mp[tmpBac]]--;
lt.push_back(tmpBac);
nn--;
}
else tmpBac++;
}
else break;
}
if(nn==&&abs(*lt.begin()-*lt.rbegin())==){
printf("YES");
}
else printf("NO");
return ;
}

By xxmlala

最新文章

  1. Java并发编程:Lock
  2. http响应需要记住的状态码
  3. 浅谈sizeof
  4. js获取IP和MAC地址
  5. C语言中qsort函数用法
  6. Hibernate各种主键生成策略与配置详解
  7. tesseract api C++使用例子
  8. 4.“写程序” 这个活动大多数情况下是个人行为。 我们听说的优秀程序员似乎都是单打独斗地完成任务。同学们在大学里也认识一些参加ACM 比赛的编程牛人, 他们写的ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么? 请采访这些学生。
  9. webpy使用笔记(二) session/sessionid的使用
  10. 幻灯片插件FlexSlider -- Amaze UI幻灯片参数
  11. Linux系统时间设置(转载)
  12. JS语句循环(100以备奇偶数、100以内与7先关的数、100以内整数的和、10以内阶乘、乘法口诀、篮球弹起高度、64格子放东西)
  13. socket.io 使用
  14. 自动Telnet远程登陆命令
  15. js深入研究之无法理解的js类代码,extend扩展
  16. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级)
  17. FTP下载帮助类
  18. CentOS 6.8重新安装yum
  19. 日志log4j配置详情,日志log具体到你想不到
  20. canvas绘制多边形

热门文章

  1. ListCtrl 技巧集
  2. 2019.6.28 校内测试 T2 【音乐会】二重变革
  3. Ubuntu 14.04 网卡网关配置修改
  4. AE开发之shp转txt
  5. HDU 1087 Super Jumping! Jumping! Jumping! ——(LIS变形)
  6. Jenkins系统初始化配置
  7. 微信小程序开发常见坑
  8. Mac下持续集成-与JMeter与Ant执行后自动发送邮件的整合(性能报告)==
  9. shell中的for循环用法详解
  10. Facebook币Libra学习-4.新的智能合约语言Move入门