EOJ 262 润清的烦恼


——题目出处zhoutb2333
题解:
3e6可以带一个log
又是下取整问题。但是分块会TLE。
这样考虑,我们把式子拆成两个部分。
我们先算出来每一个x的[ai/x]项,再算出来[x/ai]项。之后做和。
[x/ai]:
x和ai的倍数有一些关系。
发现,假设现在x|ai,且x/ai=k, 那么,对于任意的(x~x+ai-1)[x/ai]=k;
所以,我们可以反过来,对于每一个ai,枚举ai的倍数,在ai的每个倍数的位置上++,这个桶叫val
那么,一个x,[x/ai]的值,就是val[1~x]的和!即一个前缀和。
所以我们外层循环i,给ai的倍数打标记 。
但是会被卡,ai=1时,复杂度M^2
所以给ai再开一个桶,cnt[i]表示值为i的ai有多少个。
枚举i的倍数即可,每次val+=cnt[i],一次加了许多个。
复杂度:M*(1/1+1/2+1/3+...1/M)= MlogM
另外一部分:
[ai/x]
ai和x的倍数有一些关系。
这次就考虑外层枚举x,思路和上面差不多。
枚举x的每一个倍数j,k=j/x,
那么,对于数值在(k*x,k*x+x-1)的区间内的所有的ai,[ai/x]=k
把刚才那个桶cnt,进行一个前缀和。
所以,对于这个x,每个倍数j的贡献是:(sum(k*x+x-1)-sum(k*x-1))*k
复杂度同上。
然后两边做和就可以了。
注意:脑残的一点:n大于2e5的手动构造,mod M再加1,不是mod(M+1)
显然啊,Ai数值不能是(0,M)的,而是(1,M)
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=+;
ll n,m;
ll a[N];
ll cnt[N],tot;
ll val[N];
ll lp[N];
ll s[N];
int main()
{
scanf("%lld%lld",&n,&m);
if(n<2e5){
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
cnt[a[i]]++;
}
}
else{int t;
scanf("%lld",&a[]);
cnt[a[]]++;
for(int i=;i<=n;i++){
a[i]=(1LL*a[i-]*a[i-]+1LL**a[i-]+)%m+;
cnt[a[i]]++;
}
}
for(int i=;i<=m;i++){
s[i]=s[i-]+cnt[i];
if(!cnt[i]) continue;
for(int j=i;j<=m;j+=i){
val[j]+=cnt[i];
}
}
//for(int i=1;i<=m;i++){
/// cout<<s[i]<<endl;
//}
for(int i=;i<=m;i++){
for(int j=i;j<=m;j+=i){
lp[i]+=(s[min((ll)j+i-,m)]-s[j-])*(j/i);
}
}
ll ans=;
for(int i=;i<=m;i++){
val[i]+=val[i-];
//cout<<val[i]<<" "<<lp[i]<<endl;
ans^=(lp[i]+val[i]);
}
printf("%lld",ans);
return ;
}
EOJ 262 润清的烦恼的更多相关文章
- 关于[x/y]一些小想法
[x/y],即x除以y下取整 (不会LATEX) 1.对于给定的x,对于所有的1<=y<=x, [x/y]一共有√x种取值. 证明: 对于y<=√x,y有根号种,所以值最多根号种.对 ...
- 45.更新一下scrapy爬取工商信息爬虫代码
这里是完整的工商信息采集代码,不过此程序需要配合代理ip软件使用.问题:1.网站对ip之前没做限制,但是采集了一段时间就被检测到设置了反爬,每个ip只能访问十多次左右就被限制访问.2.网站对请求头的检 ...
- 一个DBA萌新的烦恼
莫名其妙也好机缘巧合也罢,现在我成为了一名MySQL DBA. 为什么: 1.为什么leader让我转到DBA? 首先,我本身学习运维管理的时候就接触过数据库(mysql,redis),算是自身的优势 ...
- 《代码整洁之道 中文版》高清 PDF 电子书下载
代码整洁之道.PDF 下载 代码整洁之道.PDF 中文版 高清 PDF 电子书下载 代码整洁之道下载 点我下载 作者简介 · · · · · · Robert C. Martin,Object ...
- HarmonyOS 润和 HiSpark开发套件 免费领!
让人期盼已久的HarmonyOS 2.0终于在9月10日正式上线啦! 这是一件让众多开发者关注的大事件! 相信不少开发者都已经迫不及待的想上手实操了, 为了满足大家的好奇心, 也希望能有更多开发者了解 ...
- 实时 + 高清 + 超压缩,阿里云视频云发布业内首款 VVC 编码器 Ali266
基于新一代国际视频编解码标准 H.266/VVC,阿里云视频云近日发布了实时高清编码器 Ali266,有力推动 H.266/VVC 标准应用的落地,真正开启 H.266/VVC 的商用之路,并强力赋能 ...
- 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~
一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...
- 【转载】保哥 釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係
我常常不仅仅逛 博客园,还会去找国外,特别是台湾的技术部落格,发现好的文章,我便会收录,今天我转载或者全文复制,在Google 博客园,一位叫保哥, 釐清 CLR..NET.C#.Visual Stu ...
- CPU阿甘之烦恼
转自“码农翻身”公共号,原文地址CPU阿甘之烦恼 总结:(程序加载到内存运行的演变过程) 内存存放程序.OS负责加载程序到内存.CPU负责运行内存中的程序 1.串行:加载一个完整程序到内存,CPU运行 ...
随机推荐
- 图-最小生成树算法之Kruskal及其Java实现
1.Kruskal算法 Kruskal算法基于贪心,因此它追求的是近似最优解,也就是说由Kruskal得出的生成树并不一定是最优解. Kruskal算法求最小生成树的关键在于,每次选取图中权值最小(及 ...
- mybatis学习----------查询数据库返回结果为空
用mybits查询数据库时,如果参数已传入sql,sql也已经执行了,但是返回结果为空,首先保证数据库中有对应数据,如果有对应数据仍返回null,是数据库配置文件有问题.解决方案如下:1.mapper ...
- Kubernetes探索学习004--深入Kubernetes的Pod
深入研究学习Pod 首先需要认识到Pod才是Kubernetes项目中最小的编排单位原子单位,凡是涉及到调度,网络,存储层面的,基本上都是Pod级别的!官方是用这样的语言来描述的: A Pod is ...
- Python中collections模块的使用
本文将详细讲解collections模块中的所有类,和每个类中的方法,从源码和性能的角度剖析. 一个模块主要用来干嘛,有哪些类可以使用,看__init__.py就知道 '''This module i ...
- url的param与dict转换
urllib.parse.urlencode urlencode from urllib import parse from urllib.request import urlopen from ur ...
- Notes of Daily Scrum Meeting(11.17)
Notes of Daily Scrum Meeting(11.17) 今天是第四周的周一,也就是说距离最后发布也只剩下一周的时间,但我们的工程里面还有很多的问题没有解决,我关注过 其他一两个小组,他 ...
- 超实用 2 ArrayList链表之 员工工资管理系统
package ArrayList的小程序; import java.io.*; import java.util.*; public class kkk { /** * 作者:Mr.fan * 功能 ...
- Unity3D游戏开发——访问集中式共享模块的设计模式
什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结.设计模式是开发人员在开发过程中面临的一般问题的解决方案,这些解决方案是众多开发人 ...
- JAVA自学日记——Part Ⅰ.
和C++比较相似,Java同样是面向对象的设计语言,在基础的语句上有一些不大的差别,经过两天的学习,大概的了解了在eclipse中如何进行简单的编程,解决一些简单的问题,诸如在学习C时做过的“字符串倒 ...
- static作用(修饰函数、局部变量、全局变量)
转自:http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作 ...