「Ynoi2015」我回来了

这东西已经不是 Ynoi 了,因为太水被嫌弃了。

如何提升自己的数据结构能力?从Ynoi做起

题目链接

其实这个题很小清新的辣,而且不卡常。

由于边权为 \(1\),所以 \(\texttt{BFS}\) 预处理出任意两点间距离。

记录 \(f[i][j]\) 为与点 \(i\) 距离 \(\le j\) 的点的集合。

这里我们可以使用 \(\texttt{bitset}\) 维护。

然后每次将对应的集合并上去即可。

时间复杂度 \(O(\max(n(n+m),\frac{n^3+\sum k}{w}))\)。

贴代码

/*---Author:HenryHuang---*/
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
bitset<maxn> f[maxn][maxn];
vector<int> d[maxn];
int dis[maxn];
int n,m,T;
void bfs(int x){
queue<int> Q;
memset(dis,0,sizeof dis);
Q.push(x);
while(!Q.empty()){
int u=Q.front();Q.pop();
for(auto v:d[u]){
if(!dis[v]&&v!=x){
dis[v]=dis[u]+1;
Q.push(v);
}
}
}
for(int i=1;i<=n;++i)
if(dis[i]!=0||i==x)
f[x][dis[i]].set(i);
for(int i=1;i<=n;++i)
f[x][i]|=f[x][i-1];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>m>>T;
for(int i=1;i<=m;++i){
int a,b;
cin>>a>>b;
d[a].emplace_back(b),d[b].emplace_back(a);
}
for(int i=1;i<=n;++i) bfs(i);
while(T--){
int k;
cin>>k;
bitset<maxn>ans;
// ans.set();
for(int i=1;i<=k;++i){
int x,y;
cin>>x>>y;
ans|=f[x][y];
}
cout<<ans.count()<<'\n';
}
return 0;
}

「Ynoi2015」我回来了的更多相关文章

  1. LOJ #2135. 「ZJOI2015」幻想乡战略游戏(点分树)

    题意 给你一颗 \(n\) 个点的树,每个点的度数不超过 \(20\) ,有 \(q\) 次修改点权的操作. 需要动态维护带权重心,也就是找到一个点 \(v\) 使得 \(\displaystyle ...

  2. 「Python」socket指南

    开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以 ...

  3. 「模板」 FHQ_Treap 区间翻转

    「模板」 FHQ_Treap 区间翻转 没有旋转的 Treap 实现区间操作的功能,很好理解,也很好写,只是速度不算太快. 对于要翻转的区间,把整棵 Treap(存有区间 \([1,n]\) 的信息) ...

  4. Android逆向之旅---静态方式分析破解视频编辑应用「Vue」水印问题

    一.故事背景 现在很多人都喜欢玩文艺,特别是我身边的UI们,拍照一分钟修图半小时.就是为了能够在朋友圈显得逼格高,不过的确是挺好看的,修图的软件太多了就不多说了,而且一般都没有水印啥的.相比较短视频有 ...

  5. 「NOI2004」「LuoguP1486」郁闷的出纳员

    Descrption OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调 ...

  6. 「NOI2012」迷失游乐园

    「NOI2012」迷失游乐园 题目描述 放假了,小Z觉得呆在家里特别无聊,于是决定一个人去游乐园玩. 进入游乐园后,小Z看了看游乐园的地图,发现可以将游乐园抽象成有n个景点.m条道路的无向连通图,且该 ...

  7. 「NOI2017」蚯蚓排队 解题报告

    「NOI2017」蚯蚓排队 这题真的草 你考虑\(k\)这么小,每次合并两个串,增加的有用串的数量是\(O(k^2)\)的,暴力加入这些串,求一下这些串的Hash值,塞到Hash表里面去 这里采用类似 ...

  8. 「MoreThanJava」Day 4:面向对象基础

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  9. 「译」JUnit 5 系列:条件测试

    原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...

随机推荐

  1. 多边形游戏——区间dp

    题目描述 多边形(Polygon)游戏是单人玩的游戏,开始的时候给定一个由N个顶点构成的多边形(图1所示的例子中,N=4),每个顶点被赋予一个整数值,而每条边则被赋予一个符号:+(加法运算)或者*(乘 ...

  2. springboot 搭配redis缓存

    1.引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId&g ...

  3. 昇腾AI 软硬件全栈平台

    昇腾AI 软硬件全栈平台

  4. TensorFlow分布式(多GPU和多服务器)详解

    本文介绍有关 TensorFlow 分布式的两个实际用例,分别是数据并行(将数据分布到多个 GPU 上)和多服务器分配. 玩转分布式TensorFlow:多个GPU和一个CPU展示一个数据并行的例子, ...

  5. MindSpore部署图像分割示例程序

    MindSpore部署图像分割示例程序 本端侧图像分割Android示例程序使用Java实现,Java层主要通过Android Camera 2 API实现摄像头获取图像帧,进行相应的图像处理,之后调 ...

  6. TinyML-TVM是如何驯服Tiny的(下)

    TinyML-TVM是如何驯服Tiny的(下) Lazy Execution实际上,随着通信开销开始占主导地位,一旦用户请求,就执行算子的开销变得非常昂贵.可以通过延迟评估直到用户需要调用的结果来提高 ...

  7. yum安装时提示“尚未安装任何 GPG 公钥,请下载您希望安装的软件签名公钥并安装”

    在Linux操作系统中,安装软件依赖包时,出现了尚未安装任何 GPG 公钥,要求使用rpm --import public.gpg.key导入  问题: [root@server7 yum.repos ...

  8. robotframework常用关键字

    robotframework关键字 可以将关键字看作是处理数据的方法.robotframework的关键字和测试数据组成了测试用例. robotframework关键字包括系统关键字和用户关键字.用户 ...

  9. MySQL:数据库优化,看这篇就够了

    数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1. 优化一览 ...

  10. 一篇文章带你吃透,Java界最神秘技术ClassLoader

    ClassLoader 是 Java 届最为神秘的技术之一,无数人被它伤透了脑筋,摸不清门道究竟在哪里.网上的文章也是一篇又一篇,经过本人的亲自鉴定,绝大部分内容都是在误导别人.本文我带读者彻底吃透 ...