CF1168C
CF1168C
从后往前扫一遍维护\(f[x][k]\)表示从开始x至少要走到那个位置才能到达一个第\(k\)位是1的数
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
int n,m,a[310001],w[20][20],e[20],f[310001][20],x,y,d[20];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
memset(w,0x3f,sizeof(w));
memset(f,0x3f,sizeof(f));
for(int i=n;i>=1;i--)
{
memset(e,0,sizeof(e)); memset(d,0x3f,sizeof(d)); int ct=0;
for(int j=0;j<=18;j++) if(a[i]&(1<<j)) e[++ct]=j,w[j][j]=i;
for(int j=1;j<ct;j++)
for(int k=j+1;k<=ct;k++) w[e[j]][e[k]]=w[e[k]][e[j]]=i;
for(int j=0;j<=18;j++)
for(int k=1;k<=ct;k++) d[j]=min(d[j],w[e[k]][j]);
for(int j=0;j<=18;j++)
for(int k=1;k<=ct;k++) w[e[k]][j]=d[j];
for(int j=1;j<=ct;j++)
for(int k=0;k<=18;k++) f[i][k]=min(f[i][k],w[e[j]][k]);
}
for(;m;m--)
{
scanf("%d%d",&x,&y); int B=0;
for(int k=0;k<=18;k++) if(a[y]&(1<<k)) if(f[x][k]<=y) B=1;
if(B) printf("Shi\n");
else printf("Fou\n");
}
}
CF1168C的更多相关文章
- CF1168C And Reachability 【构造,dp】
题目链接:洛谷 题目描述:给出$n$个数$a_i$,若$i<j$且$a_i & a_j>0$,则$i$到$j$连一条有向边,$q$次询问,询问从$l$开始是否能到达$r$. 数据范 ...
- CF1168C And Reachability(DP)
首先定义 $g[i][j]$ 表示 $i$ 前面(不包括 $i$)第一个第 $j$ 位是 $1$ 的数的位置.可以随便转移. 再定义 $f[i][j]$ 表示 $i$ 前面(包括 $i$)第一个第 $ ...
- 在$CF$水题の记录
CF1158C CF1163E update after CF1173 很好,我!expert!掉rating了!! 成为pupil指日可待== 下次要记得合理安排时间== ps.一道题都没写的\(a ...
随机推荐
- 博弈的dfs
题目: 链接:https://ac.nowcoder.com/acm/contest/283/D来源:牛客网 小西买了一堆肥宅快乐水和肥宅快乐茶,准备和室友比谁更肥宅. 快乐水有A瓶,快乐茶B瓶. 小 ...
- dictionary小项目代码管理
软件项目开发流程 需求分析 ----> 概要设计 ---> 项目计划 ---->详细设计--->编码测试 -----> 项目测试 ---->调试修改 ---> ...
- java运算注意事项
/* 对于byte.short.char.插入三种类型来说,如果右侧固执的数值没有超过范围,那么java编译器就会自动隐含地位我们 补上一个(byte) ,(short),(char) 1.如果没有超 ...
- C++ 浅谈 strlen 与 sizeof的区别
先举个栗子: 字符串数组跟字符串指针,然后分别使用sizeof跟strlen看输出结果. char strA[] = "2017-7-19"; char *strB = " ...
- Jquery对象转js对象
$(this) Jquery对象 var sex=$(this).get(0); js对象 sex.style.display='block';
- Redis端口配置
redis.host=192.168.200.128redis.port=6379redis.pass=redis.database=0redis.maxIdle=300redis.maxWait=3 ...
- font-size-adjust属性定义及用法
font-size-adjust属性定义及用法 在css中,font-size-adjust属性是使用来更好的控制字体大小,当第一个选择的字体不可用时,浏览器使用第二个指定的字体,这可能会导致改变字体 ...
- Myeclipse下使用Maven搭建spring boot2.0项目
现在需要搭建spring boot框架,并实现一个HelloWorld的项目,让程序真正运行起来. 一.在pom.xml中引入spring-boot-start-parent,spring官方的叫st ...
- 修改Mysql数据库的字符集
1.先检查数据库的默认字符集是否是引起不能存储中文的原因: 登录数据库后执行下面的命令 mysql> show variables like 'character%'; 由上图可以看出,data ...
- HTML5: HTML5 介绍
ylbtech-HTML5: HTML5 介绍 1. 什么是 HTML5?返回顶部 HTML5 是下一代 HTML 标准. HTML,HTML 4.01的上一个版本诞生于1999年.自从那儿以后, ...