原题目

  某大厦共有 N 层,现在知道共有 K 个请求要上下电梯;下面告诉你每个请求乘电梯的出发层次和结 束层次。请你求出整个电梯的运行过程。假设电梯一开始停在第一层,运行 K 个请求最后回到第一层。

  例如有个 9 个层次的电梯,共接收到 5 个请求。

  1 5(表示要求从 1 层到 5 层)

  4 2

  2 8

  6 9

  5 1

  那么电梯的运行路线为:1-2-5-6-8-9-5-4-2-1

  第一行为 N 和 K; 后面每行两个整数 x y 表示 K 个请求,每个请求保证合理.且肯定有请求从第一层出发,也肯定有请求 回到第一层结束。但不一定能够达到最高层,数据保证解的唯一性。

  电梯的运行过程,要求从第一层开始,最后回到第一层,每两个数据之间用"-"间隔,行首和行末不要 有多余的"-"("-"为减号)。

S1:

  Input:

  1.  

  Output:

  1. 1---------1

  


  Describe:

  code:

  1. #include<bits/stdc++.h>
  2. #define INF 214748364
  3. #define eps 1e-9
  4. #define rep1(a,b) for(register int i=(a);i<=(b);i++)
  5. #define rep2(a,b) for(register int j=(a);j<=(b);j++)
  6. using namespace std;
  7. int n,k,ii=1,tot,maxx=-1;
  8. int tp[1000111],f[1000101];
  9. struct BDF{
  10. int l,r;
  11. bool wy;
  12. }a[1001001];
  13. inline bool cmp(BDF a,BDF b){
  14. if(a.wy!=b.wy)return a.wy>b.wy;
  15. else if(!a.wy)return a.l>b.l;
  16. else return a.l<b.l;
  17. }
  18. inline int read(){
  19. int ret=0,f=1;char ch=getchar();
  20. while (ch<'0'||ch>'9') {if (ch=='-') f=-f;ch=getchar();}
  21. while (ch>='0'&&ch<='9') ret=ret*10+ch-'0',ch=getchar();
  22. return ret*f;
  23. }
  24. inline double read2(){
  25. double X=0,Y=1.0;int w=0;char ch=0;
  26. while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
  27. while(isdigit(ch))X=X*10+(ch^48),ch=getchar();
  28. ch=getchar();
  29. while(isdigit(ch)) X+=(Y/=10)*(ch^48),ch=getchar();
  30. return w?-X:X;
  31. }
  32. inline void write(int x){
  33. if(x<0){putchar('-');write(-x);return;}
  34. if(x/10) write(x/10);
  35. putchar(x%10+'0');
  36. }
  37. int main(){
  38. freopen("lift.in","r",stdin);
  39. freopen("lift.in","w",stdout);
  40. n=read(),k=read();
  41. for(int i=1;i<=k;i++) //分类成上行和下行讨论
  42. {
  43. a[i].l=read();
  44. a[i].r=read();
  45. if(a[i].l<a[i].r)a[i].wy=1;
  46. else a[i].wy=0;
  47. }
  48. sort(a+1,a+k+1,cmp);
  49. // for(int i=1;i<=n;i++)
  50. // cout<<a[i].l<<' '<<a[i].r<<' ';
  51. while(a[ii].wy&&ii<=k){ //上行桶排
  52. tp[a[ii].l]++;
  53. tp[a[ii].r]++;
  54. maxx=max(maxx,a[ii].r); //存储上行终点
  55. ii++;
  56. }
  57. for(int i=1;i<=100000;i++) //导入数组
  58. if(tp[i])f[++tot]=i;
  59. ii=k;
  60.  
  61. memset(tp,0,sizeof(tp));
  62.  
  63. while(!a[ii].wy&&ii>=1){ //下行桶排
  64. tp[a[ii].l]++;
  65. tp[a[ii].r]++;
  66. if(a[ii].l>maxx)maxx=-1; //数据有锅,不加这句话AC,但理论上应该特判 (若上行终点不是下行起点且比下行起点低,如果下行也有上行终点相同楼层也要输出,但数据不特判)
  67. ii--;
  68. }
  69. for(int i=100000;i>=1;i--) //导入数组
  70. if(tp[i]&&i!=maxx)f[++tot]=i; //特判
  71. for(int i=1;i<=tot-1;i++)
  72. cout<<f[i]<<"-";
  73. cout<<f[tot];return 0;
  74. return 0;
  75. }

Day4-T2的更多相关文章

  1. FJ省队集训DAY4 T2

    XXX #include<cstdio> #include<iostream> #include<cmath> #include<cstring> #i ...

  2. Qbxt 模拟赛 Day4 T2 gcd(矩阵乘法快速幂)

    /* 矩阵乘法+快速幂. 一开始迷之题意.. 这个gcd有个规律. a b b c=a*x+b(x为常数). 然后要使b+c最小的话. 那x就等于1咯. 那么问题转化为求 a b b a+b 就是斐波 ...

  3. Day4:T1小技巧(类似于指针操作)T2搜索+小细节

    Day4:其中有很多小技巧get T1 一直没有听到过像这样的小技巧的略专业名词,有点类似于指针操作,之前有碰到过很多这样的题目 每次都是以不同的形式出现,但是感觉思想还是有点接近的吧(就比如某天有一 ...

  4. 佳木斯集训Day4

    Day4的出题人好毒瘤啊!!! T1我打表过的,正解现在也不会 #include <bits/stdc++.h> #define MAXN 10050 #define ll long lo ...

  5. 2022寒假集训day4

    day4(day5补完的) 继续刷搜索方面的题, 初步了解了序列. T1 迷宫问题 题目描述设有一个 n*n 方格的迷宫,入口和出口分别在左上角和右上角.迷宫格子中分别放 0 和 1 ,0 表示可通, ...

  6. 北京培训记day4

    智商题QAQ-- T1:求>=n的最小素数,n<=10^18 暴力枚举n-n+100,miller-rabin筛法 T2:给定一个01矩阵,每次选择一个1并将(x,y)到(1,1)颜色反转 ...

  7. [Noip2016]蚯蚓 D2 T2 队列

    [Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...

  8. T2 Func<in T1,out T2>(T1 arg)

    委托调用方法的4种方式. using System; using System.Collections.Generic; namespace ConsoleApplication1 { delegat ...

  9. Hotelling T2检验和多元方差分析

    1.1 Hotelling T2检验 Hotelling T2检验是一种常用多变量检验方法,是单变量检验的自然推广,常用于两组均向量的比较. 设两个含量分析为n,m的样本来自具有公共协方差阵的q维正态 ...

  10. 【2016-10-13】【坚持学习】【Day4】【virtual 虚函数】

    定义一个基类,有一个虚函数 定义三个子类,分别继承,重写,New,这个虚函数   abstract class Test { public virtual void Prinf() { Console ...

随机推荐

  1. [RoarCTF2019]forensic

    拿到raw文件拖到kali里,首先看镜像信息. volatility -f /root/mem.raw imageinfo 用建议的profile,Win7SP1x86.先查看下内存中的进程 vola ...

  2. 4.使用Redis+Flask维护动态代理池

    1.为什么使用代理池 许多⽹网站有专⻔门的反爬⾍虫措施,可能遇到封IP等问题. 互联⽹网上公开了了⼤大量量免费代理理,利利⽤用好资源. 通过定时的检测维护同样可以得到多个可⽤用代理理. 2.代理池的要 ...

  3. 本周总结(19年暑假)—— Part5

    日期:2019.8.11 博客期:111 星期日

  4. windows索引服务

        windows索引服务是windows操作系统提供的桌面搜索引擎,通过预先创建索引来提高对硬盘上文件内容的搜索速度.以windows服务程序的方式运行. 一.工作方式 1.对指定路径下的文件创 ...

  5. cgpwn2-嫖来的wp

    本想练习pwn的题目活跃下思维,但是接触后发现完全不懂,gg 然后就多方搜集,弄来了一些工具(IDA pro.pwntool)结果自己还是不会用,又是一番刷视频,结果看完又是一脸懵. 只记得一个快捷键 ...

  6. matplotlib画图的时候显示不出中文和负号的解决办法

    import matplotlib.pyplot as pltfrom pylab import * plt.rcParams['font.sans-serif'] = ['SimHei'] #显示中 ...

  7. Day9 - K - Yue Fei's Battle HDU - 5136

    Yue Fei is one of the most famous military general in Chinese history.He led Southern Song army in t ...

  8. 094、Java中String类之直接赋值时的堆内存自动引用

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  9. WordPress获取首页网站链接和站点名称

    利用bloginfo 获取WordPress网站名称和主页链接 用法一: $blog_title = get_bloginfo('name'); //获取站点名称 $linkzmki = get_bl ...

  10. 浏览器 canvas下载图片 网络错误

    在使用html2canvas截取页面的时候发现图片死活保存不到本地,chrome一直报“网络错误”, 主要出现这个问题是canvas保存图片到本地时各个浏览器像素的限制不同, 所以将图片数据转换成Bl ...