1 #include<cstdio>
 2 #include<algorithm>
 3 #include<stack>
 4 #include<cctype>
 5 #include<utility>
 6 using namespace std;
 7 typedef long long LL;
 8 typedef pair<LL,LL> p;//存储相同身高的人的数目  防止出现多个相同身高的人
 9 inline void read(LL &tmp)
10 {
11     int x=1;char c=getchar();
12     for(tmp=0;!isdigit(c);c=getchar()) if(c=='-') x=-1;
13     for(;isdigit(c);tmp=tmp*10+c-48,c=getchar());
14     tmp*=x;
15 }
16 stack<p> q;
17 LL n,tmp,ans;
18 int main()
19 {
20     read(n);
21     for(int i=1;i<=n;i++)
22     {
23         read(tmp);
24         p now(tmp,1);//每种身高默认出现次数为1
25         if(!q.empty()&&tmp<q.top().first) ++ans,q.push(now); //若新来的人比栈顶低 则只有其左边一人可看到他
26         else
27         {
28             while(!q.empty()&&tmp>=q.top().first)  //若新来的人高于或等于栈顶
29             {
30                 if(tmp==q.top().first) now.second+=q.top().second;//统计该身高出现次数
31                 ans+=q.top().second;//单调栈内该种身高者都可以看到他
32                 q.pop();//弹出栈顶
33             }
34             if(!q.empty()) ans++;//若栈不为空 说明其左边还存在一个比他高的人可以看到他
35             q.push(now);
36         }
37     }
38     printf("%lld",ans);
39     return 0;
40 } 

转载于:https://www.cnblogs.com/yu-xing/p/10162848.html

洛谷P1823 [COI2007] Patrik 音乐会的等待相关推荐

  1. 【题解】洛谷P1823 [COI2007]Patrik音乐会的等待

    前往:我自己搭建的博客 题目 洛谷P1823[COI2007]Patrik音乐会的等待 题解 使用单调栈维护一个不严格递减的数列,将新的元素与栈顶元素依次比较,如果符合要求(能互相看到)就计数,同时维 ...

  2. 洛谷 P1823 [COI2007] Patrik 音乐会的等待

    目录: 题目: 分析: 80分: 100分(AC): 代码: 80分: 100分(AC) 题目: 传送门 分析: 80分: 按照普通的单调栈的做法,每加入一个人,就开始操作:当当前栈顶小于这个人的身高 ...

  3. Luogu P1823 [COI2007] Patrik 音乐会的等待

    Luogu P1823 [COI2007] Patrik 音乐会的等待 做一套初赛模拟题,填程序是这个 就顺便找原题做一下 :单调栈 #include<cstdio> #include&l ...

  4. P1823 [COI2007] Patrik 音乐会的等待

    P1823 [COI2007] Patrik 音乐会的等待 模型总结 单调栈 关键点 开longlong 注意对相同元素的处理,注意最劣复杂度要正确 使用二分进行统计和出栈 // from [hzwe ...

  5. P1823 [COI2007] Patrik 音乐会的等待(单调栈)

    维护一个单调栈,使得栈顶元素最小,比如:a[1]=6,a[2]=5,a[3]=2,a[4]=6 此时 a[1],a[2],a[3] 逐步进栈,有两对可以交谈 a[4] 进栈时,可以与 a[1] 交谈, ...

  6. P1823 [COI2007] Patrik 音乐会的等待 单调栈

    单调栈 链接 栈底维护的是目前身高最高的人,因为在此人前的人因为此人的存在不能与后来的人联系了,所以如果遇到身高高的人就不断让比他身高矮的人出栈即可.不过我们还要留意身高相同的情况. 由于要考虑重复的 ...

  7. P1823 [COI2007] Patrik 音樂會的等待

    題目連結:[COI2007] Patrik 音乐会的等待 - 洛谷 一開始看到題目有種逆序對的感覺,但題目說明中間若有比自己高的點就不算一對,這就不關逆序對的事情了. 1. 中間不能有比自己高的人 2 ...

  8. 音乐会的等待-单调栈

    关于本题,这里只是基础的写法,完美的避开了特殊情况,另一篇博文会详细讲解特殊情况 [COI2007] Patrik 音乐会的等待 题目描述 N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转 ...

  9. Java 洛谷 提交完题目的代码之后一直停留在 ( 正在等待编译……),刷新页面之后 ,显示 Unaccepted 0分

    在洛谷刷题的时候遇到了这样的问题: 提交完题目的代码之后一直停留在 ( 正在等待编译--),刷新页面之后 ,显示 Unaccepted 0分 解决方法: 1.检查你的类名是否是 Main 2.检查你的 ...

最新文章

  1. 【HDOJ】4333 Revolving Digits
  2. /dev/null 位桶
  3. fastreport调用frf文件直接打印_来吧~~ 这里提供自助打印~
  4. 每天一个linux命令(56):netstat命令
  5. MySQL查询的方法_MYSQL 查询方法
  6. redis 命令别名_redis 命令、命令行根据前缀(通配符)批量删除redis存储的key
  7. Juniper防火墙 L2TP ××× 配置
  8. 三维点云数据处理软件供技术原理说明_三维点云数据处理软件
  9. 用Matlab筛选mirbase,一种基于miRBase数据库的植物有参的miRNA数据分析方法与流程...
  10. J2me实现的wap浏览器
  11. C语言程序设计专项练习——PTA
  12. mysql无法加载主类_找不到或无法加载主类之JDK解决方法
  13. U盘中病毒,文件夹变成exe文件
  14. android 支付宝 40247,iOS——集成支付宝 系统繁忙,请稍后再试ALI40247
  15. 吉林大学计算机专硕和学硕的区别,在吉林大学在职研究生项目中专硕和学硕的区别是什么...
  16. 电信9530手机上面使用移动的SIM卡
  17. 疯狂的“元宇宙”炒房:有玩家囤了100套房,不到半年翻6倍
  18. 时间都去哪儿了,你又想让它去哪儿
  19. 记录:捕鱼达人开发笔记
  20. 使用python-opencv告警QObject::moveToThread

热门文章

  1. js 弹出全屏窗效果
  2. hdmi接口有什么用_电脑上的Type-C接口到底有什么用呢
  3. ant design Menu组件子菜单样式设置
  4. fcpx教程从入门到精通「1」初步认识Final Cut Pro
  5. xp看不到win7共享计算机,WIN7与XP之间共享互通的错误以及解决办法汇总
  6. Springboot2.x集成ecache3.8.1使用@Cacheable缓存(代码方式,无xml)
  7. 成都旅游住宿购物交通攻略617
  8. isNaN()与Number.isNaN()的区别
  9. 各向异性扩散滤波(Anisotropic Filter)原理与C++实现
  10. Java定时任务调度工具之Timer