首页 > 其他分享 >抓拍

抓拍

时间:2024-07-27 12:39:40浏览次数:6  
标签:begin end min -- 抓拍 ans calc

  • 果然还是分类讨论有疏漏:未考虑到两段移动区间“迎头相撞”的情况,思维要更加缜密
  • 更简洁的做法是,考察周长关于时间的函数,通过三分法找极小值点
  • abs和llabs都可以将long long类型的数取绝对值,其区别在于,若令x=-2147483648,llabs可以正常得到2147483648的结果,而abs不能
点击查看代码
#include <bits/stdc++.h>
using namespace std;
vector<int> x,y;
vector<int>a[5];
int q[205],n;
const int dx[]={0,1,-1,0,0};
const int dy[]={0,0,0,-1,1};
struct t1
{
	long long x,y,opt;
}t[200005];
long long calc(long long T)
{
	if(T<0)
	{
		T=-T;
	}
	long long maxx=LLONG_MIN,minx=LLONG_MAX,maxy=LLONG_MIN,miny=LLONG_MAX;
	for(int i=1;i<=n;i++)
	{
		t[i].x+=(dx[t[i].opt]*T);
		t[i].y+=(dy[t[i].opt]*T);
		maxx=max(maxx,t[i].x);
		minx=min(minx,t[i].x);
		maxy=max(maxy,t[i].y);
		miny=min(miny,t[i].y);
		t[i].x-=(dx[t[i].opt]*T);
		t[i].y-=(dy[t[i].opt]*T);
	}
	return 2*(maxx-minx+maxy-miny);
}
int main()
{
	q['E']=1;q['W']=2;q['S']=3;q['N']=4;
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int u,v;
		char c;
		cin>>u>>v>>c;
		t[i].x=u;
		t[i].y=v;
		t[i].opt=q[c];
		if(q[c]<=2)
		{
			a[q[c]].push_back(u);
		}
		else
		{
			a[q[c]].push_back(v);
		}
		if(c=='E'||c=='W')
		{
			y.push_back(v);
		}
		else
		{
			x.push_back(u);
		}
	} 
	sort(x.begin(),x.end());
	sort(y.begin(),y.end());
	for(int i=1;i<=4;i++)
	{
		sort(a[i].begin(),a[i].end());
	}
	long long ans=calc(0);
	if(x.size()!=0)
	{
		int lx=*x.begin(),rx=*(--x.end());
		for(int i=1;i<=2;i++)
		{
			if(a[i].size()>0)
			{
				ans=min(ans,calc(lx-*(a[i].begin())));
				ans=min(ans,calc(rx-*(a[i].begin())));
				ans=min(ans,calc(lx-*(--a[i].end())));
				ans=min(ans,calc(rx-*(--a[i].end())));
			}
		}
	}
	if(a[1].size()>0&&a[2].size()>0)
	{
		int lx=*a[1].begin(),rx=*(--a[1].end());
		ans=min(ans,calc((lx-*(a[2].begin()))/2));
		ans=min(ans,calc((rx-*(a[2].begin()))/2));
		ans=min(ans,calc((lx-*(--a[2].end()))/2));
		ans=min(ans,calc((rx-*(--a[2].end()))/2));
		ans=min(ans,calc((lx-*(a[2].begin()))/2+1));
		ans=min(ans,calc((rx-*(a[2].begin()))/2+1));
		ans=min(ans,calc((lx-*(--a[2].end()))/2+1));
		ans=min(ans,calc((rx-*(--a[2].end()))/2+1));
	}
	if(y.size()!=0)
	{
		int ly=*y.begin(),ry=*(--y.end());
		for(int i=3;i<=4;i++)
		{
			if(a[i].size()>0)
			{
				ans=min(ans,calc(ly-*(a[i].begin())));
				ans=min(ans,calc(ry-*(a[i].begin())));
				ans=min(ans,calc(ly-*(--a[i].end())));
				ans=min(ans,calc(ry-*(--a[i].end())));
			}
		}
	}
	if(a[3].size()>0&&a[4].size()>0)
	{
		int lx=*a[3].begin(),rx=*(--a[3].end());
		ans=min(ans,calc((lx-*(a[4].begin()))/2));
		ans=min(ans,calc((rx-*(a[4].begin()))/2));
		ans=min(ans,calc((lx-*(--a[4].end()))/2));
		ans=min(ans,calc((rx-*(--a[4].end()))/2));
		ans=min(ans,calc((lx-*(a[4].begin()))/2+1));
		ans=min(ans,calc((rx-*(a[4].begin()))/2+1));
		ans=min(ans,calc((lx-*(--a[4].end()))/2+1));
		ans=min(ans,calc((rx-*(--a[4].end()))/2+1));
	}
	cout<<ans<<endl;
	return 0;
}

标签:begin,end,min,--,抓拍,ans,calc
From: https://www.cnblogs.com/watersail/p/18326825

相关文章

  • uniapp [全端兼容] - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海
    前言如果需要Vue版本,请访问这篇文章。在uni-app全平台兼容(H5网页网站、支付宝/微信小程序、安卓App、苹果App、nvue)项目开发中,详解免费安装使用“海康威视监控摄像头”在网页中对接设备并进行实时显示监控画面及各种功能操作控制教程,对接海康视频监控播放及回放......
  • 施工现场不戴安全帽抓拍 YOLOv5
    施工现场不戴安全帽抓拍利用现场已经有的摄像头,施工现场不戴安全帽抓拍运用机器视觉边缘计算和神经网络深度学习算法,对现场进出口、作业区域等人员违规行为识别、分析与预警提醒,施工现场不戴安全帽抓拍并把警报截屏和视频储存到后台。此外,施工现场不戴安全帽抓拍还可以识别现场......
  • 从零开始精通Onvif之图片抓拍
    ......
  • 高速公路视频监控系统与车牌抓拍:EasyCVR视频监控技术助力交通道路安全监控
    随着科技的不断发展,高速公路视频监控与车牌抓拍系统作为智能交通的重要组成部分,日益发挥着不可或缺的作用。这些先进的技术不仅提高了道路交通的管理效率,也为保障行车安全提供了新的手段。高速公路视频监控系统的应用,极大地增强了道路监控的实时性和全面性。通过安装在关键路段的......
  • Android GB28181-2022 图像抓拍
     GB28181-2022新增图像抓拍功能,这个功能很有用,无需在设备实时点播的情况下,就可以抓图上传到指定的图像存储服务器上。如果配置合适的抓拍间隔,JPEG也选择适当的压缩参数,相比实时音视频回传更省流量,设备功耗也低。 GB28181图像抓拍分为三步,一是下发图像抓拍配置命令给设备,......
  • 关于汽车违章抓拍的一些知识点
    电话搞明白了,现在电子抓拍分为2种,一种是固定抓拍可以上12123处理。一种是移动抓拍,这个无法上12123处理。移动抓拍的要到线下处理完以后,12123上就可以查到。然后可以参加学法减分处理。现在12123的学法减分,都是先处理违章交罚款扣分。然后再到12123去学法减分。只不过移动抓拍......
  • 行人闯红灯自动识别抓拍系统解决方案​
    ​随着城市节奏的加快,人们出行的步伐也越来越紧凑,甚至在等红绿灯的间隙,不少行人为了抢赶时间,纷纷出现闯红灯的不文明行为,对自身及公共交通安全都造成了极大的威胁。为了约束......
  • AI智能检测识别EasyCVR视频融合平台告警抓拍图片的逻辑优化
    将智能分析网关的AI智能识别能力与EasyCVR视频融合平台的视频服务能力融合,构建基于云边端协同架构的安全风险监测与视频监管平台,可对接入的多路视频流进行智能检测、智能识......
  • AI智能检测识别EasyCVR视频融合平台告警抓拍图片的逻辑优化
    将智能分析网关的AI智能识别能力与EasyCVR视频融合平台的视频服务能力融合,构建基于云边端协同架构的安全风险监测与视频监管平台,可对接入的多路视频流进行智能检测、智能识......
  • 智能分析网关使用教程:如何在EasyCVR视频融合平台配置告警与抓拍?
    AI智能分析网关设备内置多种深度学习算法,可支持对接入的多路视频流进行智能检测、智能识别等,包括人脸检测与识别、车辆检测与识别、车牌识别、烟火识别、安全帽识别、区域......