博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Luogu P5068][Ynoi2015]我回来了
阅读量:5109 次
发布时间:2019-06-13

本文共 1891 字,大约阅读时间需要 6 分钟。

题目链接:

首先这题并不难,只是duliu卡常数罢了,是Ynoi里面比较友好的一道题。

先预处理\(f[i][j]\)表示\(Dist(i,k)\le j\)的点\(k\)集合,那么对每一个点BFS一边

然后求答案的话取个并集就好了。

以上步骤都可以用bitset加速

时间复杂度 \(O(nm+\frac{n^3}{32}+\frac{n\sum a}{32})\)

还有一点,分析复杂度你会发现BFS竟然是这个题复杂度的瓶颈。。

如果你使用前向星存图就会全部TLE,可以用std::vector或者开\(n\)个栈来存图(这题要判重边),这样由于内存连续就可以卡Cache从而AC

全手写了一边,卡了Luogu Rank2,卡常真好玩

代码:

//Absoulute LanrTabe#include 
#include
#include
#define rint register inttypedef unsigned int ui;#define Getchar (p1==p2&&(p2=(p1=In)+fread(In,1,1<<21,stdin),p1==p2)?EOF:*p1++)char In[1<<21],*p1=In,*p2=In,Ch;inline int Getint(rint x=0){ while(!isdigit(Ch=Getchar)); for(;isdigit(Ch);Ch=Getchar)x=x*10+(Ch^48); return x;}inline int Min(const int a,const int b){return a
>5]|=1u<<(p&0x1f);} int Count(rint s=0){for(rint i=0;i<33;++i)s+=Cnt[a[i]&0xffff]+Cnt[a[i]>>16&0xffff];return s;} inline void operator|=(const Bitset &o){for(rint i=0;i<33;++i)a[i]|=o.a[i];}}f[1005][1005],S;int n,m,q,G[1005][1005],Gs[1005];int Dis[1005],Q[1005],Qh,Qt,Md[1005];bool Gv[1005][1005];int main(){ //freopen("in.txt","r",stdin); for(rint i=1;i<=0xffff;++i)Cnt[i]=Cnt[i>>1]+(i&1); n=Getint(),m=Getint(),q=Getint(); for(rint x,y;m--;) { x=Getint(),y=Getint(); if(!Gv[x][y]&&!Gv[y][x])G[x][++Gs[x]]=y,G[y][++Gs[y]]=x,Gv[x][y]=Gv[y][x]=true; } for(rint s=1;s<=n;++s) { memset(Dis,-1,sizeof Dis),Dis[Q[Qh=Qt=1]=s]=0; for(rint x,d;Qh<=Qt;) { d=Dis[x=Q[Qh++]],Md[s]=d,f[s][d].Set(x); for(rint i=Gs[x],y;i>=1;--i)if(Dis[y=G[x][i]]==-1)Dis[Q[++Qt]=y]=d+1; } for(rint i=1;i<=Md[s];++i)f[s][i]|=f[s][i-1]; } for(rint a,x,y;q--;printf("%d\n",S.Count())) for(S.Reset(),a=Getint();a--;S|=f[x][Min(y,Md[x])]) x=Getint(),y=Getint(); return 0;}

转载于:https://www.cnblogs.com/LanrTabe/p/11598388.html

你可能感兴趣的文章
洛谷 1449——后缀表达式(线性数据结构)
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
(转)Android之发送短信的两种方式
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>