hdu 5475 An easy problem 线段树

EtherCAT主站SOEM -- 24 -- 基于STM32F767IGT6搭建自己的SOEM-EtherCAT主站 以上就是EtherCAT主站SOEM – 23 – 基于STM32F767IGT6搭建自己的SOEM-EtherCAT主站的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。 阅读详情

An easy problem

Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 746    Accepted Submission(s): 427


Problem Description
One day, a useless calculator was being built by Kuros. Let's assume that number X is showed on the screen of calculator. At first, X = 1. This calculator only supports two types of operation.
1. multiply X with a number.
2. divide X with a number which was multiplied before.
After each operation, please output the number X modulo M.
 

Input
The first line is an integer T( 1≤T≤10 ), indicating the number of test cases.
For each test case, the first line are two integers Q and M. Q is the number of operations and M is described above. ( 1≤Q≤105,1≤M≤109 )
The next Q lines, each line starts with an integer x indicating the type of operation.
if x is 1, an integer y is given, indicating the number to multiply. ( 0<y≤109 )
if x is 2, an integer n is given. The calculator will divide the number which is multiplied in the nth operation. (the nth operation must be a type 1 operation.)

It's guaranteed that in type 2 operation, there won't be two same n.
 

Output
For each test case, the first line, please output "Case #x:" and x is the id of the test cases starting from 1.
Then Q lines follow, each line please output an answer showed by the calculator.
 

Sample Input
  
1 10 1000000000 1 2 2 1 1 2 1 10 2 3 2 4 1 6 1 7 1 12 2 7
 

Sample Output
  
Case #1: 2 1 2 20 10 1 6 42 504 84
 

Source


用线段树维护区间乘积即可。删除操作就是把数字置为1.


#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
#define maxn 300007
int M;
int num[maxn],lc[maxn],rc[maxn],cnt;
void build(int u,int l,int r){
    num[u] = 1;
    if(l == r) return ;
    int mid = (l+r)/2;
    lc[u] = ++cnt;
    rc[u] = ++cnt;
    build(lc[u],l,mid);
    build(rc[u],mid+1,r);
}

void add(int u,int l,int r,int p,int val){
    if(l == r){
        num[u] = val;
        return ;
    }
    int mid = (l+r)/2;
    if(p > mid) add(rc[u],mid+1,r,p,val);
    else add(lc[u],l,mid,p,val);
    num[u] = ((long long)num[lc[u]]*num[rc[u]])%M;
}

int main(){
    int t,n,tt=1,u,v;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&n,&M);
        cnt = 0;
        build(0,0,n-1);
        printf("Case #%d:\n",tt++);
        for(int i = 0;i < n; i++){
            scanf("%d%d",&u,&v);
            if(u == 1)
                add(0,0,n-1,i,v);
            else
                add(0,0,n-1,v-1,1);
            printf("%d\n",num[0]%M);
        }
    }
    return 0;
}


巡检类机器人电池容量计算方法论(原理+算法+真实案例) 摘要:本文系统阐述了巡检机器人电池容量的计算方法,重点解析了;能量平衡;核心原理和三种主流算法。通过光伏电站履带式巡检机器人的真实案例,详细演示了从工况拆解、功耗采集到容量计算的完整流程。文章指出:室内轻载场景可采用静态平均功耗法,户外常规工况推荐动态负载积分法,而复杂环境需采用融合估算算法。特别强调需考虑温度修正(冬季容量衰减20%)、冗余系数(1.2-1.5)和放电深度(磷酸铁锂DoD取80%)等关键参数。 阅读详情

相关推荐

Hifiasm参数调优实战:当N50不理想时的7个排查方向与解决方案

本文详细解析了Hifiasm参数调优实战,针对基因组组装中N50不理想的7个排查方向与解决方案。通过调整--hom-cov、-D、-N等核心参数,结合HiFi数据和参考基因组分析,有效提升组装质量。文章以猪毛菜基因组为例,展示了从2.1MB到4.3MB的N50优化过程,为生物信息学研究者提供实用指南。

weixin_30642561的博客 425

2015 上海网络赛

An easy problem Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 53    Accepted Submission(s): 22 Problem Description One day, a use

Dikea's Blog 749

贝塞尔曲线原理--曲线生成--路径规划--matlab代码

贝塞尔曲线有着很多特殊的性质, 在图形设计和路径规划中应用都非常广泛, 在路径规划中贝塞尔曲线完全由其控制点决定其形状, n个控制点对应着n-1阶的贝塞尔曲线,并且可以通过递归的方式来绘制.

bob595078694的博客 1万+

2015ACM/ICPC亚洲区上海站-重现赛 A - An Easy Physics Problem

题意:在二维平面上有一个圆,知道圆心坐标和半径,现在给你一个点A,并且给你一个有方向的速度矢量v,问你这个点能否在按给定的速度矢量方向前进后,最终能经过给出的另一个点B,你可以通过与圆的碰撞来改变点的运动方向,碰撞属于完全弹性碰撞 思路: 总共可以分为两种情况,第一种情况,点未碰撞前的运动轨迹与圆相切或相离,这种情况我们只需要判断B点是否在它的运动轨迹上就行了,第二种情况,点未碰撞前的运动轨迹...

Zookkk的博客 9002

【STC8A8K64S4A12开发板】—学习PWM脉冲宽度调制

版权声明:本文为博主原创文章,转载请附上原文出处链接。 文章目录前言一、硬件设计1.PWM脉冲宽度调制介绍2.STC8A8K64S4A12系列单片机PWM介绍3.PWM配置步骤二、软件设计1.PWM寄存器汇集2.寄存器解析2.1.PWM配置寄存器PWMCFG2.2.PWM控制寄存器PWMCR2.3.PWM中断标志寄存器2.4.PWM外部异常控制寄存器2.5.PWM时钟选择寄存器2.6.PWM触发ADC计数器寄存器2.7.PWM2翻转寄存器2.8.PWMn控制寄存器2.9.PWMn电平保持控制寄存器3.PW

qq_36139768的博客 5216

STM32实战:5分钟搞定CanFestival协议栈下的CANopen心跳报文配置(附避坑指南)

本文详细介绍了如何在STM32平台上使用CanFestival协议栈快速配置CANopen心跳报文,包括硬件准备、协议栈移植、心跳报文配置及常见问题解决方案。通过实战步骤和避坑指南,帮助开发者高效实现节点状态监控,提升工业控制系统的可靠性。

win55的博客 745

信息学奥赛一本通 1223:An Easy Problem 贪心算法

举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么最小的比N大的并且二进制表示中只包含4个1的数是83,其二进制是1010011,因此83就是答案。给定一个正整数N,求最小的、比N大的正整数M,使得M与N的二进制表示中有相同数目的1。时间限制: 1000 ms 内存限制: 65536 KB。输入若干行,每行一个数n(1≤n≤1000000),输入"0"结束。输出若干行对应的值。

长春高老师编程 1669

给爸妈买的红米12C想装个老年桌面?先别急,解锁BL和Root前你得知道这些

本文详细解析了红米12C解锁BL和Root的利弊,为想要为长辈简化手机操作的用户提供全面指南。文章对比了BL解锁与Root的技术差异,推荐优先使用MIUI内置的极简模式等官方功能,并评估了Root的实际必要性。若必须Root,提供了安全操作流程和长期维护建议,帮助用户做出明智选择。

weixin_30265103的博客 318

An Easy Problem(信息学奥赛一本通-T1223)

【题目描述】 给定一个正整数N,求最小的、比N大的正整数M,使得M与N的二进制表示中有相同数目的1。 举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么最小的比N大的并且二进制表示中只包含4个1的数是83,其二进制是1010011,因此83就是答案。 【输入】 输入若干行,每行一个数n(1≤n≤1000000),输入"0"结束。 【输出】 输出若干行对应的值...

Alex_McAvoy的博客 5839

Qt垂直滚动条QVerticalScrollBar详解:从基础到实战的控件开发指南

本文系统解析Qt中QVerticalScrollBar的用法,从基础概念到进阶技巧。主要内容包括:1)基础认知:介绍其继承关系、作用及典型应用场景;2)核心用法:创建方法、关键属性配置和信号槽连接;3)进阶技巧:自定义样式表美化外观,以及与自定义内容区域的联动实现;4)实战注意事项,如避免循环触发和高DPI适配等。文章强调掌握QVerticalScrollBar对提升Qt滚动类功能开发效率的重要性,并建议通过自定义文本编辑器实践巩固知识点。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 759

YOLO11改进|卷积篇|引入SPDConv

YOLO11中添加SPDConv卷积

A1983Z的博客 3696

An Easy Problem(贪心)

描述 给定一个正整数N,求最小的、比N大的正整数M,使得M与N的二进制表示中有相同数目的1。 举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么最小的比N大的并且二进制表示中只包含4个1的数是83,其二进制是1010011,因此83就是答案。 格式 输入格式 输入若干行,每行一个数n(1≤n≤1000000),输入"0"结束。 输出格式 输出若干行对应的值。...

wodemaoheise的博客 1324

Ubuntu Rtx3090 Cuda11.7 安装 pytorch3d

pytorch ubuntu pytorch3d 安装

G果的博客 2273

hdu 5475 An easy problem(线段树)

题目链接:hdu 5475 An easy problem解题思路单点修改。貌似直接暴力都可以过,数据很弱。代码#include <cstdio> #include <cstring> #include <algorithm>using namespace std; const int maxn = 1e5 + 5; #define lson(x) ((x)<<1) #define rson(x)

不慌不忙、不急不躁 987

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

hdu 5475 An easy problem(线段树)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5475 思路: 这题直接模拟会出问题:因为他要求的只是输出结果取模。如果计算过程中取模,会导致x变化,令后续的操作得出的答案出现问题。 如果计算过程中不取模,会溢出。 所以我们考虑另一种方法: 对于每次操作,我们可以用一个数组将他的值存起来。如果是1操作,就令a[i]变为要乘的数y。如

hahahaha 720

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

hdu 5475 An easy problem (线段树)

传送门http://acm.hdu.edu.cn/showproblem.php?pid=5475 题意: 给定一个x,初值为1 有以下两种操作: 1、乘以k 2、除以第k次操作的所乘的值 线段树单点更新问题,查询的时候只需要输出v[1]的值即可。 具体看下代码就好了。 另外,这题xjb暴力可以卡时过掉,亲测。 (其实本来并不想写这个题解,这题真的是An easy

To be excellent! 386

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

HDU - 5475 An easy problem 线段树

题意: 每次给定两种操作中的一种 操作1:乘上x 然后%mod 输出 操作2:除以第x次操作乘的那个数,输出mod 思路: 由于模的存在,不能直接除以之前乘的那个数,暴力能水过,我们考虑线段树 线段树记录区间乘积 对于每个点i(对应于第i次操作),如果是乘法,就把该点更新成x,如果是除法,就更新成1,这样就相当于没成。然后查询区间乘积,区间是1~当前的i,其实也可以直接输出根节点的值,因为后面没涉...

青春苦瓜 206

HDU5475 An easy problem 线段树单点更新

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5475 题目大意:给出一个数X,有两种操作:1 y表示将X乘上y,2 n表示将X除上第n个操作的y值(保证第n个操作存在且为1操作),给出Q次操作,输出每次操作之后的X%M的值。 分析:取模操作只是在输出X时才进行,运算时并不取模,故直接做显然是不行的(java大整数做的当我没说),

AC_Gibson的专栏 628

hdu5475 An easy problem 线段树

res=1; 1 . x==1,y -> res*=y; 2. x==2, n -> res/=yn

u014445884的专栏 403

【线段树】单点更新 hdu 5475 An easy problem

An easy problem Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 2322    Accepted Submission(s): 940 One day, a useless calculator was bein

Hi_jiaxinwei的博客 352

hdu-5475-An easy problem-线段树求乘积

题意。初始X=1; 给n,mod   ,表示n次操作 操作1格式 : 1  b 表示用x乘上b 操作2格式: 2   n 表示 当前x除掉第n次 "1操作” 的数 每次操作输出一个答案,输出的答案是要对mod取模 由于有除法所以我们不能每一步取模 一直在想什么办法能过。。。最后卡死了。。 赛后才知道 直接就是一个长度为n的rmq线段树 每个点维护一个数 初始值为1 操作1 就是

缺氧 606

线段树--hdu5475 An easy problem

1e5次操作,op = 1,就乘上一个数y(1e9) ,op = 2,就除以第n次乘上的数。求每次操作后对m取余的值。 居然是线段树。 //线段树 1e5确实看起来像 #include #include using namespace std; #define mid (l + r) / 2 #define lc rt 1

unintended 309

hdu5475An easy problem 线段树

//两个操作 //初始数值是x = 1 //1 y 将 x = x*y%m //2 n x = (x*a[n])%m a[n]为第n个数 //每次输出对应的x //先离线,然后用线段树每个数作用的区间都乘以该数 #include<cstdio> #include<cstring> #include<iostream> using namespace std ; const int maxn =

ijbuhv的专栏 851

HDU - 5475 An easy problem (暴力或线段树)

One day, a useless calculator was being built by Kuros. Let's assume that number X is showed on the screen of calculator. At first, X = 1. This calculator only supports two types of operation. 1. mult...

birdmanqin的博客 211

HDU-5475-An easy problem【线段树】

题目大意: 两种操作: 1.输入 1 n, 表示 x 乘上一个数字x 2.输入 2 n, 表示 x 除以输入的第x个数字 求每步操作结束x这个数字的值 题目思路:线段树,m个数字,求相当于m个结点的乘积。 初始化节点的值全部为1。 第一种操作:第i个节点的值改为n 第二种操作:第n个节点的值改为1 注意线段树中需要取模的地方。。。

Linoy 581

HDU 5475 An easy problem(线段树)

题目链接: 戳我 题目大意: 一个计算器只有两种运算,初始化 X = 1 第一种操作: X 乘以 一个数,获得新的 X 第二种操作: 当前的 X 除以 一个数 输出 X % M 其中 1 y 表示第一种操作,即 X = X * y 2 n 表示 X 除以 前面的 第 n 个操作的那个 y,保证 第 n 个表示的是 1,即数据合法 注意:X ...

aocang4831的博客 138
上一篇: hdu 5479 Scaena Felix 枚举
下一篇: hdu 5441 Travel 排序 并查集
GDRetop
博客等级 码龄15年 181粉丝 341原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GDRetop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值