题面

分块思想+最短路

发现对于步长小的doge会连出很多边,很容易导致大量的重边,于是对doge们根据步长分块讨论:根据步长建出分层图,然后把步长不超过某个值的doge们连到对应层上的点上,其余的doge暴力连边,最后在分层图的每层中间把边连满然后跑最短路,这样边数是$O(n$ $sqrt(n))$的

注意:此题数据非常辣鸡,如果确定算法是对的然后被卡了可以问候一下出题人然后摸走,没啥调的必要,主要体现在:

1.只对步长为1的doge们建分层图,然后其余doge们暴力连边,会跑的飞起(吊打“正常”连法)

2.上文的“正常”是指将块大小与$100$取min,不然会连爆。那为什么是和$100$取min呢?因为试出来是这样的,呵呵

3.不知道数据怎么造的,好像太**稀疏了,以至于队列优化的Bellman-Ford跑的比Dijkstra还快,甚至Dijkstra会被卡常

心里默默问候无良出题人

 // luogu-judger-enable-o2
#include<cmath>
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=,inf=0x3f3f3f3f;
struct a{int node,dist;};
bool operator <(a x,a y)
{
return x.dist>y.dist;
}
priority_queue<a> hp;
int n,m,c,t1,t2,st,ed,cnt,sqr;
int dis[N],vis[N],val[*M];
int p[N],noww[*M],goal[*M];
void link(int f,int t,int v)
{
noww[++cnt]=p[f],p[f]=cnt;
goal[cnt]=t,val[cnt]=v;
}
void Dijkstra()
{
register int i;
memset(dis,0x3f,sizeof dis);
hp.push((a){st,}),dis[st]=;
while(!hp.empty())
{
a tt=hp.top(); hp.pop(); int tn=tt.node;
if(vis[tn]) continue; vis[tn]=true;
for(i=p[tn];i;i=noww[i])
if(dis[goal[i]]>dis[tn]+val[i])
{
dis[goal[i]]=dis[tn]+val[i];
hp.push((a){goal[i],dis[goal[i]]});
}
}
}
int main ()
{
register int i,j;
scanf("%d%d",&n,&m),sqr=min((int)sqrt(n),);
for(i=;i<=m;i++)
{
scanf("%d%d",&t1,&t2),t1++;
if(i==) st=t1; if(i==) ed=t1;
if(t2<=sqr)
link(t1,t2*n+t1,);
else
{
for(j=t1-t2,c=;j>=;j-=t2,c++) link(t1,j,c);
for(j=t1+t2,c=;j<=n;j+=t2,c++) link(t1,j,c);
}
}
for(i=;i<=sqr;i++)
for(j=;j<=n;j++)
{
if(j-i>=) link(i*n+j,i*n+j-i,);
if(j+i<=n) link(i*n+j,i*n+j+i,);
link(i*n+j,j,);
}
Dijkstra(); dis[ed]==inf?printf("-1"):printf("%d",dis[ed]);
return ;
}

解题:APIO 2015 雅加达的摩天大楼的更多相关文章

  1. [APIO 2015] 雅加达的摩天楼

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4070 [算法] 考虑将每个"Doge"向其所能到达的楼连边 直接 ...

  2. 【CTSC 2015】&【APIO 2015】酱油记

    蒟蒻有幸参加了神犇云集的CTSC & APIO 2015,感觉真是被虐成傻逼了……这几天一直没更新博客,今天就来补一下吧~~(不过不是题解……) Day 0 从太原到北京现在坐高铁只需3小时= ...

  3. 【BZOJ 4070】【APIO 2015】雅加达的摩天楼

    http://www.lydsy.com/JudgeOnline/problem.php?id=4070 分块建图. 对每个\(P_i\)分类讨论,\(P_i>\sqrt N\)则直接连边,边数 ...

  4. CTSC&&APIO 2015 酱油记

    在北京待了一周多,还是写点记录吧. 人民大学校园还是挺不错的,不过伙食差评. CTSC的题目太神,根本不会搞,一试20二试10分..本来都寄希望于提交答案题的..结果就悲剧了. 然后是听大爷们的论文答 ...

  5. APIO 2015

    老师让我们打这套题练练手.感觉这套题还是挺有意思的,比国内某些比赛不知道高到哪里去.最后我拿了284/300,貌似比赛是IOI赛制啊,强行被当成OI赛制做了,不然我T3可能还能多骗点. T1.scul ...

  6. luogu3645 [Apio2015]雅加达的摩天大楼 (分块+dijkstra)

    我们是想跑最短路的 我们有两种建图方式: 1.对于每个doge i,连向B[j]==B[i]+P[i]*k ,k=..,-2,-1,0,1,2,... ,边权=|k|,这样连的复杂度是$O(N\sum ...

  7. 【UOJ #112】【APIO 2015】Palembang Bridges

    http://uoj.ac/problem/112 先扣掉在同一侧的情况. 当\(k=1\)时,桥建在所有位置的中位数. 当\(k=2\)时,对于每个居民\((S_i,T_i)\),这个居民只会走离\ ...

  8. 【UOJ #110】【APIO 2015】Bali Sculptures

    http://uoj.ac/problem/110 这道题subtask4和subtask5是不同的算法. 主要思想都是从高位到低位贪心确定答案. 对于subtask4,n比较小,设\(f(i,j)\ ...

  9. 2015 CTSC & APIO滚粗记

    o诶人太弱..... 记一发滚粗记以便治疗我的健忘症= = //文章会不定时修改,添加一些内容什么的...因此最好看一下刷新一下(因为有可能你正在看= =我正在写... 5.2 早上9点坐上长达11小 ...

随机推荐

  1. 初次学习asp.net core的心得

    初次学习Asp.Net Core方面的东西,虽然研究的还不是很深,今天主要是学习了一下Asp.Net Core WebAPI项目的使用,发现与Asp.Net WebAPI项目还是有很多不同.不同点包含 ...

  2. Java飞机大战MVC版

    PlaneWar Java飞机大战MVC版 //无聊时偷的雷霆战机素材写了一个飞机大战,本意是练习mvc,但写得还是不清晰 github下载:https://github.com/dejavudwh/ ...

  3. Atom 插件 Sync Settings 备份与恢复

    当使用 Atom IDEA.随着使用的越来越多,安装的插件也越来越多,一旦电脑重装后需要复原开发环境,这将是一件比较头疼的事.「Sync Settings」插件可以帮助我们解决这个问题. 操作流程 安 ...

  4. cinder的组件

    跟nova相似,cinder也有很多组件,每个组件负责各自的业务,然后共同协作完成volume的管理.组件之间的通信方式与nova个组件之间的通信方式相同,都是通过消息队列进行通信. cinder-a ...

  5. 解决登录linux输入密码问题

    1.使用密钥 ssh-keyssh -i .ssh/*.key root@<ip_addr> 2.使用sshpass 安装 rpm 包:yum install sshpass 配置文件: ...

  6. PowerDesigne 建立概念数据模型

    本文主要介绍PowerDesigner概念数据模型以及实体.属性创建. 一.新建概念数据模型1)选择File-->New,弹出如图所示对话框,选择CDM模型(即概念数据模型)建立模型. 2)完成 ...

  7. 《数据结构与算法JavaScript描述》中的一处错误

    最近在看<数据结构与算法JavaScript描述>这本书,看到选择排序这部分时,发现一个比较大的错误. 原书的选择排序算法是这样的: function selectionSort() { ...

  8. 关于jsonp跨域的 实现

    1.实现原理    1.把接口写在 script标签的src 中 这个接口就可以访问(不会存在跨域问题  因为接口在浏览器地址栏是可以访问的  会返回json字符串); 2.直接写不可以  因为正常情 ...

  9. 改进意见的答复及bug重现

    各组对本组的互评链接如下 Thunder:http://www.cnblogs.com/vector121/p/7905300.html 王者荣耀交流协会:http://www.cnblogs.com ...

  10. Linux系统LVS搭建笔记

    因为客户是国有企业,且一次性购买了14台服务器(16核),14台中暂且先用8台,其中LVS使用5台,NFS一台主要为了共享WEB系统(多台电脑的1.5T的硬盘容量浪费了).MySQL两台,Memcac ...