貨物のタイプ(差動)

 

リンク:https://ac.nowcoder.com/acm/contest/4462/H
出典:ネットワーク牛オフ

タイトル説明

1からnまでの番号n個の倉庫でのビジネスプラットフォーム、。
ときに、特定の商品の購入には、貨物事業では、いくつかの隣接する倉庫の数に分散されます。
あなたは数がどのくらいある物品の倉庫保管の、すべての商品の購入が完了すると、ほとんどの種類を知っていれば我々は、販売することを考えていませんか?

説明を入力します。

2つの正の整数は最初の行に示されている 、N-、M、1≦Nm≤10 5。回、及び倉庫の在庫数を表します。
3つの正の整数の次のmライン Lは、R、D、1≦L、r≤n、1≤d≤10 。9 LとRとの間の倉庫内の番号は、D商品の数に組み込まれます。

出力説明:

商品のライン出力タイプの倉庫数まで記憶され、条件、最小数の出力を満たすために複数の倉庫場合。

エントリー

5  5 
1  1  1 
3  3  1 
2  5  2 
5  5  1 
4  5  1

輸出

3

 

タイプおよび範囲、より明白な違いは、セグメントツリーを作成することができ

 

1の#include <ビット/ STDC ++ H>
 2のtypedef 長い LL。
3  CONST  INT INF = 0x3f3f3f3f 4つの CONST  ダブル EPS = 1E- 8 5  CONST  INT MOD = 1E9 + 7 6  CONST  INT MAXN = 1E5 + 10 7  使用して 名前空間はstdを、
8  
9ベクトル< INT > ST [MAXN]編[MAXN]。
10マップ< int型int型 > 融点;
11  
12  のint main()の
 13  {
 14      の#ifdefデバッグ
 15      freopenは(" SAMPLE.TXT "" R " 、STDIN)。
16      #endifの
17      
18      整数N、M。
19      のscanf(" %D%D "、&​​N、&M)。
20      のためにINT iは= 1 ; iが<= M; I ++ 21      {
 22          のint L、R、D。
23          のscanf(" %D%D%D "、&​​L&R&D);
24          ST [L] .push_back(D)。
25          編[R + 1 ] .push_back(D)。
26      }
 27      int型のID;
28      INT MAX = 0 29      INT NUM = 0 30      のためにINT iは= 1 ; iが<= N; I ++ 31      {
 32          のための(自動これ:ST [I])
 33          {
 34              であれば(MP [それ] == 0)NUM ++ 35              MP [それ] ++ ;
36         }    
 37          のための(自動これ:ED [I])
 38          {
 39              MP [それ] - 40              であれば(MP [それ] == 0)num-- 41          }
 42          であれば(MAX < NUM)
 43          {
 44              MAX = NUM。
45              IDは= Iと、
46          }
 47      }
 48      のprintf(" %dの\ n " 、ID)。
49      
50      リターン 0 ;
51 }

 

 

もう一つの方法:

1の#include <ビット/ STDC ++ H>
 2のtypedef 長い LL。
3  CONST  INT INF = 0x3f3f3f3f 4つの CONST  ダブル EPS = 1E- 8 5  CONST  INT MOD = 1E9 + 7 6  CONST  INT MAXN = 1E5 + 10 7  使用して 名前空間はstdを、
8  
9ベクトル<ペア< 整数整数 >> VT [MAXN]。
10  セット < 整数 >ST;
11マルチセット< 整数 > SST;
12  
13  のint main()の
 14  {
 15      の#ifdefデバッグ
 16      freopenは(" SAMPLE.TXT "" R " 、STDIN)。
17      #endifの
18      
19      整数N、M。
20      のscanf(" %D%D "、&​​N、&M)。
21      のためにINT iは= 1 ; iが<= M; I ++ 22      {
 23          のint L、R、D。
24          のscanf(" %D%D%D "、&​​L&R&D)。
25          VT [L] .push_back({ 1 、D})。
26          VT [R + 1 ] .push_back({ - 1 、D})。
27      }
 28      int型のID;
29      INT MAX = 0 30      のためにINT iは= 1 ; iが<= N; I ++ 31      {
 32          のための(自動これ:VT [I])
 33          {
 34              のint OP = it.first。
35              INTD = it.second。
36              であれば(OP == 1 37              {
 38                  st.insert(D)。
39                  sst.insert(D)。
40              }
 41              そう であれば(OP == - 1 42              {
 43                  sst.erase(sst.find(d)参照)。
44                  であれば(sst.find(D)== sst.end())st.erase(D)。
45              }
 46          }
 47          であれば(MAX < st.size())
 48          {
 49              MAX =st.size();
50              IDは= Iと、
51          }
 52      }
 53      のprintf(" %dの\ n " 、ID)。
54      
55      戻り 0 ;
56 }

 

 

 

 

 

-

おすすめ

転載: www.cnblogs.com/jiamian/p/12556532.html