JZOJ 100041. 【NOIP2017提高A组模拟7.12】列车调度
生活随笔
收集整理的這篇文章主要介紹了
JZOJ 100041. 【NOIP2017提高A组模拟7.12】列车调度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
Input
Output
Sample Input
Sample1:
3
1 2 3
Sample2:
9
1 3 2 4 8 6 9 5 7
Sample Output
Sample1:
3
Sample2:
5
Data Constraint
Solution
顯然,一輛列車開到另一輛列車的后面,一定比新開一條軌道更優。
那么一輛列車要滿足什么條件才能停到另一輛的后面呢?
它的序號 X 一定小于前面的列車!不然其他就出不去、無法滿足題意了。
于是我們貪心地尋找比 X 大的值且最小的那個位置,停進去即可。
其實我們不需要模擬開出的情況,因為操作是序號更小時才會進行的。
那么當某個序號的列車將要開出時,它的前面一定沒有阻擋的列車,因為它們已經開出了。
于是我們只需用一個 Set 維護一下軌道最后一個列車的序號的情況,直接處理即可。
這樣的時間復雜度是 O(NlogN) 。
Code
#include<cstdio> #include<set> using namespace std; inline int read() {int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w; } set<int>f; int main() {int n=read(),ans=0;for(int i=1;i<=n;i++){int x=read();f.insert(x);set<int>::iterator it=f.find(x);if(++it==f.end()) ans++; else f.erase(it);}printf("%d",ans);return 0; }總結
以上是生活随笔為你收集整理的JZOJ 100041. 【NOIP2017提高A组模拟7.12】列车调度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZOJ 100035. 【NOIP20
- 下一篇: JZOJ 100043. 【NOIP20