スタック、キュー、優先キュー、およびトピックの説明
トレーニングテーマURL(パスワードhpuacm):https://cn.vjudge.net/contest/241502#overview
スタックとキューの基礎知識は説明されず、前に書いたブログを参考にします.
スタック:https://blog.csdn.net/hpu2022/article/details/79845577
キュー:https://blog.csdn.net/hpu2022/article/details/79845564
ここでは、優先キューについて説明します.
優先キューのリストの順序は、自分が設定した優先順位に従ってキューを出ます.自分が優先順位を設定しない場合は、デフォルトの優先順位は大きいほど優先順位が高くなります.
定義方法:priority_queue que;
優先順位を自分で決めたい場合は、次のように書くことができます.
priority_queue , greater > que;このように書くのは昇順です.つまり、値が小さいほど優先度が高くなります.
priority_queue , less > que;このように書くのは降順です.つまり、値が大きいほど優先度が高くなります.
構造体タイプのキュー定義、および優先度テンプレートの設定については、次のコードを参照してください.
A題構想:まず問題の意味を話して、たぶん一人で1本の道を歩いて、多くの石に出会うことができて、すべての石はすべて2つの属性があって、位置と投げ出すことができる距離、重ければ重いほど依然として外に出ることができる距離は小さくなります.奇数回目に石に出会って投げ出し、偶数回は放っておいて、この人の前方に石がなくなったら、この人にどのくらい歩いたかを聞いてみましょう.実は最後の石の位置を聞くことです.
優先キューを定義し、投げられるたびに石を一時的に保存し、データを変更して、投げられた後と同じようにキューに入れ直します.
B題構想:優先キューを定義し、キューに常にk個の要素しかないようにし、新しく入力した要素を判断するたびに、キューのトップより大きい要素がエンキューされ、そうでなければ無視する.これにより、キュー内の最小要素がk番目の要素であることが保証されます.
C題構想:3人の医師がおり、各患者および質問のたびに1人の医師を指定するため、3人の医師の診察状況を格納するために3つの優先キューを定義することができる.
D題の構想:あなたに1列の数をあげて、指定の順序によって出力することができるかどうかを聞いて、参考コードは以下の通りです
E、F問題の構想:簡単なシミュレーション問題.
スタックとキューの基礎知識は説明されず、前に書いたブログを参考にします.
スタック:https://blog.csdn.net/hpu2022/article/details/79845577
キュー:https://blog.csdn.net/hpu2022/article/details/79845564
ここでは、優先キューについて説明します.
優先キューのリストの順序は、自分が設定した優先順位に従ってキューを出ます.自分が優先順位を設定しない場合は、デフォルトの優先順位は大きいほど優先順位が高くなります.
定義方法:priority_queue que;
優先順位を自分で決めたい場合は、次のように書くことができます.
priority_queue , greater > que;このように書くのは昇順です.つまり、値が小さいほど優先度が高くなります.
priority_queue , less > que;このように書くのは降順です.つまり、値が大きいほど優先度が高くなります.
構造体タイプのキュー定義、および優先度テンプレートの設定については、次のコードを参照してください.
struct node{
int pri;
int id;
};
// pri ,pri id 。
bool operator b.id;
return a.pri > b.pri;
}
priority_queue que;
// : , 。
A題構想:まず問題の意味を話して、たぶん一人で1本の道を歩いて、多くの石に出会うことができて、すべての石はすべて2つの属性があって、位置と投げ出すことができる距離、重ければ重いほど依然として外に出ることができる距離は小さくなります.奇数回目に石に出会って投げ出し、偶数回は放っておいて、この人の前方に石がなくなったら、この人にどのくらい歩いたかを聞いてみましょう.実は最後の石の位置を聞くことです.
優先キューを定義し、投げられるたびに石を一時的に保存し、データを変更して、投げられた後と同じようにキューに入れ直します.
B題構想:優先キューを定義し、キューに常にk個の要素しかないようにし、新しく入力した要素を判断するたびに、キューのトップより大きい要素がエンキューされ、そうでなければ無視する.これにより、キュー内の最小要素がk番目の要素であることが保証されます.
C題構想:3人の医師がおり、各患者および質問のたびに1人の医師を指定するため、3人の医師の診察状況を格納するために3つの優先キューを定義することができる.
D題の構想:あなたに1列の数をあげて、指定の順序によって出力することができるかどうかを聞いて、参考コードは以下の通りです
#include
using namespace std;
int main()
{
int n;
string in;
string out;
stack s;
vector ve;
while( cin >> n )
{
while( s.size() ) s.pop();
ve.clear();
cin>>in>>out;
int index = 0;
for( int i=0, j=0; i= out.size() || s.top() != out[j] )
break;
}
}
}
if( s.empty() )
{
printf("Yes.
");
for( int i=0; i
E、F問題の構想:簡単なシミュレーション問題.