P9110 [PA2020] Samochody dostawcze

题目简述

n 个点,这些点分为两种类型。第一种,点在 (x,0) 的位置。这些点从 ti 的时刻开始向北走。第二种,点在 (0,y) 的位置。这些点从 ti 的时刻开始向东走。在这些点中会出现有两个点在同一时刻出在同一位置的情况,也就是相撞。为了避免这一情况的出现,我们选择删除一些点。求最少要删除多少点,才能让所有点不会出现相撞的情况。

思路

假设所有点出发时间相同

因为每个点的运动速度相等,所以不难发现当两个点的 x 坐标和 y 坐标相等时,这两个点一定会相撞。

当所有点出发时间不同时

这道题的难点就在于如何处理点之间的时间差。我们只需要把当前的 x 坐标或 y 坐标减去他们的时间(因为速度为一)。为了防止出现负数情况我们再把结果加上一个数。

end

想到这里题目已经很简单了,每次记一个坐标的点数,最后看一下有没有 x 坐标和 y 相等的两个点就行了。

code

#include<bits/stdc++.h>
using namespace std;
int ans,maxx,r,w,t,n,mp[3000009][10];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>r>>w>>t,mp[w-t+1000009][r]++,maxx=max(maxx,w-t+1000009);.
	for(int i=1;i<=maxx;i++) ans+=min(mp[i][2],mp[i][1]);
	cout<<ans;
	return 0;
}	
posted @   Arthur_Douglas  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示