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

poj 1916 Rat Attack

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

poj 1916 Rat Attack

#include <cstdio>#include <map>#include <algorithm>using namespace std;struct node{    int x,y,num;    bool operator<(const node &pos) const    {        return x<pos.x;    }}data[20005];int d,n;map<int,int> refer;void calbest(int nx,int &best,int &x,int &y){    map<int,int>::iterator s=refer.begin(),e=refer.begin();    int total=0,last=e->first;    while(e!=refer.end())    {        while(e!=refer.end()&&e->first<=s->first+2*d)        { total+=e->second; last=e->first; e++;        }        if(total>best||total==best&&nx-d<x||total==best&&nx-d==x&&last-d<y) best=total,x=nx-d,y=last-d;        total-=s->second;        s++;    }}int main(){    int test;    scanf("%d",&test);    while(test--)    {        scanf("%d%d",&d,&n);        for(int i=0;i<n;i++) scanf("%d%d%d",&data[i].x,&data[i].y,&data[i].num);        sort(data,data+n);        int s=0,e=0;        refer.clear();        int best=-1,y,x;        while(e<n)        { int tmp; while(true) {     if(e>=n||data[e].x-data[s].x>2*d) break;     tmp=data[e].x;     while(e<n&&data[e].x==tmp)          {  refer[data[e].y]+=data[e].num;  e++;         }     calbest(data[e-1].x,best,x,y); } tmp=data[s].x; while(data[s].x==tmp&&s<n) {     refer[data[s].y]-=data[s].num;     if(refer[data[s].y]==0) refer.erase(data[s].y);     s++; }        }        printf("%d %d %dn",x>=0?x:0,y>=0?y:0,best);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373298.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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