要点

  • ‘&’操作暗示二进制上按位思考
  • 对于y为1的位,要求x和y之间要至少有两个此位为1的(包含x、y),这样&起来才不是0.而这些位中只要存在一个是ok的即可
  • dp去求每个x的每个位最早到达的y
const int maxn = 3e5 + 5, Log = 20;
int n, q, a[maxn];
int go[maxn][Log + 5], Last[Log + 5]; int main() {
read(n), read(q);
rep(i, 1, n) read(a[i]); rep(j, 0, Log) {
Last[j] = n + 1;
rep(i, 1, n + 1)//注意这里,因为Last设的是这里
go[i][j] = n + 1;
}
per(i, n, 1) {
rep(j, 0, Log) {
if ((a[i] >> j) & 1) {
go[i][j] = i;
rep(k, 0, Log)
go[i][k] = min(go[i][k], go[Last[j]][k]);
Last[j] = i;
}
}
} for (int x, y; q; q--) {
read(x), read(y);
bool yes = 0;
rep(j, 0, Log)
yes |= ((a[y] >> j) & 1) && (go[x][j] <= y);
puts(yes ? "Shi" : "Fou");
}
return 0;
}

最新文章

  1. 如何在.NET上处理二维码
  2. php-fpm服务启动脚本
  3. Dwz下拉菜单的二级联动
  4. Android ListView实现不同item的方法和原理分析
  5. C++ do{...}while(0)的好处
  6. Play常用代码片段 http://www.anool.net/?p=625
  7. Windows Self Signed Driver
  8. Swift 中的getting和setter的使用
  9. poj1423---求一个大数的位数方法,我猜网站上统计输入字符少于多少位的那个算法
  10. Swagger+Spring MVC框架学习分享
  11. 详解equals()方法和hashCode()方法
  12. 浏览器与服务端请求响应流程与HTTP协议
  13. jdbc链接数据库
  14. Python3字符串的操作
  15. JavaScript中解决计算精度丢失的问题
  16. Python数据挖掘和机器学习
  17. c#异常重试机制
  18. ssh连接虚拟机centos
  19. 终极解决liunx GUI 无法显示中文的问题。
  20. boost::asio::ip::tcp实现网络通信的小例子

热门文章

  1. POJ 2096 Collecting Bugs:期望dp
  2. HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)
  3. RPM包构建
  4. 使用ubuntu自带的Remmina Remote Desktop Client远程登录服务器配置
  5. /etc/bashrc和/etc/profile
  6. RDA项目打包
  7. 隐藏时间表ribbon按钮
  8. AngularJs(Part 1)
  9. 10天彻底搞定-webpack4.0
  10. 干货:SEO长尾关键词优化方法和技巧