zoukankan      html  css  js  c++  java
  • 2020-09

    称检测点查询

    传送门

    题意:找到离x,y最近的三个点

    存所有的点到目标点的距离和id,将其按dis距离排序,输出前三个点的id标号。

    #include<bits/stdc++.h> 
    using namespace std;
    struct node{
    	double dis;
    	int id;
    }s[100010];
    int x,y;
    double cal(int a,int b)//计算距离
    {
    	return sqrt(pow(a-x,2)+pow(b-y,2)*1.0);
    }
    bool cmp(node a,node b)//排序cmp函数
    {
    	return a.dis<b.dis||(a.dis==b.dis&&a.id<b.id);
    }
    int main()
    {
    	int n,cnt=0;cin>>n>>x>>y;
    	for(int i=1;i<=n;i++){
    		int a,b;cin>>a>>b;
    		s[++cnt].id=i;
    		s[cnt].dis=cal(a,b);
    	}
    	sort(s+1,s+1+n,cmp);
    	for(int i=1;i<=3;i++) cout<<s[i].id<<endl;
    }
    

    风险人群筛查

    传送门

    题意:统计逗留和经过的人数。

    判断是否在区域内

    bool check(int x,int y){
    	if(x>=xl&&x<=xr&&y<=yu&&y>=yd)
    	return 1;
    	return 0;
    }
    

    若当前点在区域内,cnt++表示连续cnt个点都在区域内。

    if(check(x,y))
    {
        mark1=1;
        cnt++;
        if(cnt>=k) mark2=1;
    }else cnt=0;
    
    #include<bits/stdc++.h>
    using namespace std;
    int n,k,t,xl,yd,xr,yu;
    bool check(int x,int y){
    	if(x>=xl&&x<=xr&&y<=yu&&y>=yd)
    	return 1;
    	return 0;
    }
    int main()
    {
    	cin>>n>>k>>t>>xl>>yd>>xr>>yu;
    	int jing=0,liu=0;
    	while(n--)
    	{
            // mark1:此人是否经过
            // mark2:此人是否逗留
            // cnt:连续cnt次经过区域内
    		int mark1=0,mark2=0,cnt=0;
    		for(int i=1;i<=t;i++)
    		{
    			int x,y;cin>>x>>y;
    			if(check(x,y))
    			{
    				mark1=1;
    				cnt++;
    				if(cnt>=k) mark2=1;
    			}else cnt=0;
    		}
    		if(mark2) liu++;
    		if(mark1) jing++; 
    	}
    	cout<<jing<<endl<<liu<<endl;
    }
    
  • 相关阅读:
    实现单台测试机6万websocket长连接
    关于ArcGIS10.0中的栅格计算中的函数
    .NET破解之迅捷PDF转换器(续)
    ArcEngine 0x8004023C
    VS2010中重命名项目
    地理数据库本身不能加密
    ArcEngine尝试读取或写入受保护的内存
    利用路由器连接别人家的网络
    ArcGIS的许可文件问题
    MapGIS转Shp文件的单位问题
  • 原文地址:https://www.cnblogs.com/Calculus9/p/14436826.html
Copyright © 2011-2022 走看看