P1823 音乐会的等待
2018-06-17 22:26:02来源:未知 阅读 ()
题目描述
N个人正在排队进入一个音乐会。人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人。队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见的。
写一个程序计算出有多少对人可以互相看见。
输入输出格式
输入格式:输入的第一行包含一个整数N (1 ≤ N ≤ 500 000), 表示队伍中共有N个人。
接下来的N行中,每行包含一个整数,表示人的高度,以毫微米(等于10的-9次方米)为单位,每个人的调度都小于2^31毫微米。这些高度分别表示队伍中人的身高。
输出格式:输出仅有一行,包含一个数S,表示队伍中共有S对人可以互相看见。
输入输出样例
7 2 4 1 2 2 5 1
10
说明
数据制作: @w
这道题一开始自己推出来了如果后面有比他大的那么这个数是没用的,
然后乱搞了一下搞了25分。。。
看了一下题解发现一个非常好的思路
就是把相等和大于放到一个循环里判断,
一开始num==1保证有数据读入
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<stack> 6 using namespace std; 7 int read(int & n) 8 { 9 char c='-';int x=0; 10 while(c<'0'||c>'9')c=getchar(); 11 while(c>='0'&&c<='9') 12 { 13 x=x*10+(c-48); 14 c=getchar(); 15 } 16 n=x; 17 } 18 const int MAXN=500001; 19 stack<int>s; 20 int main() 21 { 22 int n,h,ans=0,flag=0; 23 read(n); 24 for(int i=1;i<=n;i++) 25 { 26 flag=0; 27 read(h); 28 if(i==1) 29 { 30 s.push(h); 31 continue; 32 } 33 if(h>s.top()) 34 { 35 ans++; 36 s.pop(); 37 while(s.size()>0&&h>s.top()) 38 { 39 ans++; 40 s.pop(); 41 flag=1; 42 } 43 if(s.size()!=0&&h<s.top()) 44 ans++; 45 s.push(h); 46 } 47 else if(h==s.top()) 48 { 49 ans=ans+s.size(); 50 s.push(h); 51 } 52 else 53 { 54 ans++; 55 s.push(h); 56 } 57 } 58 printf("%d",ans); 59 }
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<stack> 6 using namespace std; 7 int read(int & n) 8 { 9 char c='-';int x=0; 10 while(c<'0'||c>'9')c=getchar(); 11 while(c>='0'&&c<='9') 12 { 13 x=x*10+(c-48); 14 c=getchar(); 15 } 16 n=x; 17 } 18 const int MAXN=500001; 19 stack<int>s; 20 int main() 21 { 22 int n,h,ans=0,flag=0; 23 read(n); 24 for(int i=1;i<=n;i++) 25 { 26 int num=1; 27 read(h); 28 while(s.size()!=0&&h>=s.top()) 29 { 30 31 if(h==s.top()) 32 num++; 33 ans++; 34 s.pop(); 35 } 36 if(s.size()!=0) 37 ans++; 38 while(num--) 39 s.push(h); 40 } 41 printf("%d",ans); 42 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:C++中小数点输出格式
下一篇:P1007 独木桥
- 音乐节拍 2019-04-11
- shazam音乐检索算法 附完整c代码 2018-12-04
- 音乐旋律提取算法 附可执行demo 2018-10-08
- 利用 Windows API Code Pack 修改音乐的 ID3 信息 2018-06-27
- 利用 Windows API Code Pack 修改音乐的 ID3 信息 2018-06-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash