「Ynoi2015」我回来了
「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」我回来了的更多相关文章
- LOJ #2135. 「ZJOI2015」幻想乡战略游戏(点分树)
题意 给你一颗 \(n\) 个点的树,每个点的度数不超过 \(20\) ,有 \(q\) 次修改点权的操作. 需要动态维护带权重心,也就是找到一个点 \(v\) 使得 \(\displaystyle ...
- 「Python」socket指南
开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以 ...
- 「模板」 FHQ_Treap 区间翻转
「模板」 FHQ_Treap 区间翻转 没有旋转的 Treap 实现区间操作的功能,很好理解,也很好写,只是速度不算太快. 对于要翻转的区间,把整棵 Treap(存有区间 \([1,n]\) 的信息) ...
- Android逆向之旅---静态方式分析破解视频编辑应用「Vue」水印问题
一.故事背景 现在很多人都喜欢玩文艺,特别是我身边的UI们,拍照一分钟修图半小时.就是为了能够在朋友圈显得逼格高,不过的确是挺好看的,修图的软件太多了就不多说了,而且一般都没有水印啥的.相比较短视频有 ...
- 「NOI2004」「LuoguP1486」郁闷的出纳员
Descrption OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调 ...
- 「NOI2012」迷失游乐园
「NOI2012」迷失游乐园 题目描述 放假了,小Z觉得呆在家里特别无聊,于是决定一个人去游乐园玩. 进入游乐园后,小Z看了看游乐园的地图,发现可以将游乐园抽象成有n个景点.m条道路的无向连通图,且该 ...
- 「NOI2017」蚯蚓排队 解题报告
「NOI2017」蚯蚓排队 这题真的草 你考虑\(k\)这么小,每次合并两个串,增加的有用串的数量是\(O(k^2)\)的,暴力加入这些串,求一下这些串的Hash值,塞到Hash表里面去 这里采用类似 ...
- 「MoreThanJava」Day 4:面向对象基础
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 「译」JUnit 5 系列:条件测试
原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...
随机推荐
- Nginx实战部署常用功能演示(超详细版),绝对给力~~~
前言 上次分享了一些开发过程中常用的功能,但如果到真实环境中,其实还需要一些额外的配置,比如说跨域.缓存.配置SSL证书.高可用等,老规矩,还是挑几个平时比较常用的进行演示分享.上篇详见Nginx超详 ...
- IDEA 最实用快捷键【MAC版本】
目录 option + F7 Ctrl + B / Ctrl +鼠标左键(一键两用,可以无限循环的跳过来跳过去,我跳过去了,我又跳回去了) command + E (这个快捷键很有用,为什么我老是用不 ...
- Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法
Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法 之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...
- GO语言的JSON02---反序列化
package main import ( "encoding/json" "fmt" ) type Human struct { Name string Ag ...
- windows 映射驱动器 图标显示不正常
正常图标是这样的: 我的变成了这样: 解决方法: 注册表进入: HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\Explorer.exe\Drives\ ...
- Docker系列——Grafana+Prometheus+Node-exporter微信推送(三)
在之前博文中,已经成功的实现了邮件推送.目前主流的办公终端,就是企业微信.钉钉.飞书.今天来分享下微信推送,我们具体来看. 企业微信 在配置企业微信推送时,需要有微信企业,具体如何注册.使用,另外百度 ...
- 三、DNS子域授权
前提:准备两台虚拟机:父域: www.tedu.cn(虚拟机A)子域:www.bj.tedu.cn(虚拟机B) 一.在两台虚拟机上安装域名解析软件 root@pc207 ~]# yum -y inst ...
- 学废了系列 - WebGIS vs WebGL图形编程
目前工作中有不少涉及到地图的项目,我参加了几次技术评审,前端伙伴们在 WebGIS 方面的知识储备稍有不足,这次分享的主要目的是科普一些在前端领域比较常用的 WebGIS 知识.另外,我之前的工作中积 ...
- .NET Core/.NET5/.NET6 开源项目汇总2:任务调度组件
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- 一次性搞清Java中的类加载问题
摘要:很多时候提到类加载,大家总是没法马上回忆起顺序,这篇文章会用一个例子为你把类加载的诸多问题一次性澄清. 本文分享自华为云社区<用1个例子加5个问题,一次性搞清java中的类加载问题[奔跑吧 ...