题目描述
小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i]。有m个询问,对于每一个询问,小睿睿想知道区间[L,R]颜值最高而编号最小的妹纸是哪一个
对于妹纸们的颜值val[i],其生成函数为:
void generate_array(int n,int seed)
{
unsigned x = seed;
for (int i=1;i<=n;++i)
{
x ^= x << 13;
x ^= x >> 17;
x ^= x << 5;
val[i]=x%100;
}
}
对于每一组询问,区间[L,R]的生成函数为:
void generate_ask(int n,int m,int seedx,int seedy)
{
unsigned x=seedx,y=seedy;
for (int i=1;i<=m;++i)
{
x ^= x << 13;
x ^= x >> 17;
x ^= x << 5;
y ^= y << 13;
y ^= y >> 17;
y ^= y << 5;
L=(xlastans)%n+1,R=(ylastans)%n+1;
if (L>R)swap(L,R);
//解决询问
}
}

其中lastans为上个询问的答案,对于第一个询问,lastans为0
输入描述:
第1行2个整数n,m,分别表示序列长度和询问次数

第2行3个整数seed,seedx,seedy,意义如题所示
输出描述:
一行一个整数,表示所有询问的答案的异或和

示例1
输入
10 5
3 5 7

输出
2

说明
生成序列:

7 11 47 53 3 7 63 36 55 55

各组询问及答案:

询问:4 6

该询问答案:4

询问:2 6

该询问答案:4

询问:2 2

该询问答案:2

询问:4 8

该询问答案:7

询问:1 9

该询问答案:7

所有询问的答案的异或和:2

示例2
输入
100000 10000000
1 2 3

输出
5042

备注:
对于30%的数据,n,m<=1000

对于50%的数据,m<=1000000

对于100%的数据,n<=100000,m<=10000000,seedx,seedy,seed<=1000

#include<iostream>
using namespace std;
int val[100005],s[102][100005],s1[102]={0},ans=0;
void swap(int *a,int *b)
{int temp;temp=*a;*a=*b;*b=temp;
}
void generate_array(int n,int seed)
{unsigned x = seed;for (int i=1;i<=n;++i){x ^= x << 13;x ^= x >> 17;x ^= x << 5;val[i]=x%100;s[val[i]][s1[val[i]]]=i;s1[val[i]]++;}
}
void generate_ask(int n,int m,int seedx,int seedy)
{unsigned x=seedx,y=seedy;int L,R,lastans=0,j,l,r,cnt=0,cnt1,h;ans=lastans;for (int i=1;i<=m;++i){x ^= x << 13;x ^= x >> 17;x ^= x << 5;y ^= y << 13;y ^= y >> 17;y ^= y << 5;L=(x^lastans)%n+1,R=(y^lastans)%n+1;if (L>R)swap(&L,&R);cnt=0;for(j=99;j>=0;j--){if(s1[j]!=0){l=0,r=s1[j]-1;while(l<=r){h=(l+r)/2;if(s[j][h]>R){r=h-1;}else{if(s[j][h]<L){l=h+1;}else{if((s[j][h]>=L)&&(s[j][h]<=R)) {cnt1=s[j][h];r=h-1;cnt=1;}} }}if(cnt==1){break;} }}lastans=cnt1;ans=ans^lastans;}cout<<ans<<endl;
}
int main()
{int n,m,seed,seedx,seedy,i;cin>>n>>m;cin>>seed>>seedx>>seedy;generate_array(n,seed);generate_ask(n,m,seedx,seedy);return 0;
}

牛客OI周赛7-提高组(B 小睿睿的询问)相关推荐

  1. 牛客OI周赛7-提高组 A 小睿睿的等式

    链接:https://ac.nowcoder.com/acm/contest/371/A 来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如"A+B=n"的等式且使用 ...

  2. 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)

    链接:https://ac.nowcoder.com/acm/contest/371/B 来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知 ...

  3. 【牛客OI周赛7-普及组ABCD 非官方题解】暴力,二分,KMP,尺取(STL或Hash)

    A: 链接:https://ac.nowcoder.com/acm/contest/372/A 来源:牛客网 某天,一只可爱的肥橘喵在路上走,突然遇到了一个怪人,那怪人自称PM6,"小肥喵, ...

  4. 牛客OI周赛2-提高组

    A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他 ...

  5. 【牛客 - 371牛客OI周赛7-提高组B】小睿睿的询问(RMQ,ST表维护下标)

    题干: 链接:https://ac.nowcoder.com/acm/contest/371/B 来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小 ...

  6. 【牛客 - 371牛客OI周赛7-提高组A】小睿睿的等式(dp,暴力 )

    题干: 链接:https://ac.nowcoder.com/acm/contest/371/A 来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如"A+B=n"的等 ...

  7. 牛客OI周赛15-普及组

    1. 咪咪游戏 bool f1,f2,f; f1用于记录m f2用于记录q f用于判断串的好坏.1为坏,0为好 注意几种情况: mqm mmq 具体看代码: #include<bits/stdc ...

  8. 牛客OI周赛10-提高组:B-Taeyeon的困惑(值域线段树)

    做法 单点加单点删,在值域线段树上直接二分就能求值前\(K\)小的和 Code #include<bits/stdc++.h> typedef long long LL; const LL ...

  9. 牛客OI周赛6-提高组 B 践踏

    践踏 思路: 如果k不为0, 那么就是对k取模意义下的区间更新, 单点查询 否则, 就是普通的区间更新, 单点查询 代码: #pragma GCC optimize(2) #pragma GCC op ...

  10. 牛客OI周赛4-提高组 C 战争(war)

    战争(war) 思路: 二分答案, 找到第一个不满足条件的位置 首先对于一个值来说, 所有这个值的区间肯定有交区间, 然后在这个交区间内不能出现比它小的数 所以我们check时从大的值开始考虑, 求出 ...

最新文章

  1. 奥鹏数据库应用系统设计下列关于php_[南开大学(本部)]《数据库应用系统设计》20春期末考核(参考答案)...
  2. 激光SLAM学习--数据处理和特征提取
  3. Greenplum【环境搭建 04】使用GPKafka实现Kafka数据导入Greenplum数据库(扩展安装文件网盘分享)
  4. 200t不稳定_技术革新!将不可能变为可能 这家企业是怎么做到的?
  5. 落地即王道,锁死企业智变CP——云+AI
  6. 文件流操作,报“because it is being used by another process. ”错误解决
  7. 从单片机——快速上手PLC
  8. 酒旅江湖战事:携程坚挺,美团蓄力,抖音来战
  9. 中考英语听说计算机考试成绩查询,中考英语听说考试成绩查询
  10. 先选价、再叫车 高德打车首创上线“比价叫车”
  11. 这些优质的教育类公众号您知道么,非常实用!
  12. Docute 创建文档网站(docute v3)
  13. navicat误删了mysql数据库_navicat for mysql 误删数据库怎么恢复
  14. Liberal Event Extraction and Event Schema Induction
  15. html网页添加友链,如何为typecho添加独立友链页面
  16. python中的科学计数法表示
  17. 使用RT-Thread Studio DIY 迷你桌面时钟(五)| 使用内置 Git 插件管理项目
  18. 分布式数据库案例分享:腾讯移动支付平台米大师
  19. URP-官网学习记录
  20. 使用 DISM 脱机添加和删除驱动程序

热门文章

  1. 屏幕适配,彻底理解dp,dpi,屏幕密度,分辨率之间的爱恨纠葛
  2. 必看!SQL语法速成手册
  3. LeetCode q22
  4. 工业控制系统安全需求的变化
  5. Chrome主题下载网站安装简单教程
  6. Android FaceBook sdk 登录接入
  7. oracle 11g 百度云盘,Oracle 11.2.0.1 For Linux 64+32bit 数据库介质 百度云盘下载
  8. 如何利用起闲置的U盘安装一个移动系统(如何安装Edgeless)
  9. 【无标题】3.14输入
  10. sumo 和 cesium 的简单联合仿真