hdu 4407 SUM(容斥原理)

HTPA 32x32d热成像传感器实战指南:从替代MLX90640到精准测温 本文为HTPA 32x32d热成像传感器提供了从硬件连接到精准测温的完整实战指南。针对MLX90640替代需求,详细解析了HTPA传感器的核心优势、IIC通信要点、EEPROM校准数据读取与解析、独特的块数据读取模式,并逐步拆解了五大温度补偿计算流程,旨在帮助开发者克服高开发门槛,实现稳定可靠的非接触式测温应用。 阅读详情

题意:

有一个元素为 1~n 的数列An,有2种操作(最多1000次):
1. 求某段区间 [a,b] 中与 p 互质的数的和。
2. 将数列中某个位置元素的值改变。

解析:

刚刚开始的时候想成线段树了,看了题解才明白是用容斥原理来做。
对于操作1,解的性质满足区间减法,则我们只需要考虑如何求 [1,n] 中与 p 互质的数的和即可。
由于与 p 互质的数的和不太好求,于是可以通过先求出与 p 不互质的数的和。
若一个数 x 若与 p 不互质,当且仅当两者素因子的集合有交集。
根据这个定理,可以先预处理出每个数的质因子,然后利用利用容斥原理求出,到当前终止位置,有多少数字和 p 不互质。
又由于满足区间减法,所以可以求出有区间内有多少数字和 p 不互质。那么区间内的和减去区间内和 p 不互质的数的和就是最终答案。

对于操作2,修改用map记录,每次扫一遍即可,如果原数和c互质就减掉,修改完的数和c互质就加上去,总复杂度O(m2∗log(n))

注意:

n最大为400000,中间过程有n*(n+1),如果用int会超出范围,所以要用longlong,不然会WA。

my code

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#define pb push_back
using namespace std;
typedef long long ll;
const int N = (int)4e5 + 5;
map<int, int> mp;
map<int, int>::iterator it;
vector<int> prime[N];
int n, m;

int gcd(int a, int b) {
    if(b == 0) return a;
    else return gcd(b, a%b);
}

void getFactor() {
    for(int i = 2; i < N; i++) {
        if(prime[i].size() > 0) continue;
        for(int j = i; j < N; j += i) {
            prime[j].pb(i);
        }
    }
}

ll cal(int r, int num) {
    int size = prime[num].size();
    ll ret = 0;
    for(int i = 1; i < (1<<size); i++) {
        int cnt = 0;
        ll d = 1;
        for(int j = 0; j < prime[num].size(); j++) {
            if((i >> j) & 1) {
                d *= prime[num][j];
                cnt++;
            }
        }
        ll n = r / d;
        if(cnt & 1) ret += n * (n + 1) / 2 * d;
        else ret -= n * (n + 1) / 2 * d;
    }
    return ret;
}

ll query(int ql, int qr, int val) {
    ll n = (qr - ql + 1);
    ll sum = n * ql + n * (n - 1) / 2;
    sum -= (cal(qr, val) - cal(ql - 1, val));
    for(it = mp.begin(); it != mp.end(); it++) {
        if(ql <= it->first && it->first <= qr) {
            if(gcd(val, it->second) == 1) sum += it->second;
            if(gcd(val, it->first) == 1) sum -= it->first;
        }
    }
    return sum;
}

int main() {
    getFactor();
    int op, x, y, val;
    int T;
    scanf("%d", &T);
    while(T--) {
        mp.clear();
        scanf("%d%d", &n, &m);
        while(m--) {
            scanf("%d", &op);
            if(op == 1) {
                scanf("%d%d%d", &x, &y, &val);
                ll ans = query(x, y, val);
                printf("%lld\n", ans);
            }else {
                scanf("%d%d", &x, &val);
                mp[x] = val;
            }
        }
    }
    return 0;
}
PYTHON 打印三角形大全 用PYTHON语言打印各种三角形 阅读详情

相关推荐

SWD下载调试接口原理深度剖析

作为ARM嵌入式工程师,下载调试器都应该知道,但你真正了解SWD如何下载调试的么?ARM 芯片通过什么物理接口和什么方式连接完全取决于芯片Debug子系统的架构如何?

zhuwade的博客 1万+

HDU 4407 Sum(12年金华 容斥原理)

转载请注明出处,谢谢http://blog.youkuaiyun.com/acm_cxlove/article/details/7854526       by---cxlove  题目:查询区间内与互质的数的和 比赛的时候SB了没看清题目,忽视了一个重要条件,初始的时候a[i]=i,而且操作不多 其实看到了也不一定会。 初始做法是:维护一段区间的LCM,然后判断LCM与P的GCD是否为1,如果是

窝不是爱酱,喵~~~~ 4432

第1章:Zephyr 开发环境搭建与 Hello World

📝【摘要】本文是Zephyr RTOS开发入门指南的第一章,详细介绍了从环境搭建到首个应用运行的完整流程。主要内容包括:1️⃣ Zephyr项目结构解析与west工具链部署;2️⃣ 开发环境配置(Linux/WSL)及SDK安装;3️⃣ 两种实践路径——官方HelloWorld样例与自定义应用开发;4️⃣ 实际硬件部署方法(nRF/STM32)及常用west命令速查;5️⃣ 典型问题解决方案。通过qemu_x86模拟器演示了基础打印功能实现,为后续深度开发奠定基础。

hemoparrot的专栏 1361

hdu 4407 Sum (容斥原理)

题意: 对于一个序列原来是1~n,现在又两个操作,操作1、给定区间[l,r]求这个区间中与p互质的数的个数;操作2、将区间的第i个数变成a。 题解: 如果没有替换的操作,对于求某个区间与p互质的个数,可以分别求[1,l]和[1,r]的,然后相减。对于求某个区间的数是否与p互质,明显不好求,那么我们可以求不互质的个数,不互质的个数就是p的质因子倍数的个数,这个显然要用容斥来计算,在计算时我们要

ACM之梦 702

LLaMA-Factory微调教程2:命令行sft微调

本文介绍了如何使用llama-factory项目在本地运行Qwen2-7B大语言模型进行对话。首先通过llamafactory-cli env查看环境配置,然后使用git lfs下载Qwen2-7B模型。创建配置文件qwen2_7b_instruct.yaml,修改模型路径和模板参数。最后通过llamafactory-cli chat命令启动对话服务,加载模型配置文件和tokenizer,完成环境初始化后即可进行交互式对话。

Cachel Wood的博客 8815

Open3D 体素下采样【2026最新版】

体素滤波,博客长期更新,本文最近更新时间为:2026年4月11日。

点云侠的博客 37万+

hdu4407Sum(容斥原理)

http://acm.hdu.edu.cn/showproblem.php?pid=4407 Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1551Accepted Submission(s): 232 ...

weixin_30318645的博客 108

姿态传感器/陀螺仪之ICM-42670-P应用原理图设计

ICM-42670-P采用LGA-14封装,尺寸为2.5x3x0.76毫米,工作电压范围为1.71V至3.6V,支持I3CSM、I2C和SPI串行通信接口。其设计目标是提供高精度、低功耗和小型化的解决方案,以满足消费类和工业应用的需求。ICM-42670-P是一款由TDK InvenSense推出的高性能六轴MEMS运动追踪传感器,集成了3轴陀螺仪和3轴加速度计,适用于多种应用场景,包括可穿戴设备、游戏控制器、无人机、AR/VR设备等。

corlin6688的博客 1206

HDU 4407 Sum (容斥原理)

这题难点就是看出来用容斥原理做,可以先分析时间复杂度大致确定用我已知的数据结构做不了。。。我们会发现刚开始数据是1-n,如果不做任何修改的话,只查询的话的确可以用容斥原理做,就是把p质分解,然后没有p质因数的元素就是与p互质的元素,于是就很容易用容斥原理做了。但是有了修改操作,我们发现一旦做出了修改就没办法用上述方法做了。但是仔细考虑发现修改次数最多不会超过1000,于是我们可以先用容斥原理算出未

ok_again的专栏 1439

Pytorch图像去噪实战(七):Noise2Noise自监督图像去噪实战,没有干净图也能训练模型

PyTorch图像去噪实战:Noise2Noise自监督去噪方法 本文介绍了在没有干净图像的情况下使用Noise2Noise方法进行图像去噪的实战方案。主要内容包括: 问题场景:真实项目中经常只有带噪图像而没有对应的干净图像,如夜间监控、医学影像等场景。 Noise2Noise核心思想:使用同一场景的两张不同噪声版本的图像进行训练(noisy_image_a → noisy_image_b),让模型学习恢复共同的干净结构而非随机噪声。 技术原理:模型通过最小化两个独立噪声图像之间的差异,最终会收敛到真实干净

ai技术增长的博客 502

15 RK3568 RTL8111 PCIE

我这边扩了三个网卡。pcie3.0拆分了1+1lane。需要注意自己的reset引脚修改为自身rtl引脚即可。1、调试pcie 扩展网卡 RTL8111。

qq_39451352的博客 180

HDU4407 Sum【容斥原理】

题目大意: 刚开始有一个长度为N的序列,排列为{1、2、3、…、N}。下边是M个操作指令。 有两种操作: 操作1:给你三个整数 Left Right d 求出区间[Left,Right]上与整数d互素的数的和 操作2:给你两个整数 pos d 将第pos个位置上的数改为d。 解题思路: 求出区间[Left,Right]上与整数d互素的数的和可以用容斥定理求出,类似于HDU4135。 下边考虑更改操作。看了题意,1 <= M <= 1000。最多只有1000个操作,那么可以把 每次的更改操作都保存起来,

程序员充电站(itcharge) 865

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

[容斥原理] hdu 4407 Sum

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4407 Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1817    Accepted Submission(

cc_again的专栏 1200

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hdu 4407 Sum(容斥原理)

题意:n个数在一行,有两种操作,一种是求区间[L,R]的数字中与p互质的数的和,另一种是修改某个位置的数。 思路:求区间与p互质的数可以转化为总和-不互质的的数的和,这样就可以通过容斥原理求解。至于修改,由于修改次数比较小,把修改存起来,对于每个查询,一个个改过去。 代码: #include #include #include #include #include #include #incl

绝望的乐园 860

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

hdu4407 Sum(容斥原理)

题意:已知序列1,2…n。存在两个操作 1,x,y,p:统计[x,y]位置区间内有多少个元素与p互素 2,x.c:将x位置上的数改成c n<=400000,操作数m<=1000 解法:由于操作数较小,所以先处理未操作的结果,然后再考虑数字置换后结果的该变量。

acmer的随记 430

HDU 4407 SUM 【数论,容斥原理】

这道题目用到的知识和 【HDU 1695 GCD】是一样的。 都可以抽象出一个子问题:判断一个数s同区间(x, y)里面有多少个数互素——用容斥原理可以解决。 这道题目不是统计互素的个数,而是统计与s互素的数的和,其实没有区别,求出个数之后等差数列求和就可以。 还有一个修改操作:由于修改的次数不是很多,可以单独考虑更改的数字——注意判重(代码中有注释) #include

智障 3213

HDU 4407 Sum(容斥原理)

 题意:一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 思路:先预处理求出1到400000所有数的质因子保存起来。 这个问题可以转化为求[1,R]之间与p不互素的数的和,这个可以用容斥原理来做,然后用区间和减去这个值就是答案,这是静态的做法。 如果有修改的话

GODSPEED 803

HDU 4407 Sum (容斥原理)

Problem Description XXX is puzzled with the question below:  1, 2, 3, ..., n (1 Operation 1: among the x-th number to the y-th number (inclusive), get the sum of the numbers which are co-prime with

深海沧澜的博客 493

hdu - Sum-4407 - 容斥原理

Problem DescriptionXXX is puzzled with the question below: 1, 2, 3, …, n (1<=n<=400000) are placed in a line. There are m (1<=m<=1000) operations of two kinds. Operation 1: among the x-th number to

Daioo 随笔 547

hdu 4407 Sum (容斥原理)

题目链接:hdu 4407   题意: 给一个长度为n的序列,序列由1~n依次组成。  对序列执行两种操作:  1.查询[x,y]内与p互素的数的和;  2.修改第x数为c.   题解: 这题我们可以先不管操作2,就按操作1去搞,因为数据很小,完全可以暴力解决操作2带来的问题, 那么我们可以求[1,n]内与p互素的和,最后结果就为 solve[1,y]-solve[1,x-1],再处...

Jiandong 295

HDU 4407 Sum ★(容斥原理)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4407 题目大意:给定初始n个数1..n,两个操作,①1 x y p 询问第x个数到第y个数中与p互质的数的和; ②:2 x y 把第x个数变成y 思路:容斥原理求数区间[1..r]中与n互质的数的(个数&&和):HDU 4135 解决它的逆问题:求[1..r]中与n不互质的数...

weixin_30342827的博客 109

HDU 4407 Sum(容斥原理+质因数分解)

HDU 4407题意:给一个长度为n的序列,序列由1~n依次组成。 对序列执行两种操作: 1.查询[x,y]内与p互素的数的和; 2.修改第x数为c.思路:往线段树的方向想了半天,发现就是容斥原理略微变形,脑残不可医啊。。修改操作可以用map进行映射。查询操作的话我们就把序列一直当做1~n的序列来查询,然后迭代器跑一遍map判断对查询有无影响即可,总之操作最多2000次; 对于查询操作,我们

a novice 1376

HDU 4407 sum 容斥原理

算法: 利用数据1...N的性质,求与P的互质的个数,位运算,容斥定理。。 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> #include<vector> #include<string> #includ...

weixin_30245867的博客 173

hdu4407 Sum 容斥原理

XXX is puzzled with the question below:1, 2, 3, ..., n (1<=n<=400000) are placed in a line. There are m (1<=m<=1000) operations of two kinds.Operation 1: among the x-th number to the y-th...

weixin_33901641的博客 130
上一篇: 简说期望类问题的解法
下一篇: hdu 4403 A very hard Aoshu problem(dfs)
HelloWorld10086
博客等级 码龄12年 88粉丝 614原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值