zoukankan      html  css  js  c++  java
  • noi.ac day6t1 queen

    传送门

    分析

    我就是个BT......

    直接排序后开数组记录每条线上的信息,注意由于每个点只会影响前面第一个点和后面第一个点,所以记录每条线的前一个点就行了。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cctype>
    #include<cmath>
    #include<cstdlib>
    #include<ctime>
    #include<queue>
    #include<vector>
    #include<set>
    #include<map>
    #include<stack>
    using namespace std;
    struct node {
        int x,y;
    };
    node d[100100];
    int px[200100],py[200100],pa[200100],pb[200100],tot[100100],ans[10];
    inline bool cmp(const node a,const node b){
        return a.x==b.x?a.y<b.y:a.x<b.x;
    }
    int main(){
        int n,m,i,j,k;
        scanf("%d%d",&n,&m);
        for(i=1;i<=m;i++)scanf("%d%d",&d[i].x,&d[i].y);
        sort(d+1,d+m+1,cmp);
        for(i=1;i<=m;i++){
          int x=d[i].x,y=d[i].y;
          if(px[x])tot[i]++,tot[px[x]]++;
          if(py[y])tot[i]++,tot[py[y]]++;
          if(pa[x+y])tot[i]++,tot[pa[x+y]]++;
          if(pb[x-y+n])tot[i]++,tot[pb[x-y+n]]++;
          px[x]=i,py[y]=i,pa[x+y]=i,pb[x-y+n]=i;
        }
        for(i=1;i<=m;i++)ans[tot[i]]++;
        for(i=0;i<9;i++)printf("%d ",ans[i]);
        return 0;
    }
  • 相关阅读:
    推荐一份JAVA学习vip路线图,可以参考下学习路径哦
    上传视频到阿里云服务器
    微信小程序授权登陆以及获取获取openid
    Java随笔
    Java随笔
    Java随笔
    Java随笔
    Java随笔
    Java随笔
    AC自动机模板
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/9797888.html
Copyright © 2011-2022 走看看