「BZOJ1683」[Usaco2005 Nov] City skyline 城市地平线
Description
Input
第1行:2个用空格隔开的整数N和W.
第2到N+1行:每行包括2个用空格隔开的整数x,y,其意义如题中所述.输入中的x严格递增,并且第一个z总是x.
Output
输出一个整数,表示城市中最少包含的建筑物数量.
Sample Input
10 26
1 1
2 2
5 1
6 3
8 1
11 0
15 2
17 3
20 2
22 1
INPUT DETAILS:
The case mentioned above
Sample Output
6
题解
同1628
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int n,m,ans,top; int h[50005],st[50005]; int main() { n=read();m=read(); for(int i=1;i<=n;i++) h[i]=read(),h[i]=read(); ans=n; for(int i=1;i<=n;i++) { while(st[top]>h[i])top--; if(st[top]==h[i])ans--; else st[++top]=h[i]; } printf("%d",ans); return 0; } |
Subscribe