Sum HDU - 4407(容斥定理)

32、运算放大器的工作原理与应用 本文详细介绍了运算放大器的工作原理与多种应用场景,涵盖开环与闭环放大器的基本概念、理想运算放大器的特性及其‘黄金规则’。文章深入解析了反相放大器、同相放大器、单位增益跟随器与反相器的配置和增益计算,并探讨了电压比较器及窗口比较器的工作机制。同时提供了运算放大器在实际应用中的选型流程、使用注意事项以及常见故障排查方法,帮助读者全面掌握运算放大器的设计与应用要点。 阅读详情

Sum HDU - 4407

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 number (inclusive), get the sum of the numbers which are co-prime with p( 1 <=p <= 400000).
Operation 2: change the x-th number to c( 1 <=c <= 400000).

For each operation, XXX will spend a lot of time to treat it. So he wants to ask you to help him.
Input
There are several test cases.
The first line in the input is an integer indicating the number of test cases.
For each case, the first line begins with two integers — the above mentioned n and m.
Each the following m lines contains an operation.
Operation 1 is in this format: “1 x y p”.
Operation 2 is in this format: “2 x c”.
Output
For each operation 1, output a single integer in one line representing the result.
Sample Input

1
3 3
2 2 3
1 1 3 4
1 2 3 6

Sample Output

7
0
题意:

给一个数n,初始序列为1-n连续的数
两种操作
1.三个数x,y,p,求区间x-y和p互质的数的和
2.两个数x,y,将x位置的数修改成y

分析:

首先我们知道通过容斥定理来求区间[1,n]中和p互质的个数是能求的

我们先把p分解质因数,然后二进制枚举质因数组合得到一个因数,然后看n中有多少个数是这个因数的倍数,通过容斥加加减减,得到个数的答案

这个是求个数的过程那么求和呢?只需要加一个等差数列求和就行了,因为这个我们枚举一个因数v,无非就是看n中有多少数是v的倍数即v的1倍2倍3倍。。。,所以将共同v提出来就是1,2,3…所以就是等差数列求和,k×(k+1)2×v\frac{k\times (k+1)}{2}\times v2k×(k+1)​×v

那么这样给定一个范围x我们很容易求出1-x范围内与p互质的数的和,那么这道题给定的原始序列就是1-n连续的数,所以首先我们可以先求这个,对于修改的位置,因为并不是很多,我们检查一下我们所求的1-x的区间范围内有没有修改的数,我们检查一下,如果原始数(位置标号)和p不互质,不用管,因为上面容斥的的时候一定没加这个数,而如果发现互质,说明上面容斥的时候加上了,但是这个地方已经被修改了,所以首先我们需要减去这个原始的数(位置数),然后我们在判断一下修改之后的数是否和p互质,如果互质我们还需要在加上

code:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 400010;
int n,m;
struct node{
    int idx,v;//idx表示原始位置(原始数),v表示修改后的数
    node(){};
    node(int x,int y):idx(x),v(y){};
};
vector<node> c;//记录修改点
bool is[maxn];
vector<int>pr;
void prime(){
    memset(is,true,sizeof(is));
    pr.clear();
    pr.push_back(2);
    for(int i = 3; i < maxn; i += 2){
        if(is[i]){
            pr.push_back(i);
            for(int j = i + i; j < maxn; j += i){
                is[j] = false;
            }
        }
    }
}
ll cal(int x,int p,vector<int>&g){
    ll ret = (ll)x * (x + 1) / 2;//因为这道题是求和,而且我们只考虑原始数列1-n连续数字,应该是等差数列求和,所以这是原始总和
    //容斥部分
    for(int s = 1; s < (1 << g.size()); s++){
        int cnt = 0;
        int v = 1;
        for(int i = 0; i < g.size(); i++){
            if(s & (1 << i)){
                cnt++;
                v *= g[i];
            }
        }
        ll k = x / v;//这里是1-x内是v的倍数的个数
        k = k * (k + 1) * v / 2;//等差数列求和(原来是1,2,3..现在只是可以提出个公倍数v)
        if(cnt % 2 == 1) ret -= k;
        else ret += k;
    }
    //上面是求出了区间1-x连续的不带修改的情况下的和,下面枚举修改部分
    for(int i = 0; i < c.size(); i++){
        if(c[i].idx <= x){//说明找到一个修改位置在我们求的1-x范围内
            if(__gcd(c[i].idx,p) == 1) ret -= c[i].idx;//如果原本这个数和p互质说明我们上面容斥的时候已经加上了,现在要减去
            if(__gcd(c[i].v,p) == 1) ret += c[i].v;//如果新修改的值和p互质我们需要再加上这个值
        }
    }
    return ret;
}
void work(int x,int y,int p){
    vector<int> g;
    int k = p;
    for(int i = 0; i < pr.size() && pr[i] <= k; i++){//存下p的所有质因子
        if(k % pr[i] == 0){
            g.push_back(pr[i]);
            while(k % pr[i] == 0){
                k /= pr[i];
            }
        }
    }
    printf("%lld\n",cal(y,p,g) - cal(x-1,p,g));//利用容斥求[1,x-1]的再求[1,y]的相减得到
}
int main(){
    prime();
    int T,x,y,o,p;
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&n,&m);
        c.clear();
        while(m--){
            scanf("%d",&o);
            if(o == 1){
                scanf("%d%d%d",&x,&y,&p);
                work(x,y,p);
            }
            else{
                scanf("%d%d",&x,&y);
                bool f = true;
                for(int i = 0; i < c.size(); i++){//先看一下原来这个位置是否修改过,如果改过为了防止重复就不用再往里放新的结构体了
                    if(c[i].idx == x){//直接修改这个这个结构体就行了
                        c[i].v = y;
                        f = false;
                        break;
                    }
                }
                if(f) c.push_back(node(x,y));//如果这个位置第一次修改就放入vector
            }
        }
    }
    return 0;
}

【Bug已解决】This model‘s maximum context length is X tokens. However, you requested Y tokens 解决方案 summary_prompt = "请将以下对话历史压缩成一段简洁摘要,保留关键决策和结论:\n" + format_messages(old_part)return [{"role": "system", "content": f"此前对话摘要:{summary}"}] + recent_part这种方式能在大幅降低 token 消耗的同时,尽量保留任务推进所需的关键上下文,是目前业内做长会话 Agent 最常见的处理方式之一。方案适用场景推荐指数滑动窗口裁剪短任务,对早期历史依赖不强⭐⭐⭐。 阅读详情

相关推荐

java对接海康实现页面实时播放和回放

前言:之前已经写过一篇关于视频的文章,因为觉得有很多优化的地方,也谢谢同行们加我微信跟我提了一些需求和意见,所以在过年的假期重新写了一个比较能扩张的版本。 上一个版本的连接:https://blog.youkuaiyun.com/weixin_45848110/article/details/119363602 与之前的版本不同之处: 1.不需要安装ffmpeg 2.不需要安装nginx 3.直接运行jar即可 4.之前是完全脱离海康sdk,回放的录像是保存到本地服务,现在是直接在海康硬盘录像机获取录像回放 5.实时播

weixin_45848110的博客 1万+

容斥原理--Sum

A - Sum Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description XXX is puzzled with the question below:  1, 2, 3, ..., n (1 Opera

扬帆起航 446

LSTM模型股价波动率预测(含Python代码)

源代码文件可在gzh’finance褪黑素'回复【24012203】获取。

celiaweiwei的博客 3774

Sum(容斥原理)

E - Sum Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u SubmitStatus Description XXX is puzzled with the question below: 1, 2, 3, ..., n (1<=n<=400000) are

xdlove 943

从原理到实践:详解双目散斑结构光的生成与优化

本文深入解析了双目散斑结构光的生成原理与优化实践,详细介绍了散斑结构光的抗干扰性、空间编码技术及其在三维视觉中的应用。通过对比不同生成方法和技术路线,提供了参数调优指南和工程实现细节,帮助开发者掌握高效、精准的散斑生成技术。

weixin_42521856的博客 589

YOLO26-seg分割优化:轻量化卷积魔改 | 新的partial convolution(PConv)结合C3k2 | CVPR2023

​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 149

Sum

Problem Description 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-...

weixin_30892889的博客 154

MacBook M芯片第二篇:Homebrew安装

Homebrew是MacOS/Linux平台的软件包管理工具,提供便捷的安装、卸载、更新等功能。

码农魏轩 893

HDU 4407 Sum 解题报告(容斥原理)

Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1710    Accepted Submission(s): 477 Problem Description XXX is puzzled with the

SF-_- 的 ACM 博客 1265

A.特定领域知识图谱知识推理方案:知识图谱推理算法综述[五]-GeniePath会自动过滤多度“邻居“的图神经网络算法。

构图对于GNN格外重要。那么怎样构图才有信息、有意义呢?如果节点的邻居只有自己,即邻接矩阵为对角阵时,GNN会退化成一个DNN模型。图中每个节点都是孤立的,相当图信息并不能相比其他方法带来增益。如果图特别稠密,比如是一个clique,即每个节点都和所有其他节点有边连接。同样的,这样的图信息同样是信息熵为0。经验上讲,节点度分布有区分度的图是相对有价值的。查看图的节点度分布。比如二类分类,分析正负例的图拓扑当然,构图和实际场景强相关。

丨汀、的博客 437

【STM32项目】基于stm32智能鱼缸控制系统的设计与实现(完整工程资料源码)

随着现代化经济的快速发展,物质条件富足的人开始追求精神富足,越来越多的人通过饲养观赏鱼来充实生活、释放压力,但并非所有饲养者都有时间和经验来管理好鱼缸。一种由单片机控制,可实时检测和调节鱼缸环境,可把鱼缸环境实时反映给用户并能被用户远程操控的系统,可以解决养鱼成活率低、耗费时间和精力、参与感不强等诸多难题。

嵌入式技术开发 7351

Sum HDU - 4407

Sum(HDU 4407) 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 numbe

Grady_Ne的博客 434

BevFusion (1): 传感器介绍

激光雷达,也称光学雷达(LIght Detection And Ranging)是激光探测与测距系统的简称,它通过测定传感器发射器与目标物体之间的传播距离,分析目标物体表面的反射能量大小、反射波谱的幅度、频率和相位等信息,从而呈现出目标物精确的三维结构信息。激光雷达是自动驾驶车辆的关键传感器,如下图所示,车辆上方旋转的圆柱体对应就是激光雷达传感器。

@bangbang的博客 1474

HDU-4407 Sum(容斥定理+伪离线处理)

前述:这周末还是一如既往的补作业加刷题,感觉自己真的得了嗜睡症,一到周末没人叫就绝对起不来,真是浪费青春的大好时光啊周末做的这几个题里面,大部分是容斥定理的题目,但是就容斥定理本身来讲,这个题目才算是我真正入门的题目,为什么怎么说呢,这个专题时间挺短的,但是有的题目确实简单的很,在进入这个专题之前我一共看了三个相关的博客,一个是组合数的,两个是容斥定理的,然后基本仿照着这三个博客的说法(他的容斥定

m0_37772713的博客 212

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU4407 Sum[容斥定理]

D - Sum Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4407 Description XXX is puzzled with the question below:  1, 2, 3

ControlBear的博客 521

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

HDU - 4407 Sum 容斥定理

题目:给你初始为1,2,3,..,n的n个数,有m个操作,一共有2中类型的操作,1,x,y,p,询问区间[x,y]与p互质的数的和,2,x,y将第x个数变成y 1 1 思路:由于m不大,我们可以用容斥定理先把区间[x,y]里与p互质的数的和算出来,将每次的改变操作用map存下来,暴力枚举map里的数 代码: #pragma comment(linker, "/STACK:102400

ACVevtor的博客 269

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

HDU4407Sum 容斥定理

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4407 题意:在1E5个数中求某段区间中和p互素的数和。有1000次操作,每次操作可能是询问,可能是修改单点值。 注意!!初始时,序列是1,2.....n,很关键呀。操作数很少,可以用map存下修改操作,每次询问求cal(r,p)-cal(l-1,p),在加上修改的影响。 cal(r,p)可用容斥

alpc_wt的专栏 701

HDU-4407 Sum 容斥定理

对于一个数F,设F = p1^e1*p2^e2...*pn^en 那么[1-N]内与其互质的数和与D = p1*p2*...pn是一致的,因为和F、D互质的数都是不含有他们的素因子的数。对于D这个数求[1-N]内有多少个与其互质的数就可用运用容斥定理来求解了。以6为例,首先计算出与2不互质的数,用等差数列公式能够计算出这些满足于2不互质数的和,接着就加上与3不互质的和,最后再减一次与6不互质的和即...

weixin_33939380的博客 86

hdu 4407 Sum(分解质因数+容斥定理)

【题目】 Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4424    Accepted Submission(s): 1281   Problem Description XXX is...

菜鸡成长史 219

hdu 4407 Sum(容斥定理)

题意:给你一个数1~n的序列,m次操作,每次操作可以单点修改,即把a【i】的值改成c; 或一次区间查询,玩第x个数到第y个数之间与p互质的数的和 m 解析:初看以为是线段树,但大神说是容斥原理,一个p查询进行一次容斥,居然不超时。。。。。。 #include #include #include #include #include using namespace std; #define N

hlmfjkqaz的专栏 557

HDU 4407 Sum (容斥定理+DFS搜索)

Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4278    Accepted Submission(s): 1227   Problem Description XXX is puzzled with the quest...

满月照亮的路 252

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) 864

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

hdu Sum 容斥定理的应用

http://acm.hdu.edu.cn/showproblem.php?pid=4407 比赛的时候想到了先求与p不互质的然后减去,但是就是遇到了容斥处理的问题,当时没有想到对因子容斥,只想到求和容斥那去了。。哎。悲剧啊、、 题意: 给出一个长度为n序列初始值为1,2,......n对其进行两种操作: "2 x c" 将x位置的值替换成y; "1 x y p" 求区间[x,y]内...

weixin_30500663的博客 109

容斥——HDU 4407

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4407 题意:见链接 分析:因为区间是[1,N],所以我们可以先用求和公式得到和,然后利用容斥定理找出区间内并且与p不互质的数的和。再做差,就可以得到区间内与p互质的数的和。 tips:对于一个区间[1, x],x/v表示区间内能被v整除的数的个数。所以对于p的一个质因子组合v,我们可以直接求出区间[x

FeBr2的博客 412

hdu 4407 Sum

题解:因为一开始的序列是1,2,3,...... n。而修改次数m最大为1000.对于每次询问可以先假设没有改变任何位置上的数。然后把改变的地方存到map中再暴力修改。 对于原来的1~n个数,可以预处理出每个p的质因子,然后运用容斥定理求解与p不互质的个数,用总数减去即可。 #include"bits/stdc++.h" using namespace std; #define fi fir...

qq_18869763的博客 182
上一篇: Balloon Robot ZOJ - 3981(思维)
下一篇: Counting UVA - 10198(线性递推式)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值