栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1133 Stars

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1133 Stars

#include <stdio.h>#include <math.h>#include <iostream>#include <algorithm>using namespace std;const double eps=1e-8;int so,mo,br;inline int dcmp(double x){return (x>eps)-(x<-eps);}struct point {    int x,y,z;};struct poly {    point p[1001];    int n;}ans,tem;bool operator<(const point &a,const point &b){    return a.x<b.x||a.x==b.x&&a.y<b.y;}inline void transform(const point &a,const point &b,const point &c,const point &d,const poly &w,const poly &z,bool type){    double x1=b.x-a.x,y1=b.y-a.y,x2=d.x-c.x,y2=d.y-c.y,s=x2*x2+y2*y2,u=(x1*x2+y1*y2)/s,v=(x2*y1-x1*y2)/s,tx,ty;    int sum=0,x,y;    for(int i=0;i<z.n;i++){        x=z.p[i].x-c.x,y=z.p[i].y-c.y;        tx=(double)(u*x-v*y+a.x),ty=(double)(v*x+u*y+a.y);        x=rint(tx),y=rint(ty);        if(dcmp(tx-(double)x)||dcmp(ty-(double)y))return;        bool f=1;        for(int j=0;f&&j<w.n;j++) if(w.p[j].x==x&&w.p[j].y==y){     f=0;     tem.p[i]=w.p[j];     sum+=w.p[j].z; }        if(f)return;    }    if(type){        so++;        if(sum>br){ br=sum; for(int i=0;i<z.n;i++)ans.p[i]=tem.p[i];        }    }else mo++;    }inline void maping(const poly &w,const poly &z,bool type){    for(int i=0;i<w.n;i++)        for(int j=0;j<w.n;j++) if(i!=j)transform(w.p[i],w.p[j],z.p[0],z.p[1],w,z,type);}inline void swap(point &a,point &b,const point &c){    if(c.z>b.z){        a=b;        b=c;    }else if(c.z>a.z)a=b;}int main(){    poly w,z;    char s[60];    int m,tim=1;    while(scanf("%d",&w.n),w.n){        for(int i=0;i<w.n;i++) scanf("%d%d%d",&w.p[i].x,&w.p[i].y,&w.p[i].z);        scanf("%d",&m);        printf("Map #%dn",tim++);        while(m--){ br=so=mo=0; scanf("%d%s",&z.n,s); for(int i=0;i<z.n;i++)     scanf("%d%d",&z.p[i].x,&z.p[i].y); if(z.n>w.n)so=0; if(z.n==1){     so=w.n;     ans.n=1;     ans.p[0].z=0;     for(int i=0;i<w.n;i++)ans.p[0]=w.p[i].z>ans.p[0].z?w.p[i]:ans.p[0]; }else{     maping(w,z,1);     maping(z,z,0);     so/=mo; } printf("n%s occurs %d time(s) in the map.n",s,so); if(so>0){     sort(ans.p,ans.p+z.n);     printf("Brightest occurrence:");     for(int i=0;i<z.n;i++)printf(" (%d,%d)",ans.p[i].x,ans.p[i].y);puts(""); }        }        puts("-----");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378607.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号