首页 > 其他分享 >P4588 [TJOI2018] 数学计算

P4588 [TJOI2018] 数学计算

时间:2024-07-20 14:29:11浏览次数:10  
标签:P4588 cout int ll tree update pos 数学计算 TJOI2018

原题链接

题解

由于模拟会爆 longlong,所以用线段树维护每次操作的值,初始每次操作的值均为1

操作一令对应节点变为 m

操作二令对应节点变为 1

返回整棵树的值(相乘)

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;

ll tree[400005];
ll q,mod;

void update(int node,int l,int r,int id,int v)
{
    if(l>id||r<id) return;

    if(l==id&&r==id)
    {
        tree[node]=v%mod;
        return;
    }

    int mid=(l+r)/2;
    update(2*node,l,mid,id,v);
    update(2*node+1,mid+1,r,id,v);

    tree[node]=tree[node*2]*tree[node*2+1]%mod;
}


void solve()
{
    cin>>q>>mod;

    fill(tree,tree+4*q+1,1);

    ll x=1;
    for(int i=1;i<=q;i++)
    {
        int op;
        cin>>op;
        if(op==1)
        {
            int m;
            cin>>m;

            update(1,1,q,i,m);
            cout<<tree[1]<<'\n';
        }
        else
        {
            int pos;
            cin>>pos;
            update(1,1,q,pos,1);
            cout<<tree[1]<<'\n';
        }
    }
}
int main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) solve();
    return 0;
}


标签:P4588,cout,int,ll,tree,update,pos,数学计算,TJOI2018
From: https://www.cnblogs.com/pure4knowledge/p/18313071

相关文章

  • shell - 变量及数学计算
    变量声明#注意:以num=1为例,等号两边不能有空格#数字num=1#字符串str0=teststr1='test'str2="test"#字符串的三种声明方式是有区别的:#1.单引号中的内容回原样输出,不会转义,不会取值。#2.双引号中的内容输出,会转义,会取值。#3.没有引号和双引号效果一样。......
  • [TJOI2018] 碱基序列(题库给的什么鬼名字)
    题目描述小豆参加了生物实验室。在实验室里,他主要研究蛋臼质。他现在研究的蛋臼质是由k个氨基酸按一定顺序构成的。每一个氨基酸都可能有a种碱基序列si_j构成。现在小豆有一个碱基串s,小豆想知道在这个碱基上都多少中不同的组合方式可能得到这个蛋白质。即求由k段字符串有序合......
  • C语言08-函数(递归、字符串、日期时间、数学计算函数),指针
    第11章函数11.7递归函数​ ——相当于俄罗斯套娃;一个程序未执行结束会挂起,相当于堆栈一个函数在函数体内又调用了本身,我们称为递归调用,这样的函数就是递归函数。递归函数成功执行需满足以下两个条件:(1)必须有一个明显的结束条件。(2)必须有一个趋近于结束条件的趋势......
  • Matlab与数学计算
    原文地址:Matlab与数学计算-Pleasure的博客下面是正文内容:前言这是一篇笔记。主要用于介绍MatLab的作用以及其作为数学工具的使用方法。目的是总结学校课件复习自用,但是不可能像相关的书籍那么系统全面,力求简单明了。都是一些最基础的用法,更近一层的深入需要特定的环境......
  • P4588 [TJOI2018] 数学计算
    题目描述小豆现在有一个数x,初始值为1。小豆有Q次操作,操作有两种类型:1m:将x变为×*m,并输出xmodM。2pos:将x变为x除以第pos次操作所乘的数(保证第pos次操作一定为类型1,对于每一个类型1的操作至多会被除一次),并输出xmodM。输入格式一共有t组输入。对于每一......
  • MKL.NET:为.NET开发者提供高性能数学计算支持的开源库
    MKL.NET:为.NET开发者提供高性能数学计算支持的开源库编程乐趣​ ​关注他 你经常看TA的内容MKL是英特尔推出的一套功能强大、性能优化的数学库,主要是采用C/C++编写的。今天给大家推荐一个MKL的.Net版本,让我们无需与C/C++打交道,方便我们集成到应......
  • mysql数学计算
    mysql数学计算一、取整函数1、向上取整CEIL(X)和CEILING(X):返回大于等于X的最小INT型整数。SELECTCEIL(2.3)--32、向下取整FLOOR(X):返回小于等于X的最大INT型整数。SELECTFLOOR(2.3)--23、舍入函数ROUND(X,D):X表示要处理的数,D......
  • Go语言中的数学计算
    数学常量math.E //自然对数的底,2.718281828459045math.Pi //圆周率,3.141592653589793math.Phi //黄金分割,长/短,1.618033988749895math.MaxInt //9223372036854775807uint64(math.MaxUint) //得先把MaxUint转成uint64才能输出,18446744073709551615math.MaxFloat64 //1.797693......
  • MATLAB符号数学计算
       符号计算存放的是精确数据,耗存储空间,运行速度慢,但结果精度高;数值计算则是以一定精度来计算的,计算结果有误差,但是运行速度快。两者的区别是: 数值计算的表达式、矩阵变量中不允许有未定义的自由变量,而符号计算可以含有未定义的符号变量。一、符号对象和符号表达式close......
  • [TJOI2018] 游园会题解
    [TJOI2018]游园会(dp套dp)目录[TJOI2018]游园会(dp套dp)前言:题目简化:解题思路:较为简单的一步:较为困难的步骤思路总结代码呈现:注释/后记:前言:这是和dp套dp的初遇,这不得好好了解一下。题目简化:先把题目进行简化,就是要构造字符串,对于$len\in[0,k]$满足以下条件:只包含......