牛客OI周赛7-提高组 B小睿睿的询问(ST打表)
链接:https://ac.nowcoder.com/acm/contest/371/B
来源:牛客网
- 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;
- }
- }
- 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=(x^lastans)%n+1,R=(y^lastans)%n+1;
- if (L>R)swap(L,R);
- //解决询问
- }
- }
输入描述:
- 第1行2个整数n,m,分别表示序列长度和询问次数
- 第2行3个整数seed,seedx,seedy,意义如题所示
输出描述:
- 一行一个整数,表示所有询问的答案的异或和
输入
- 10 5
- 3 5 7
输出
- 2
- 思路:裸的ST
- #include <cstdio>
- #include <map>
- #include <iostream>
- #include<cstring>
- #include<bits/stdc++.h>
- #define ll long long int
- #define M 6
- using namespace std;
- inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
- inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
- int moth[]={,,,,,,,,,,,,};
- int dir[][]={, ,, ,-, ,,-};
- int dirs[][]={, ,, ,-, ,,-, -,- ,-, ,,- ,,};
- const int inf=0x3f3f3f3f;
- const ll mod=1e9+;
- int val[];
- int f[][];
- int L,R,lastans,ans;
- void generate_array(int n,int seed)
- {
- unsigned x = seed;
- for (int i=;i<=n;++i)
- {
- x ^= x << ;
- x ^= x >> ;
- x ^= x << ;
- val[i]=x%;
- }
- }
- int maxn(int i,int j){
- if(val[i]>val[j]) return i;
- else if(val[i]<val[j]) return j;
- else return i>j?j:i;
- }
- void preST(int len){
- for(int i=;i<=len;i++) f[i][]=i;
- int k=log(len)/log()+;
- for(int j=;j<k;j++)
- for(int i=;i<=(len-(<<j)+);i++)
- f[i][j]=maxn(f[i][j-],f[i+(<<(j-))][j-]);
- }
- int queryST(int l,int r){
- int k=log(r-l+)/log();
- return maxn(f[l][k],f[r-(<<k)+][k]);
- }
- void generate_ask(int n,int m,int seedx,int seedy)
- {
- unsigned x=seedx,y=seedy;
- for (int i=;i<=m;++i)
- {
- x ^= x << ;
- x ^= x >> ;
- x ^= x << ;
- y ^= y << ;
- y ^= y >> ;
- y ^= y << ;
- L=(x^lastans)%n+,R=(y^lastans)%n+;
- if (L>R)swap(L,R);
- // cout<<L<<" "<<R<<endl;
- lastans=queryST(L,R);
- // cout<<lastans<<endl;
- ans^=lastans;
- }
- cout<<ans<<endl;
- }
- int main(){
- ios::sync_with_stdio(false);
- int seed,seedx,seedy;
- int n,m;
- while(cin>>n>>m){
- cin>>seed>>seedx>>seedy;
- generate_array(n,seed);
- lastans=;
- int tt=m;
- ans=;
- preST(n);
- generate_ask(n,tt,seedx,seedy);
- }
- }
牛客OI周赛7-提高组 B小睿睿的询问(ST打表)的更多相关文章
- 牛客OI周赛7-提高组 A 小睿睿的等式
链接:https://ac.nowcoder.com/acm/contest/371/A来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n ...
- 牛客OI周赛9-提高组题目记录
牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...
- 牛客OI周赛8-提高组A-用水填坑
牛客OI周赛8-提高组A-用水填坑 题目 链接: https://ac.nowcoder.com/acm/contest/403/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制: ...
- 牛客OI周赛2-提高组
A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...
- 牛客OI周赛11-普及组 B Game with numbers (数学,预处理真因子)
链接:https://ac.nowcoder.com/acm/contest/942/B 来源:牛客网 Game with numbers 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+ ...
- 牛客OI周赛7-普及组 解题报告
出题人好评. 评测机差评. A 救救喵咪 二位偏序.如果数据范围大的话直接树状数组,不过才1000就\(O(n^2)\)暴力就ok了. #include <bits/stdc++.h> s ...
- 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)
https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...
- 牛客OI周赛8-普及组
https://ac.nowcoder.com/acm/contest/543#question A. 代码: #include <bits/stdc++.h> using namespa ...
- 牛客OI周赛7-提高组
https://ac.nowcoder.com/acm/contest/371#question A.小睿睿的等式 #include <bits/stdc++.h> using names ...
随机推荐
- Ubuntu16系统中安装htpasswd
htpasswd是Apache附带的程序, htpasswd生成包含用户名和密码的文本文件, 每行内容格式为“用户名:密码”, 用于用户文件的基本身份认证. 当用户浏览某些网页的时候, 浏览器会提示输 ...
- [编程笔记]第二章 C语言预备知识
/*第二讲 C语言预备专业知识 1.CPU 内存条 硬盘 显卡 主板 显示器之间的关系 CPU不能直接处理硬盘上的数据 文件存储在硬盘,当运行时,操作系统把硬盘上的数据调用到内存条上. 图像以数据的形 ...
- 手机移动端input date placehoder不显示
要解决这个问题,我们可以伪造一个placehoder,通过css跟js来解决这个问题. 为什么要用js的原因是因为当你选择了时间之后,placehoder的文字没有清除掉,所以我们就需要把这个伪造的p ...
- C++常用宏
宏是由 #define 定义而来,在预处理阶段进行宏展开,它的格式是: #define N 2 + 2 // 仅仅是字符串替换 #define N (2 + 2) // 也是字符串 ,但是是(2 + ...
- 字符串正则替换replace第二个参数是函数
zepto中 //将字符串转成驼峰式的格式 camelize = function (str) { return str.replace(/-+(.)?/g, function (match, chr ...
- hadoop的缺点
Hadoop的限制 Hadoop只能执行批量处理,并且只以顺序方式访问数据.这意味着必须搜索整个数据集,即使是最简单的搜索工作.
- dede:field name=’position’标签调用 主页改成英文Home和改变符号
在用dede:field name=’position’ 这个标签的时候我们调用的这个就是中文的,出现的是主页>+相应的栏目 ,那么这个问题怎么改成英文的呢?有好多大虾都说找到dede安装目录 ...
- js对json解析获取对应属性的值,JSON.stringify()和JSON.parse()
JSON.stringify() 该方法,将一个JSON对象转化为字符串string JSON.parse() 该方法,将一个字符串转化为JSON对象object 对于JSON对象,获取其对应键值 可 ...
- 一个实际的案例介绍Spring Boot + Vue 前后端分离
介绍 最近在工作中做个新项目,后端选用Spring Boot,前端选用Vue技术.众所周知现在开发都是前后端分离,本文就将介绍一种前后端分离方式. 常规的开发方式 采用Spring Boot 开发项目 ...
- Lodop提示安装或升级的注意事项
LODOP的LodopFuncs.js文件里,自动判断浏览器类型提示下载哪个,根据版本号比较判断提示升级.此文章是以前写的,图示可能过旧,新版提示不同,但是LodopFuncs.js里各个方面变动不大 ...