zoukankan      html  css  js  c++  java
  • 2017微软秋季校园招聘在线编程笔试

      1 //寻找M S的数量 2017微软秋季校园招聘在线编程笔试 hihocoder 1402 MS Recognition
      2 //看了讨论区写了一发
      3 //套一下思路:
      4 //有一个很简单的做法,一遍bfs找到一个端点,再一遍bfs找到另一个端点,然后把两个端点的中点和整个图形的重心比对一下,区分度非常大。具体来说就是比对一下端点中点到重心的距离,以及两个端点的距离的一半,二者相除,判断是否超过0.5即可。
      5 #include <bits/stdc++.h>
      6 using namespace std;
      7 #define LL long long
      8 typedef pair<int,int> pii;
      9 const int inf = 0x3f3f3f3f;
     10 const int N =1e5+10;
     11 #define clc(a,b) memset(a,b,sizeof(a))
     12 const double eps = 1e-8;
     13 const int MOD = 1e9+7;
     14 void fre() {freopen("in.txt","r",stdin);}
     15 void freout() {freopen("out.txt","w",stdout);}
     16 inline int read() {int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}return x*f;}
     17 
     18 int sgn(double x) {
     19     if(fabs(x) < eps)return 0;
     20     if(x < 0)return -1;
     21     else return 1;
     22 }
     23 
     24 struct Point {
     25     int x,y;
     26     Point() {}
     27     Point(int _x,int _y) {
     28         x = _x;
     29         y = _y;
     30     }
     31     Point operator -(const Point &b)const {
     32         return Point(x - b.x,y - b.y);
     33     }
     34     int operator ^(const Point &b)const {
     35         return x*b.y - y*b.x;
     36     }
     37     int operator *(const Point &b)const {
     38         return x*b.x + y*b.y;
     39     }
     40     friend int dis2(Point a) {
     41         return a.x*a.x+a.y*a.y;
     42     }
     43     friend bool operator<(const Point &a,const Point &b){
     44         if(fabs(a.y-b.y)<eps) return a.x<b.x;
     45         return a.y<b.y;
     46     }
     47 
     48 };
     49 
     50 double dis(Point a,Point b) {
     51     return sqrt((double)dis2(a-b));
     52 }
     53 
     54 int n,m;
     55 char g[510][510];
     56 bool vis[510][510];
     57 int dir[8][2]= {{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
     58 void dfs(int x,int y,int &lx,int &ly,int &rx,int &ry,Point &p1) {
     59     queue<Point>q;
     60     set<Point>s;
     61     s.insert(Point(x,y));
     62     q.push(Point(x,y));
     63     vis[x][y]=1;
     64     lx=x,ry=x,ly=y,ry=y;
     65     while(!q.empty()) {
     66         Point tem=q.front();
     67         q.pop();
     68         for(int i=0; i<8; i++) {
     69             int tx=tem.x+dir[i][0];
     70             int ty=tem.y+dir[i][1];
     71             if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&!s.count(Point(tx,ty))&&g[tx][ty]!='.') {
     72                 q.push(Point(tx,ty));
     73                 s.insert(Point(tx,ty));
     74                 vis[tx][ty]=1;
     75                 lx=min(lx,tx);
     76                 rx=max(rx,tx);
     77                 ly=min(ly,ty);
     78                 ry=max(ry,ty);
     79             }
     80         }
     81         p1=tem;
     82     }
     83 }
     84 
     85 int main() {
     86     scanf("%d%d",&n,&m);
     87     for(int i=1; i<=n; i++) {
     88         scanf("%s",g[i]+1);
     89     }
     90     int M=0,S=0;
     91     for(int i=1; i<=n; i++) {
     92         for(int j=1; j<=m; j++) {
     93             Point p1,p2,p3,p4;
     94             int lx,ly,rx,ry;
     95             if(vis[i][j]) continue;
     96             if(g[i][j]=='.') continue;
     97             lx=i,rx=i,ly=j,ry=j;
     98             dfs(i,j,lx,ly,rx,ry,p1);
     99             p3=Point((rx+lx)/2,(ry+ly)/2);
    100             dfs(p1.x,p1.y,lx,ly,rx,ry,p2);
    101             p4=Point((p1.x+p2.x)/2,(p1.y+p2.y)/2);
    102             double len1=dis(p3,p4);
    103             double len2=dis(p1,p2);
    104             if(len1*2/len2<=0.5) S++;
    105             else M++;
    106         }
    107     }
    108     cout<<M<<" "<<S<<endl;
    109     return 0;
    110 }
  • 相关阅读:
    ecshop 商品分类下的销售排行
    ecshop批量清除商品的精品新品热销属性
    ECSHOP二次开发之给商品增加新字段
    ECSHOP首页调用文章内的缩略图
    ECSHOP给分类添加代表图
    ECSHOP首页促销商品下显示促销时间
    鼠标点击后更换背景
    ECSHOP如何修改商品评论或留言的日期
    ECSHOP设置指定IP才能登录后台
    ecshop远程图片本地化保存相册图片
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5951096.html
Copyright © 2011-2022 走看看