[bzoj4810][Ynoi2017]由乃的玉米田 bitset+莫队
来源:互联网 发布:淘宝助手是什么 编辑:程序博客网 时间:2024/06/05 11:41
4810: [Ynoi2017]由乃的玉米田
Time Limit: 30 Sec Memory Limit: 256 MB[Submit][Status][Discuss]
Description
由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美。这排玉米一共有N株,它们的高度参差不齐。
由乃认为玉米田不美,所以她决定出个数据结构题
这个题是这样的:
给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是
否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1
,2,3选出的这两个数可以是同一个位置的数
Input
第一行两个数n,m
后面一行n个数表示ai
后面m行每行四个数opt l r x
opt表示这个是第几种操作,l,r表示操作的区间,x表示这次操作的x
定义c为每次的x和ai中的最大值,ai >= 0,每次的x>=2n,m,c <= 100000
Output
对于每个询问,如果可以,输出yuno,否则输出yumi
Sample Input
5 5
1 1 2 3 4
2 1 1 2
1 1 2 2
3 1 1 1
3 5 5 16
1 2 3 4
1 1 2 3 4
2 1 1 2
1 1 2 2
3 1 1 1
3 5 5 16
1 2 3 4
Sample Output
yuno
yumi
yuno
yuno
yumi
yumi
yuno
yuno
yumi
HINT
Source
这是由乃OI,不是云南OI
orz nzhtl1477
#include<algorithm>#include<iostream>#include<cstring>#include<bitset>#include<cstdio>#include<cmath>using namespace std;typedef long long ll;const int N = 100000 + 5;int n,m,a[N],c[N],ans[N];struct data{int l,r,opt,x,last,id;friend bool operator <(data x,data y){return x.last != y.last ? x.last < y.last : x.r < y.r;}}da[N];bitset<N>f,g;void capmo(){for( int i = 1, l = 1, r = 0; i <= m; i++ ){for( ; r < da[i].r; ){ r++; if(!c[a[r]]++){ f[a[r]] = 1; g[N-a[r]] = 1; }}for( ; l > da[i].l; ){ l--; if(!c[a[l]]++){ f[a[l]] = 1; g[N-a[l]] = 1; }}for( ; r > da[i].r; ){ if(!--c[a[r]]){ f[a[r]] = 0; g[N-a[r]] = 0; } r--;}for( ; l < da[i].l; ){ if(!--c[a[l]]){ f[a[l]] = 0; g[N-a[l]] = 0; } l++; }if( da[i].opt == 1 ){ ans[da[i].id] = ( ( f >> da[i].x) & f ).any(); }if( da[i].opt == 2 ){ ans[da[i].id] = ( ( g >> (N-da[i].x) ) & f ).any(); }if( da[i].opt == 3 ){if( da[i].x == 0 && f[0] ){ ans[da[i].id] = 1; }for( int j = 1; j*j <= da[i].x; j++ )if(!(da[i].x%j) && ( f[j]&f[da[i].x/j] )){ans[da[i].id] = 1; break;}}}}int main(){scanf("%d%d", &n, &m);for( int i = 1; i <= n; i++ ) scanf("%d", &a[i]);int block = (int)sqrt(n);for( int i = 1; i <= m; i++ ){scanf("%d%d%d%d", &da[i].opt, &da[i].l, &da[i].r, &da[i].x );da[i].last = (da[i].l+1)/block; da[i].id = i;}std::sort(da+1,da+m+1);capmo();for( int i = 1; i <= m; i++ ) printf(ans[i]?"yuno\n":"yumi\n");return 0;}
阅读全文
0 0
- BZOJ4810: [Ynoi2017]由乃的玉米田 莫队 bitset
- bzoj4810 [Ynoi2017]由乃的玉米田 莫队+bitset
- [bzoj4810][Ynoi2017]由乃的玉米田 bitset+莫队
- BZOJ4810 [Ynoi2017]由乃的玉米田
- bzoj4810: [Ynoi2017]由乃的玉米田
- BZOJ4810: [Ynoi2017]由乃的玉米田
- bzoj4810: [Ynoi2017]由乃的玉米田
- BZOJ4810 / 由乃OI2017 由乃的玉米田【莫队+Bitset】
- BZOJ 4810: [Ynoi2017]由乃的玉米田 莫队,bitset
- [莫队 bitset] BZOJ 4810 [Ynoi2017]由乃的玉米田
- bzoj 4810: [Ynoi2017]由乃的玉米田 (莫队+bitset)
- bzoj 4810 [Ynoi2017]由乃的玉米田(莫队+bitset)
- bzoj4810 [ YNOI2017 ] -- 莫队+bitset
- BZOJ 4810([Ynoi2017]由乃的玉米田-莫队)
- 4810: [Ynoi2017]由乃的玉米田
- bzoj 4810: [Ynoi2017]由乃的玉米田 莫队算法+bitset
- 【BZOJ 4810】【YNOI 2017】由乃的玉米田【莫队+bitset】
- [BZOJ]4810 由乃的玉米田 莫队+bitset
- Android开发心得(一)
- JAVA中的运算符的总结
- Target Sum
- IPtables 学习笔记三
- 程序猿的爱情,猿粪是一个奇妙的东西
- [bzoj4810][Ynoi2017]由乃的玉米田 bitset+莫队
- 图结构练习——BFS——从起始点到目标点的最短步数
- Xception —— 深度可分卷积
- j2ee的web项目,在浏览器中发起一个该项目中html页面的绝对地址,也是发起的一个http url请求,请求的响应报文的结果就是该html页面的所有html代码
- 变长参数函数(转载)
- IPtables学习笔记四
- 常用概念之程序局部性原理
- 嵌入式系统原理及应用教程期末复习
- poj3278-Catch That Cow