51Nod 1279 扔盘子 栈模拟

来源:互联网 发布:中国出口美国数据 编辑:程序博客网 时间:2024/06/05 00:12


先对井进行优化一下

例如从上到下井口大小 6 4 8 5 3

优化后的井口为 6 4 4 4 3

意思就是把多余的井口长度去掉,因为下面的井口必须小于等于当前最小长度的井口

然后进行栈模拟


TIP:注意!!!!minn设的初值大一点。我开始用的1<<29错误!!小于1e9了

#include<iostream>  #include<queue>  #include<vector>  #include<stack>  #include<algorithm>#include<cmath> #include<set>#include<map>#include<cstdio>using namespace std;int main(){int n,m;scanf("%d%d",&n,&m);stack<int> sta;int a[500001];int minn=1<<30;for(int i=0;i<n;i++){int num;scanf("%d",&num);minn=min(minn,num);a[i]=minn;}for(int i=0;i<n;i++){sta.push(a[i]);}int sum=0;for(int i=0;i<m;i++){int num;scanf("%d",&num);if(sta.size()==0) continue;while(sta.size()){long long top=sta.top();sta.pop();if(top>=num){sum++;break;}}}printf("%d",sum);return 0;}


原创粉丝点击