列表

详情


NC206077. 校车

描述

西安邮电大学有一辆从老校区到新校区的校车,总共有 n 个学生乘坐校车,在 站上车,在 站下车。学校打算去除一部分不必要的站点,请问需要保留多少站点,需要安排多少个座位?

输入描述

输入 T 组数据 
输入
输入 n 组

输出描述

输出保留站点数,座位数。

示例1

输入:

1
3
1 2
1 3
2 4

输出:

4 2

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

pypy3 解法, 执行用时: 1081ms, 内存消耗: 35320K, 提交时间: 2022-07-11 13:47:30

from sys import stdin
from collections import defaultdict
input = stdin.readline
for _ in range(int(input())):
    ans,sm=0,0
    d=defaultdict()
    for i in range(int(input())):
        a,b=map(int,input().split())
        if a in d:d[a]+=1
        else:d[a]=1
        if b in d:d[b]-=1
        else:d[b]=-1
    a = sorted(d.items())
    for i in a:
        sm+=i[1]
        ans=max(ans,sm)
    print(len(d),ans)

C++14(g++5.4) 解法, 执行用时: 292ms, 内存消耗: 1888K, 提交时间: 2020-05-24 00:46:23

#include<bits/stdc++.h>
using namespace std;
int T, n, a, b;
int main()
{
	for(cin >> T; T--; )
	{
		map<int, int>mp;
		for(cin >> n; n--; )
		{
			cin >> a >> b;
			mp[a]++, mp[b]--;
		}
		int ans = 0, cur = 0;
		for(auto r : mp)
			ans = max(ans, cur += r.second);
		cout << mp.size() << " " << ans << endl;
	}
}

C++(clang++ 11.0.1) 解法, 执行用时: 219ms, 内存消耗: 1744K, 提交时间: 2023-04-16 15:19:20

#include<bits/stdc++.h>
using namespace std;
int main(){
	int t;cin>>t;
	while(t--){
		int n;cin>>n;
		map<int,int> mp;
		for(int i=1;i<=n;i++){
			int a,b;cin>>a>>b;
			mp[a]++;mp[b]--;
		}
		int s=0,q=0;
		for(auto i:mp){
			s+=i.second;q=max(q,s);
		}
		cout<<mp.size()<<" "<<q<<endl;
	}
	return 0;
}

上一题