洞穴

思路:

矩阵乘法

由于只需要知道 A ^ l 的 第a行第b个元素

所以我们每次在做矩阵乘法时只需要算第a行就可以了

还要像矩阵快速幂一样预处理A ^ (1<<d)

代码:

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pli, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//headconst int N = 105;
bool a[N][N][35];
bool t[N][2];
int main() {int n, m, u, v, q, l;scanf("%d %d", &n, &m);for (int i = 0; i < m; i++) {scanf("%d %d", &u, &v);a[u][v][0] = true;}for (int d = 1; d <= 30; d++) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if(a[i][j][d-1])for (int k = 1; k <= n; k++) {if(a[j][k][d-1]) {a[i][k][d] = true;}}}}}scanf("%d", &q);while(q--) {scanf("%d %d %d", &l, &u, &v);int now = 1;for (int i = 1; i <= n; i++) t[i][now] = 0;t[u][now] = 1;for (int i = 30; i >= 0; i--) {if(l&(1<<i)) {now ^= 1;for (int j = 1; j <= n; j++) t[j][now] = 0;for (int j = 1; j <= n; j++) {if(t[j][now^1]) {for (int k = 1; k <= n; k++) {if(a[j][k][i])t[k][now] = 1;}}}}}if(t[v][now]) puts("YES");else puts("NO");}return 0;
}

转载于:https://www.cnblogs.com/widsom/p/9885009.html

牛客网NOIP赛前集训营-提高组(第七场)C 洞穴相关推荐

  1. 牛客网NOIP赛前集训营 提高组 第5场 T2 旅游

    [题解] 我们可以发现不在最小生成树上的边一定不能多次经过,因为一条不在最小生成树上的边(u,v)的边权比最小生成树上(u,v)之间的路径更长,选择不在最小生成树上的边一定不划算. 我们还需要确定最小 ...

  2. 牛客网NOIP赛前集训营 提高组(第七场)

    中国式家长 2 链接:https://www.nowcoder.com/acm/contest/179/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K ...

  3. 牛客网NOIP赛前集训营-提高组(第六场)B-选择题

    题目描述 有一道选择题,有 a,b,c,d 四个选项. 现在有 n 个人来做这题,第 i 个人有 pi,j 的概率选第 j 个选项. 定义\(cnt(x)\)为选第$ x $个选项的人数. 令\(mx ...

  4. 牛客网NOIP赛前集训营-提高组(第六场)B-选择题[背包]

    题意 题目链接 分析 直接背包之后可以 \(O(n)\) 去除一个物品的影响. 注意特判 \([p==1]\) 的情况. 总时间复杂度为 \(O(n^2)\) . 代码 #include<bit ...

  5. [NowCoder]牛客网NOIP赛前集训营-提高组(第六场)题解

    A.最长路 题意:给定有向图,每条边有个字符\([0,10^9]\),求每个点最长路字典序最小的方案.\(N,M\le 10^6\) 建反图跑拓扑排序,显然入过队的点都有最长路,考虑如何判断字典序大小 ...

  6. 牛客网NOIP赛前集训营-提高组(第七场)C-洞穴

    题目描述 有一天,牛牛找到了一个巨大的洞穴.洞穴可以描述成一个有向图,一共有\(N\)个节点(从\(1\)到\(N\)编号)和\(M\)条长度为\(1\)的有向边,每条边从某一个节点\(u\)连向另一 ...

  7. 【题解】[牛客网NOIP赛前集训营-提高组(第七场)]C.洞穴 倍增优化DP+bitset

    题目链接 #include<cstdio> #include<bitset> using namespace std; const int N=110; int n,m,q; ...

  8. 牛客网NOIP赛前集训营-普及组(第一场)

    前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现 ...

  9. Nowcoder | [题解-N165]牛客网NOIP赛前集训营-普及组(第二场)

    啊...表示一大早还没睡醒就开始打比赛(开始前一分钟的我还在桌子上趴着休眠)...表示题目思路清奇(尤其C题)...但是我还是太蒻了...\(D\)题暴力都没打...题解正式开始之前先\(\%\)一下 ...

最新文章

  1. 太多选择——企业如何选择合适的BI工具?
  2. Unity3d HDR和Bloom效果(高动态范围图像和泛光)
  3. 批量下载ABAP程序和表结构
  4. C#------如何判断输入的是否为纯数字
  5. 报错型sql注入原理分析
  6. php 字符串的比较大小,php怎么比较两个字符串的大小
  7. b超可以看出什么_B超可以查出什么
  8. 时域离散信号/系统频域分析(matlab)零点,极点,因果,稳定
  9. 利润表模板excel_德勤HR:请1小时内,用Excel搭建哔哩哔哩财务估值模型
  10. JS-- jQuery遮罩插件 jquery.blockUI.js
  11. 递归应用之谢尔宾斯基三角形Python
  12. matlab 求不规则体积,matlab,求不规则三维图形体积?
  13. 数据分析的工作目标是什么
  14. 绘制3d散点图报错ax = fig.gca(projection = ‘3d‘)TypeError: gca() got an unexpected keyword argument
  15. 三层交换机内网访问外网
  16. mr编程实现手机流量统计和读取MySQL数据
  17. 程序猿必备的数电知识之(逻辑代数基础后半篇)
  18. Casbin 账号密码泄漏漏洞
  19. java两玩家石头剪刀布获胜法,石头剪刀布Java实现
  20. Spring Framework源码使用 spring-aspects AOP遇到的问题

热门文章

  1. 微信浏览器中iframe srcdoc、src=data:text/html,xxxx 等无法使用情况下防止样式污染的解决方案
  2. 【报告分享】WEIQ红人营销平台双11红人营销报告-WEIQ(附下载)
  3. CSS样式 盒模型中的border属性的书写顺序
  4. JS 实现驼峰式转下横线,下横线转驼峰式4
  5. 在线分割、合并PDF文件网站
  6. Visual Studio Code编辑器设置字号和行间距详细步骤
  7. Qt的卡拉OK歌词效果
  8. 百度程序员开发避坑指南(3)
  9. 发动机悬置系统冲击仿真-瞬时模态动态分析与响应谱分析
  10. 深度学习“四大名著”电子书限时直领