JZOJ 100035. 【NOIP2017提高A组模拟7.10】区间
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】区间相关推荐
- JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫
Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...
- 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 ...
- JZOJ 5371. 【NOIP2017提高A组模拟9.17】组合数问题
Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数.举个例子,将{1,2,3}拆分成2 个集合有({1},{2,3}),({2},{1,3}),({3 ...
- JZOJ 100047. 【NOIP2017提高A组模拟7.14】基因变异
Description 21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的 ...
- 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 ...
- JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情
Description Input 输入文件第一行包含一个正整数 k.之后是 k 组测试用例. 每组测试用例的第一行为一个整数 n.接下来 n 行,每行 n 个以空格隔开的数,用来 描述棋盘的初始状态 ...
- JZOJ 100026. 【NOIP2017提高A组模拟7.7】图
Description 有一个n个点n条边的有向图,每条边为< i,f(i),w(i)>,意思是i指向f(i)的边权为w(i)的边,现在小A想知道,对于每个点的si和mi. si:由i出发 ...
- 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 ...
- JZOJ 5405. 【NOIP2017提高A组模拟10.10】Permutation
Description 你有一个长度为n 的排列P 与一个正整数K 你可以进行如下操作若干次使得排列的字典序尽量小 对于两个满足|i-j|>=K 且|Pi-Pj| = 1 的下标i 与j,交换P ...
最新文章
- mysql干货——数据库字符集和校对规则详解
- 腾讯「AI In All」的背后,是开放AI技术能力,探索腾讯应用场景
- python读取二进制数据中的while循环_在Python中读取二进制文件并循环遍历每个字节...
- python代码在哪里输入-请问一下这个python代码到底是哪里出了问题?
- 不带头节点的单链表如何头插(多图易懂)
- 使用PaddleFluid和TensorFlow实现图像分类网络SE_ResNeXt | 文末超大福利
- Keras(part1)--Keras简介与安装
- get请求,参数值为json字符串如何传值
- C#通用类库--DOS常用命令
- HoloLens 2开发: Vuforia图片识别
- 记录下我的Linux系统中vim文件的配置---(.vimrc文件配置模板)
- MFRC50001T
- 虚拟显示器软件(win10及以上)
- c#html表格样式大全,table完美css样式,table的基本样式,table样式
- HFSS - 半波偶极子天线的设计与仿真
- 迷宫(Maze)项目实现
- 快速“美女找茬”(辅助工具)
- MySQL数据库学习笔记3
- PowerDesigner16.5如何导出表到word的方法
- 使用Flutter开发的抖音国际版
热门文章
- csdn编辑器模板2
- MATLAB中K-means函数表达方式
- 基于socket网络编程技术实现TCP和UDP的流程详解及实例
- android 实训的背景,Android实训项目作业.doc
- 最美的Linux中文版的吗,号称最美的Linux发行版——Elementary OS
- 论文阅读:Deep Filter Banks for Texture Recognition and Segmentation
- Ubuntu16.04 +cuda8.0+cudnn+opencv+caffe+theano+tensorflow配置明细
- [云炬创业管理笔记]第二章成为创业者测试6
- [云炬创业基础笔记]做好市场调研
- 科大星云诗社动态20210511