CF1168C And Reachability(DP)
首先定义 $g[i][j]$ 表示 $i$ 前面(不包括 $i$)第一个第 $j$ 位是 $1$ 的数的位置。可以随便转移。
再定义 $f[i][j]$ 表示 $i$ 前面(包括 $i$)第一个第 $j$ 位是 $1$ 的数,且能通过题面的操作跳到 $i$ 的位置。
也能随便转移。先判断 $i$ 自己可不可以,可以就直接搞,不可以就找一个中介位 $k$($a_i$ 的第 $k$ 位必须是 $1$),$f[g[i][k]][j]$ 一定是可以跳到的。因为 $i$ 肯定能从 $g[i][k]$ 跳到(都有第 $k$ 位),$g[i][k]$ 肯定能从 $f[g[i][k]][j]$ 跳到(定义)。
对于询问,找一个中介位 $k$($a_l$ 的第 $k$ 位必须是 $1$),那么 $r$ 可以从 $f[r][k]$ 跳到。当且仅当 $f[r][k]\ge l$ 时,$f[r][k]$ 可以从 $l$ 跳到。 所以判一下所有的 $k$ 即可。
时间复杂度 $O(n\log^2 v+q\log v)$。(代码实现优秀一点似乎可以一个 $\log$?)
- #include<bits/stdc++.h>
- using namespace std;
- const int maxn=;
- #define FOR(i,a,b) for(int i=(a);i<=(b);i++)
- #define ROF(i,a,b) for(int i=(a);i>=(b);i--)
- #define MEM(x,v) memset(x,v,sizeof(x))
- inline int read(){
- int x=,f=;char ch=getchar();
- while(ch<'' || ch>'') f|=ch=='-',ch=getchar();
- while(ch>='' && ch<='') x=x*+ch-'',ch=getchar();
- return f?-x:x;
- }
- int n,q,a[maxn],f[maxn][],g[maxn][],hhh[];
- int main(){
- n=read();q=read();
- FOR(i,,n) a[i]=read();
- FOR(i,,n){
- FOR(j,,) g[i][j]=hhh[j];
- FOR(j,,) if((a[i]>>j)&) hhh[j]=i;
- }
- FOR(i,,n){
- FOR(j,,) if((a[i]>>j)&) f[i][j]=i;
- else FOR(k,,) if((a[i]>>k)&) f[i][j]=max(f[i][j],f[g[i][k]][j]);
- }
- while(q--){
- int l=read(),r=read();
- bool flag=false;
- FOR(i,,) if((a[l]>>i)&) flag|=f[r][i]>=l;
- puts(flag?"Shi":"Fou");
- }
- }
CF1168C And Reachability(DP)的更多相关文章
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
- 最长公共子序列长度(dp)
/// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...
随机推荐
- Qt 编译配置相关总结
MinGW 与 MSVC 编译的区别 我们可以从 Qt 下载页面看到两种版本编译器,如下图: 我们来对比一下这两个编译器的区别: MSVC 是指微软的 VC 编译器. MinGW 是 Minimali ...
- Unity Shader 屏幕后效果——摄像机运动模糊(速度映射图实现)
速度映射图主要是为了得到每个像素相对于前一帧的运动矢量,其中一种方法是使用摄像机的深度纹理来推导. 推导过程如下: 先由深度纹理逆推出NDC(归一化的设备坐标)下的顶点坐标,利用VP矩阵(视角*投影矩 ...
- Jvisualvm简单使用教程
本博客介绍一下jvisualvm的简单使用教程,jvisualvm功能还是挺多的,不过本博客之简单介绍一下 1.拿线程快照信息 在jdk安装目录找到jvisualvm.exe,${JDK_HOME}\ ...
- Vue.js 源码分析(三十) 高级应用 函数式组件 详解
函数式组件比较特殊,也非常的灵活,它可以根据传入该组件的内容动态的渲染成任意想要的节点,在一些比较复杂的高级组件里用到,比如Vue-router里的<router-view>组件就是一个函 ...
- 你真的了解nginx重定向URI?-rewrite和alias指令
未经允许不得转载!最近发现有博主转载我的文章,并没有跟我打招呼,也没有注明出处!!!! 熟悉Nginx的同学都知道Nginx可以用来做负载均衡和反向代理,非常好用.做前后端分离也是非常的方便. 今天我 ...
- linux 查找被删除但是未被释放空间的文件 并释放资源
使用du -sh 和df -h 查看/data目录,发现结果相差一半,后来了解到: 使用rm命令删除文件时,只有当该文件不存在任何link才会被删除 当有进程访问这个文件时,这个文件的实际占用空间就 ...
- sql server中的临时表、表变量和公用表表达式
在编写T-SQL语句的时候,SQL Server提供了三种方法临时存储某些结果集,分别是临时表.表变量和公用表表达式. 临时表 临时表需要在临时数据库TempDB中通过I/O操作来创建表结构,一旦用户 ...
- 解决Chrome插件安装时程序包无效【CRX_HEADER_INVALID】的错误
将[.crx]后缀的文件拖拽至谷歌浏览器开发者模式下的扩展程序管理页签时,报错[CRX_HEADER_INVALID],即此插件无效的错误. 安装失败的原因 原因在于谷歌浏览器在新版本中添加对第三方插 ...
- NoNodeAvailableException[None of the configured nodes are available:[.127.0.0.1}{127.0.0.1:9300]
我在springboot 集成 elasticsearch,启动springboot测试创建索引,建立索引的时候报 : NoNodeAvailableException[None of the con ...
- RFC函数的初步使用-同步
1.由于没有外围系统,采用不同SAP不同client之间进行测试. 首先在A-client搭建需要被调用的RFC函数.在A-client里运行SE37创建函数 在属性页签选择“远程启用的模块” 设定i ...