牛客网NOIP赛前集训营-提高组(第七场)C 洞穴
洞穴
思路:
矩阵乘法
由于只需要知道 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 洞穴相关推荐
- 牛客网NOIP赛前集训营 提高组 第5场 T2 旅游
[题解] 我们可以发现不在最小生成树上的边一定不能多次经过,因为一条不在最小生成树上的边(u,v)的边权比最小生成树上(u,v)之间的路径更长,选择不在最小生成树上的边一定不划算. 我们还需要确定最小 ...
- 牛客网NOIP赛前集训营 提高组(第七场)
中国式家长 2 链接:https://www.nowcoder.com/acm/contest/179/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K ...
- 牛客网NOIP赛前集训营-提高组(第六场)B-选择题
题目描述 有一道选择题,有 a,b,c,d 四个选项. 现在有 n 个人来做这题,第 i 个人有 pi,j 的概率选第 j 个选项. 定义\(cnt(x)\)为选第$ x $个选项的人数. 令\(mx ...
- 牛客网NOIP赛前集训营-提高组(第六场)B-选择题[背包]
题意 题目链接 分析 直接背包之后可以 \(O(n)\) 去除一个物品的影响. 注意特判 \([p==1]\) 的情况. 总时间复杂度为 \(O(n^2)\) . 代码 #include<bit ...
- [NowCoder]牛客网NOIP赛前集训营-提高组(第六场)题解
A.最长路 题意:给定有向图,每条边有个字符\([0,10^9]\),求每个点最长路字典序最小的方案.\(N,M\le 10^6\) 建反图跑拓扑排序,显然入过队的点都有最长路,考虑如何判断字典序大小 ...
- 牛客网NOIP赛前集训营-提高组(第七场)C-洞穴
题目描述 有一天,牛牛找到了一个巨大的洞穴.洞穴可以描述成一个有向图,一共有\(N\)个节点(从\(1\)到\(N\)编号)和\(M\)条长度为\(1\)的有向边,每条边从某一个节点\(u\)连向另一 ...
- 【题解】[牛客网NOIP赛前集训营-提高组(第七场)]C.洞穴 倍增优化DP+bitset
题目链接 #include<cstdio> #include<bitset> using namespace std; const int N=110; int n,m,q; ...
- 牛客网NOIP赛前集训营-普及组(第一场)
前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现 ...
- Nowcoder | [题解-N165]牛客网NOIP赛前集训营-普及组(第二场)
啊...表示一大早还没睡醒就开始打比赛(开始前一分钟的我还在桌子上趴着休眠)...表示题目思路清奇(尤其C题)...但是我还是太蒻了...\(D\)题暴力都没打...题解正式开始之前先\(\%\)一下 ...
最新文章
- 太多选择——企业如何选择合适的BI工具?
- Unity3d HDR和Bloom效果(高动态范围图像和泛光)
- 批量下载ABAP程序和表结构
- C#------如何判断输入的是否为纯数字
- 报错型sql注入原理分析
- php 字符串的比较大小,php怎么比较两个字符串的大小
- b超可以看出什么_B超可以查出什么
- 时域离散信号/系统频域分析(matlab)零点,极点,因果,稳定
- 利润表模板excel_德勤HR:请1小时内,用Excel搭建哔哩哔哩财务估值模型
- JS-- jQuery遮罩插件 jquery.blockUI.js
- 递归应用之谢尔宾斯基三角形Python
- matlab 求不规则体积,matlab,求不规则三维图形体积?
- 数据分析的工作目标是什么
- 绘制3d散点图报错ax = fig.gca(projection = ‘3d‘)TypeError: gca() got an unexpected keyword argument
- 三层交换机内网访问外网
- mr编程实现手机流量统计和读取MySQL数据
- 程序猿必备的数电知识之(逻辑代数基础后半篇)
- Casbin 账号密码泄漏漏洞
- java两玩家石头剪刀布获胜法,石头剪刀布Java实现
- Spring Framework源码使用 spring-aspects AOP遇到的问题
热门文章
- 微信浏览器中iframe srcdoc、src=data:text/html,xxxx 等无法使用情况下防止样式污染的解决方案
- 【报告分享】WEIQ红人营销平台双11红人营销报告-WEIQ(附下载)
- CSS样式 盒模型中的border属性的书写顺序
- JS 实现驼峰式转下横线,下横线转驼峰式4
- 在线分割、合并PDF文件网站
- Visual Studio Code编辑器设置字号和行间距详细步骤
- Qt的卡拉OK歌词效果
- 百度程序员开发避坑指南(3)
- 发动机悬置系统冲击仿真-瞬时模态动态分析与响应谱分析
- 深度学习“四大名著”电子书限时直领