スタックとキュー[] []の概要演習

zoj3210

アイデア:このタイトルは良いスタックとキューの特性を反映して、スタックが最後のアウト、FIFOキューです。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int t,n;
int a[110],b[110];
bool isque,isstk;
int main()
{
	freopen("in.txt","r",stdin);
	cin>>t;
	while(t--)
	{
		isque=true;
		isstk=true;
		cin>>n;
		for(int i=0;i<n;++i)
			cin>>a[i];
		for(int i=0;i<n;++i)
			cin>>b[i];
		for(int i=0;i<n;++i)
		{
			if(a[i]!=b[i])isque=false;
			if(a[i]!=b[n-i-1])isstk=false;
		}
		if(isque&&isstk)cout<<"both\n";
		else if(isque&&!isstk)cout<<"queue\n";
		else if(!isque&&isstk)cout<<"stack\n";
		else cout<<"neither\n";


	}
	return 0;
}

uva10954

要素を保存する優先キューとハフマンアルゴリズムの水問題、、、最初のチームの各要素うち、要素が昇順//大きい<整数>であるため、その最小限です:アイデア。それはノード展開のキュー、感触と全体の検索が少し似て使用できるように、ハフマンアルゴリズムは、バイナリツリーです。

#include <iostream>
#include <queue>
using namespace std;

int main()
{
    int n,x;
    while(cin>>n&&n)
    {
        priority_queue<int,vector<int>,greater<int> >q;
        for(int i=0;i<n;++i){cin>>x;q.push(x);}
        int ans=0;
        for(int i=0;i<n-1;++i)
        {
            int a=q.top();q.pop();
            int b=q.top();q.pop();
            ans+=(a+b);
            q.push(a+b);
        }
        cout<<ans<<endl;
    }
    return 0;
}

HDU1896

プライオリティキューを使用して練習。

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
struct stone
{
	int p,d;
	bool operator <(const stone &a)const
	{
		if(p==a.p)return d>a.d;
		else return p>a.p;
	}
};
int t,n;
int main()
{
	freopen("in.txt","r",stdin);
	cin>>t;
	while(t--)
	{
		cin>>n;
		stone x;
		priority_queue<stone>q;
		for(int i=0;i<n;++i)
		{
			cin>>x.p>>x.d;
			q.push(x);
		}
		bool flag=true;
		while(!q.empty())
		{
			x=q.top();
			q.pop();
			if(flag)
			{
				x.p+=x.d;
				q.push(x);
			}
			flag=!flag;
		}
		cout<<x.p<<endl;
	}
	return 0;
}

 

公開された22元の記事 ウォンの賞賛3 ビュー1836

おすすめ

転載: blog.csdn.net/qq_42825058/article/details/86942103