首页 > 其他 > 详细

回收站选址

时间:2020-08-30 23:07:49      阅读:104      评论:0      收藏:0      [点我收藏+]
#include<bits/stdc++.h>
using namespace std;

const int N=1000;
pair<int,int> p[N];
int cnt[5];
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int n;
    map<pair<int,int>,int> ps; 
    cin>>n;
    for(int i=0;i<n;++i){
        int x,y;
        cin>>x>>y;
        p[i] =make_pair(x,y);
        ps[p[i]] =1;
    }
    for(int i=0;i<n;++i){
        int x=p[i].first;
        int y=p[i].second;
        if(ps[make_pair(x,y+1)] && ps[make_pair(x,y-1)] &&ps[make_pair(x+1,y)] &&ps[make_pair(x-1,y)])
        {
            ++cnt[ps[make_pair(x+1,y+1)]+ps[make_pair(x+1,y-1)] +ps[make_pair(x-1,y+1)]+ps[make_pair(x-1,y-1)]];
        }
    }
    for(int i=0;i<5;i++)
    cout<<cnt[i]<<endl;
    return 0;
} 

注意:

1.unordered_map由于底层是以哈希表的形式实现的,因此没有直接提供关于pair的接口,即unordered_map<pair<int,int>,int>这种形式是不合法的,因此采用map<pair<int,int>,int>。

2.本题的难度在于数据的存储形式上,以map来存储整个图,以pair<int,int>作为键值,克服了以x为键值会出现重复键值的情况,同时value标记着时候存储了某点,便于统计,计算。

3.额外引进一个数组p[N]记录好相应的键值,便于对map的访问。

回收站选址

原文:https://www.cnblogs.com/zmachine/p/13586817.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!