貨物種類--------------------------------------差分+stl大法

在這裏插入圖片描述
在這裏插入圖片描述

解析:
差分+stl大法
用map存差分
對於每一個倉庫 有<種類,個數> 所以用差分
然後枚舉倉庫,枚舉倉庫的種類

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10000;
map<int,int> v[N],now;
int n,m,l,r,d;
int main()
{
	scanf("%d %d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d %d %d",&l,&r,&d);
		++v[l][d];
		--v[r+1][d];
	}
	
	int cnt=0,p;
	for(int i=1;i<=n;i++)//枚舉每個貨倉
	{
		for(auto it :v[i])
		{
			//it.first種類  it.second個數 
			now[it.first]+=it.second;//相當於差分的前綴和
			if(!now[it.first]) now.erase(it.first); //空的就刪除
		}
		if(now.size()>cnt) //now.size()代表種類個數
		{
			cnt=now.size();
			p=i;
		}
	}
	cout<<p<<endl;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章