Description

Input

Output

Sample Input

sample1:

4 2 10
5 1 1 10

sample2:

1000 97 96998351
41 1668 505 2333

Sample Output

sample1:

4

sample2:

1749769

Data Constraint

Solution

  • 首先,按照所给的数据构造方法构造出 SS 数组。

  • 比赛时,我的做法是构出一棵线段树,维护区间的乘积。

  • 这样枚举区间的左端点,我们就能在 O(logN)O(logN) 内求出整个区间的乘积。

  • 但这样总时间复杂度达到了 O(NlogN)O(NlogN) ,时间和空间上都不允许。

  • 于是我们想到了 分块 的方法,将整个 SS 数组每 KK 个数分一个块。

  • 这样每一个块维护 前缀和后缀和 ,这样的预处理只需 O(N)O(N) 。

  • 之后枚举左端点,我们就可以通过维护的值 O(1)O(1) 求出答案了。

  • 那么总时间复杂度就是 O(N)O(N) ,轻松通过。

Code

#include<cstdio>
using namespace std;
typedef long long LL;
const int N=2e7+1;
int n,k,mo,B,C,D,ans;
int s[N],pre[N],suf[N];
int main()
{scanf("%d%d%d",&n,&k,&mo);scanf("%d%d%d%d",&s[1],&B,&C,&D);for(int i=2;i<=n;i++) s[i]=(s[i-1]*1LL*B+C)%D;int num=n/k;for(int i=0;i<num;i++){int pos=i*k+1;pre[pos]=s[pos];for(int j=pos+1;j<pos+k;j++) pre[j]=pre[j-1]*1LL*s[j]%mo;suf[pos+k-1]=s[pos+k-1];for(int j=pos+k-2;j>=pos;j--) suf[j]=suf[j+1]*1LL*s[j]%mo;}if(n%k){int pos=num*k+1;pre[pos]=s[pos];for(int i=pos+1;i<=n;i++) pre[i]=pre[i-1]*1LL*s[i]%mo;suf[n]=s[n];for(int i=n-1;i>=pos;i--) suf[i]=suf[i+1]*1LL*s[i]%mo;}for(int i=1;i<=n-k+1;i++)if(i%k==1) ans^=pre[i+k-1]; elseans^=suf[i]*1LL*pre[i+k-1]%mo;printf("%d",ans);return 0;
}

JZOJ 100035. 【NOIP2017提高A组模拟7.10】区间相关推荐

  1. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

  2. JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation

    Description Input Output Sample Input 7 2 2343223 4 1 2234 Sample Output 2243233 2334 Data Constrain ...

  3. JZOJ 5371. 【NOIP2017提高A组模拟9.17】组合数问题

    Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数.举个例子,将{1,2,3}拆分成2 个集合有({1},{2,3}),({2},{1,3}),({3 ...

  4. JZOJ 100047. 【NOIP2017提高A组模拟7.14】基因变异

    Description 21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的 ...

  5. JZOJ 100041. 【NOIP2017提高A组模拟7.12】列车调度

    Description Input Output Sample Input Sample1: 3 1 2 3 Sample2: 9 1 3 2 4 8 6 9 5 7 Sample Output Sa ...

  6. JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情

    Description Input 输入文件第一行包含一个正整数 k.之后是 k 组测试用例. 每组测试用例的第一行为一个整数 n.接下来 n 行,每行 n 个以空格隔开的数,用来 描述棋盘的初始状态 ...

  7. JZOJ 100026. 【NOIP2017提高A组模拟7.7】图

    Description 有一个n个点n条边的有向图,每条边为< i,f(i),w(i)>,意思是i指向f(i)的边权为w(i)的边,现在小A想知道,对于每个点的si和mi. si:由i出发 ...

  8. JZOJ 5402. 【NOIP2017提高A组模拟10.8】God Knows

    Description Input Output Sample Input 5 3 1 4 5 2 3 4 3 4 1 Sample Output 5 Data Constraint Solution ...

  9. JZOJ 5405. 【NOIP2017提高A组模拟10.10】Permutation

    Description 你有一个长度为n 的排列P 与一个正整数K 你可以进行如下操作若干次使得排列的字典序尽量小 对于两个满足|i-j|>=K 且|Pi-Pj| = 1 的下标i 与j,交换P ...

最新文章

  1. mysql干货——数据库字符集和校对规则详解
  2. 腾讯「AI In All」的背后,是开放AI技术能力,探索腾讯应用场景
  3. python读取二进制数据中的while循环_在Python中读取二进制文件并循环遍历每个字节...
  4. python代码在哪里输入-请问一下这个python代码到底是哪里出了问题?
  5. 不带头节点的单链表如何头插(多图易懂)
  6. 使用PaddleFluid和TensorFlow实现图像分类网络SE_ResNeXt | 文末超大福利
  7. Keras(part1)--Keras简介与安装
  8. get请求,参数值为json字符串如何传值
  9. C#通用类库--DOS常用命令
  10. HoloLens 2开发: Vuforia图片识别
  11. 记录下我的Linux系统中vim文件的配置---(.vimrc文件配置模板)
  12. MFRC50001T
  13. 虚拟显示器软件(win10及以上)
  14. c#html表格样式大全,table完美css样式,table的基本样式,table样式
  15. HFSS - 半波偶极子天线的设计与仿真
  16. 迷宫(Maze)项目实现
  17. 快速“美女找茬”(辅助工具)
  18. MySQL数据库学习笔记3
  19. PowerDesigner16.5如何导出表到word的方法
  20. 使用Flutter开发的抖音国际版

热门文章

  1. csdn编辑器模板2
  2. MATLAB中K-means函数表达方式
  3. 基于socket网络编程技术实现TCP和UDP的流程详解及实例
  4. android 实训的背景,Android实训项目作业.doc
  5. 最美的Linux中文版的吗,号称最美的Linux发行版——Elementary OS
  6. 论文阅读:Deep Filter Banks for Texture Recognition and Segmentation
  7. Ubuntu16.04 +cuda8.0+cudnn+opencv+caffe+theano+tensorflow配置明细
  8. [云炬创业管理笔记]第二章成为创业者测试6
  9. [云炬创业基础笔记]做好市场调研
  10. 科大星云诗社动态20210511