被jump送退役了,很生气。

不过切了这题也进不了队,行吧。

退役后写了一下,看到二维平面应该就是KD树,然后可以在KD树上做最短路,然后建立堆和KDTree。然后每次更新则是直接把最短路上的节点删掉,然后合并KDTree

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+,M=15e5+;
struct point{int w,l,r,u,d;}p[N];
struct node{int u,d;};
vector<int>G[N];
int n,m,W,H,now,dis,cnt,rt,tot,hd[N],v[M],nxt[M],w[M],vis[N],d[N],ch[N][];
bool operator<(node x,node y){return x.d>y.d;}
priority_queue<node>q;
void adde(int x,int y,int z){v[++cnt]=y,nxt[cnt]=hd[x],w[cnt]=z,hd[x]=cnt;}
void add(int fa,int&o,int xl,int xr,int yl,int yr,int x,int y)
{
if(x<xl||x>xr||y<yl||y>yr)return;
if(!o)o=++tot;
if(o!=rt)adde(fa+n,o+n,);
if(xl==xr&&yl==yr){adde(o+n,now,);return;}
int xm=xl+xr>>,ym=yl+yr>>;
add(o,ch[o][],xl,xm,yl,ym,x,y);
add(o,ch[o][],xl,xm,ym+,yr,x,y);
add(o,ch[o][],xm+,xr,yl,ym,x,y);
add(o,ch[o][],xm+,xr,ym+,yr,x,y);
}
void link(int o,int xl,int xr,int yl,int yr,int xL,int xR,int yL,int yR)
{
if(!o||xR<xl||xL>xr||yR<yl||yL>yr||d[o+n]<=dis)return;
if(xl>=xL&&xr<=xR&&yl>=yL&&yr<=yR){d[o+n]=dis,q.push((node){o+n,d[o+n]});return;}
int xm=xl+xr>>,ym=yl+yr>>;
link(ch[o][],xl,xm,yl,ym,xL,xR,yL,yR);
link(ch[o][],xl,xm,ym+,yr,xL,xR,yL,yR);
link(ch[o][],xm+,xr,yl,ym,xL,xR,yL,yR);
link(ch[o][],xm+,xr,ym+,yr,xL,xR,yL,yR);
}
int main()
{
scanf("%d%d%d%d",&n,&m,&W,&H);
for(int i=,x,y;i<=n;i++)scanf("%d%d",&x,&y),now=i,add(,rt,,W,,H,x,y);
for(int i=;i<=m;i++)
scanf("%d%d%d%d%d%d",&now,&p[i].w,&p[i].l,&p[i].r,&p[i].u,&p[i].d),G[now].push_back(i);
memset(d,,sizeof d);
d[]=,q.push((node){,});
while(!q.empty())
{
int u=q.top().u;q.pop();
if(vis[u])continue;
vis[u]=;
for(int i=,x;i<G[u].size();i++)
x=G[u][i],dis=d[u]+p[x].w,link(rt,,W,,H,p[x].l,p[x].r,p[x].u,p[x].d);
for(int i=hd[u];i;i=nxt[i])if(d[v[i]]>d[u]+w[i])q.push((node){v[i],d[v[i]]=d[u]+w[i]});
}
for(int i=;i<=n;i++)printf("%d\n",d[i]);
}

最新文章

  1. mysql sleep进程过多,应用级配置
  2. 全新的membership框架Asp.net Identity(1)——.Net membership的历史
  3. PHP访问带密码的Redis
  4. npm -v 一直闪
  5. 深入Spring IOC源码之ResourceLoader
  6. 用uGUI开发自定义Toggle Slider控件
  7. Oracle Database Links解析
  8. HDOJ多校联合第五场
  9. 【原】Spark on YARN
  10. 关于 IOS Runtime Runloop 2
  11. HTML5简单入门系列(四)
  12. CentOS ulimit
  13. 处理json数据的空数据为任意字符
  14. 接口加密《二》: API权限设计总结
  15. Spring mvc中junit测试遇到com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException错误怎么解决
  16. 利用ELK分析Nginx日志
  17. 关于QT_Creator不能在线调试问题
  18. php排序算法及二分法查找
  19. SSH MVC
  20. Android 手机 黑域

热门文章

  1. 旧iPhone遭禁,会让苹果产业链迎来新转机吗?
  2. 024、Java中字符串连接字符串拼接
  3. HDU - 6205 card card card (尺取法)
  4. TX2开发板Ubuntu16.04设置静态IP
  5. MongoDB 删除,添加副本集,并修改副本集IP等信息
  6. java简写名词解释
  7. 微信小程序调用用百度地图天气功能
  8. Emacs服务器模式以及emacsclient配置
  9. .NET 一次读取几百条数据优化,从原来30分钟优化到30秒
  10. 074-PHP数组元素相乘