【Codeforces 1114F】Please, another Queries on Array?
Codeforces 1114 F
题意:给你一个序列\(a_{1\dots n}\),以及\(q\)次查询,每次查询有两种格式:
- TOTIENT \(l\) \(r\):求出\(\phi(\Pi_{i=l}^ra_i)\)。
- MULTIPLY \(l\) \(r\) \(x\):将从\(l\)到\(r\)的所有数乘上\(x\leq 300\)。
处理每次查询。
思路:首先我们知道设\(x=\Pi_{i=1}^np_i^{e_i}\),则\(\phi(x)=x\Pi_{i=1}^n\frac{p_i-1}{p_i}\)。
所以就可以想到记录每一个数的质因子有哪些。
由于这个序列的每个数都很小(\(a_i\leq 300\)),所以在此范围内的质数也不多(\(62\)个),然后就可以用一个\(long\ long\)存下了。
然后考虑高效地处理区间乘。
可以用分块和线段树来解决。(我只写了分块)
将原序列分成几块,每一个块的大小是\(B\),然后对于每个块存储以下信息:
- 这个块所有数的积以及该乘积所含质因数
- 这个块对于所有数同时乘的数以及这个数所含质因数
- 这个块中每个数的值(这个只在边角的修改上要存)以及这个数所含质因数
每个操作的具体处理:
- 修改:首先要改区间两边未在整块内的边角的每个数的值和整块的积,然后再将中间块的整块的同时乘的数都改为需要更改的数。
- 查询:也是一样,现将区间两边的数乘上整块都要乘的数乘到答案里,再将中间块整块的乘积乘进答案。
然后就会发现如果要更改整块的积时需要求一个数的\(B\)次幂,那么就预处理一下即可。
然后具体的实现中还要注意一下一点点细节。
【Codeforces 1114F】Please, another Queries on Array?的更多相关文章
- 【36.86%】【codeforces 558B】Amr and The Large Array
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【Codeforces 710F】String Set Queries
Codeforces 710 F 思路:KMP学的还是不过关啊... 按照字符串的长度分类,如果长度大于\(\sqrt{n}\)的就扔到什么地方等待查询,否则就扔进trie里面. 对于查询,我们先在t ...
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- 【codeforces 797E】Array Queries
[题目链接]:http://codeforces.com/problemset/problem/797/E [题意] 给你一个n个元素的数组; 每个元素都在1..n之间; 然后给你q个询问; 每个询问 ...
- 【19.77%】【codeforces 570D】Tree Requests
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【30.93%】【codeforces 558E】A Simple Task
time limit per test5 seconds memory limit per test512 megabytes inputstandard input outputstandard o ...
- 【codeforces 602D】Lipshitz Sequence
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【codeforces 750E】New Year and Old Subsequence
time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【13.91%】【codeforces 593D】Happy Tree Party
time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
随机推荐
- JS调用模式
在js中,一共4中调用方式.需要注意的是,调用方式中,this的指向问题. 函数调用模式 this丢失,debug会提示未定义相应属性.按照规范,需要将this赋值给that let myObj = ...
- POJ 1113 Wall(思维 计算几何 数学)
题意 题目链接 给出平面上n个点的坐标.你需要建一个围墙,把所有的点围在里面,且围墙距所有点的距离不小于l.求围墙的最小长度. \(n \leqslant 10^5\) Sol 首先考虑如果没有l的限 ...
- ExtJS学习之MessageBox
MessageBox为ExtJS中的消息对话框,包括alert confirm prompt show四种. 1.index.html <!DOCTYPE html PUBLIC " ...
- ES6中Object.is方法比较两个值是否相等
Object.is: let obj={a:1,b:2}; Object.is(obj,obj);//true Object.is(obj,{obj});//false Object.is({},{} ...
- 我的Java之旅 第一课 开发环境准备
1.JDK JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK). SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从J ...
- 工程设计文档服务EngineerCMS
工程设计单位或个人的设计文件分类有其特点,利用engineercms的分类目录可以很好地管理资料.多单位,多人,多工程都可以适应. 其他engineercms是一个通用的文档管理,文档协作,在线预览d ...
- Hive-1.2.1_01_安装部署
前言:该文章是基于 Hadoop2.7.6_01_部署 进行的. 1. Hive基本概念 1.1. 什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库 ...
- orcale 使用创建日期排序然后分页每次取排序后的固定条数
需求: 一个使用mybatis分页插件的分页列表, 现在要求新增一条数据或者修改一条数据后,显示在最前端 思路: 使用sql , 先将查询出来的数据排序, 然后使用rownum > page*s ...
- 阿里八八β阶段Scrum(1/5)
今日进度 叶文滔: 修改了α阶段遗留的部分界面BUG,比如状态栏白底等 张岳: 修复用户模块信息修改返回失败的BUG 林炜鸿: 重构了添加事件的代码,增加可修改的特性 黄梅玲: 绘制了新的日程显示格界 ...
- 5、爬虫之scrapy框架
一 scrapy框架简介 1 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Sc ...