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运行 ...
随机推荐
- markdown | Latex | 书写测试
我永远喜欢markdown! 建图 graph TD; 1-->2 1-->3 1-->4 2-->5 2-->6 3-->7 3-->8 4-->9 ...
- 如何在静态方法或非Spring Bean中注入Spring Bean
在项目中有时需要根据需要在自己new一个对象,或者在某些util方法或属性中获取Spring Bean对象,从而完成某些工作,但是由于自己new的对象和util方法并不是受Spring所 ...
- scrapy有用的(代理,user-agent,随机延迟等)
代理 方法一(待测试) 见scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware import os # 设置相应的代理用户名密码,主机和 ...
- js备忘录1
新建对象 赋值和取值操作 var book={ topic:"JavaScript", fat: true }; book.topic 通过点访问 book["fat& ...
- TeamWork#2,Week 2,We are sixsix!
We are sixsix! (从左至右依次是:郝倩.张志浩.高雅智[高哥].牛强.张明培育.彭林江.王卓) 郝倩,来自120617班,我们组7个成员中唯一一个6行政班以外的成员.为了达成组队条件,彭 ...
- Daily Scrum 11.7
明后两天周六日,按照TFS的日常安排应该是休息,所以让他们自由完成已经分配的任务. 姓名 今日任务 黄新越 提取爬取网页的关键字并输出到接口 刘垚鹏 程序总架构的修改与多线程的学习 王骜 多线程学习 ...
- 猫咪记单词——NABCD模型分析
N ——Need 需求:学习英语是一件非常重要的事.面对各种各样的考试,学习英语,最重要的就是词汇量,背单词是提高词汇量的最直接的方法,但是单纯的背单词太单调.寻找一些合适的,更易于接受的背单词学习英 ...
- 其实servlet就是一种mvc设计思想的一种实现
看图,不说话
- PROFIBUS-DP
PROFIBUS – DP的DP即Decentralized Periphery.它具有高速低成本,用于设备级控制系统与分散式I/O的通信.它与PROFIBUS-PA(Process Automati ...
- 从微信SDK看ProtoBuffer文件的生成
前言 Protocol Buffers (下面简称PB)是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议.数据存储等领域的语言无 ...