HDU5172
来源:互联网 发布:java jar 依赖jar包 编辑:程序博客网 时间:2024/05/24 00:31
1.题目描述:
GTY's gay friends
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1687 Accepted Submission(s): 429
Problem Description
GTY has n gay friends. To manage them conveniently, every morning he ordered all his gay friends to stand in a line. Every gay friend has a characteristic value ai , to express how manly or how girlish he is. You, as GTY's assistant, have to answer GTY's queries. In each of GTY's queries, GTY will give you a range [l,r] . Because of GTY's strange hobbies, he wants there is a permutation [1..r−l+1] in [l,r] . You need to let him know if there is such a permutation or not.
Input
Multi test cases (about 3) . The first line contains two integers n and m ( 1≤n,m≤1000000 ), indicating the number of GTY's gay friends and the number of GTY's queries. the second line contains n numbers seperated by spaces. The ith number ai ( 1≤ai≤n ) indicates GTY's ith gay friend's characteristic value. The next m lines describe GTY's queries. In each line there are two numbers l and r seperated by spaces ( 1≤l≤r≤n ), indicating the query range.
Output
For each query, if there is a permutation [1..r−l+1] in [l,r] , print 'YES', else print 'NO'.
Sample Input
8 52 1 3 4 5 2 3 11 31 12 24 81 53 21 1 11 11 2
Sample Output
YESNOYESYESYESYESNO
Source
BestCoder Round #29
Recommend
hujie
给出一个数组a[n](1<=a[i]<=n),可能会有重复,然后m组询问 每次询问两个数:l,r 在区间[l,r]内是否构成一个1,2,..,r-l+1的排列;
3.解题思路:
对于[1..n][1..n][1..n]中的每一个数随机一个64位无符号整型作为它的hash值,一个集合的hash值为元素的异或和,预处理[1..n]的排列的hash和原序列的前缀hash异或和,就可以做到线性预处理,O(1)回答询问
4.AC代码:
#include <bits/stdc++.h>#define INF 0x7fffffff#define maxn 1001000#define eps 1e-6#define pi acos(-1.0)#define e 2.718281828459#define mod (int)1e9 + 7;using namespace std;typedef long long ll;int n, m;ll sum[maxn], hs[maxn], val[maxn];inline ll randval(){ ll one = 1; ll RAND = (rand() + rand()) * (one << 44) + (rand() + rand()) * (one << 33) + (rand() + rand()) * (one << 22) + (rand() + rand()); return RAND;}int main(){#ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); long _begin_time = clock();#endif srand(time(NULL)); hs[0] = 0; for (int i = 1; i < maxn; i++) { val[i] = randval(); hs[i] = hs[i - 1] ^ val[i]; } while (scanf("%d%d", &n, &m) != EOF) { sum[0] = 0; for (int i = 1; i <= n; i++) { int x; scanf("%d", &x); sum[i] = sum[i - 1] ^ val[x]; } for (int i = 0; i < m; i++) { int l, r; scanf("%d%d", &l, &r); if (hs[r - l + 1] == (sum[r] ^ sum[l - 1])) puts("YES"); else puts("NO"); } }#ifndef ONLINE_JUDGE long _end_time = clock(); printf("time = %ld ms\n", _end_time - _begin_time);#endif return 0;}
阅读全文
0 0
- HDU5172
- HDU5172(线段树)
- hdu5172 GTY's gay friends
- hdu5172---GTY's gay friends
- HDU5172-GTY's gay friends
- EventTrigger触发3D物体事件
- map用法测试(遍历)
- 理解HTC Vive更新——控制相机旋转和位移
- node-发送邮件-nodemailer
- ReactJS读书笔记一:深入理解JSX
- HDU5172
- 记录一次使用_RecordsetPtr去访问已有表的新增字段时,出现的怪异问题!
- Android NDK 使用JNI调用java代码,通用代码封装
- Spring+SpringMVC+Mybatis 多数据源整合
- linux下使用串口调试助手XGcom
- ReactJS读书笔记二:组件生命周期
- 融云如何显示陌生人昵称、头像
- Create Open ODS View demo
- HDU 5188 · zhx and contest【01背包】【约束条件】