hdu 5475(2015上海网赛) An easy problem
题目;http://acm.hdu.edu.cn/showproblem.php?pid=5475
题意就是给X赋初值1,然后给Q个操作,每个操作对应一个整数M;如果操作是1则将X乘以对应的M,如果是2则除以第M次操作对应的M',求最后X的值对给定值取摸的结果,
直接暴力会爆long long,用数组存每一步的话 会超时,所以用线段树优化进行区间更新
#include<cstdio>
using namespace std;
typedef long long ll;
struct point {
int l,r;
ll sum;
};
point tree[*];
int n,m;
void build(int i,int left,int right)
{
tree[i].l=left;
tree[i].r=right;
if (left==right)
{
tree[i].sum=;
return;
}
int mid=(left+right)>>;
build(i<<,left,mid);
build(i<<|,mid+,right);
tree[i].sum=(tree[i<<].sum*tree[i<<|].sum)%m;
}
void update(int i,int num,int val)
{
if (tree[i].l==tree[i].r)
{
tree[i].sum=val;
return;
}
int mid=(tree[i].l+tree[i].r)>>;
if (num<=mid) update(i<<,num,val);
else update(i<<|,num,val);
tree[i].sum=(tree[i<<].sum*tree[i<<|].sum)%m;
}
ll _find(int i,int left,int right)
{
ll ans=;
if (left<=tree[i].l&&tree[i].r<=right)
return tree[i].sum;
int mid=(tree[i].l+tree[i].r)>>;
if (left<=mid) ans*=_find(i<<,left,right)%m;
if (right>mid) ans*=_find(i<<|,left,right)%m;
return ans%m;
}
int main()
{
int t,x,y,i,w=;
scanf("%d",&t);
while (t--)
{
printf("Case #%d:\n",w++);
scanf("%d %d",&n,&m);
build(,,n);
for (i=;i<=n;i++)
{
scanf("%d %d",&x,&y);
if (x==)
{
update(,i,y);
printf("%I64d\n",_find(,,i)%m);
}
else
{
update(,y,);
printf("%I64d\n",_find(,,i)%m);
}
}
}
return ;
}
hdu 5475(2015上海网赛) An easy problem的更多相关文章
- hdu 5475 模拟计算器乘除 (2015上海网赛H题 线段树)
给出有多少次操作 和MOD 初始值为1 操作1 y 表示乘上y操作2 y 表示除以第 y次操作乘的那个数 线段树的叶子结点i 表示 第i次操作乘的数 将1替换成y遇到操作2 就把第i个结点的值 替换成 ...
- ACM学习历程—HDU5475 An easy problem(线段树)(2015上海网赛08题)
Problem Description One day, a useless calculator was being built by Kuros. Let's assume that number ...
- hdu 5493 (2015合肥网赛) Queue
题目;http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意,t组数据,n个人,n行每行分别是人的身高和这个人的左边或右边比他高的人的个数,输出符合条件 ...
- hdu 5491(2015合肥网赛)The Next
题目;http://acm.hdu.edu.cn/showproblem.php?pid=5491 题意就是,T组测试数据.然后L,S1,S2.L的二进制中有x个1,x满足 S1<=x< ...
- hdu 5455 (2015沈阳网赛 简单题) Fang Fang
题目;http://acm.hdu.edu.cn/showproblem.php?pid=5455 题意就是找出所给字符串有多少个满足题目所给条件的子串,重复的也算,坑点是如果有c,f以外的字符也是不 ...
- hdu 5461(2015沈阳网赛 简单暴力) Largest Point
题目;http://acm.hdu.edu.cn/showproblem.php?pid=5461 题意就是在数组中找出a*t[i]*t[i]+b*t[j]的最大值,特别注意的是这里i和i不能相等,想 ...
- hdu 5459(2015沈阳网赛) Jesus Is Here
题目;http://acm.hdu.edu.cn/showproblem.php?pid=5459 题意 给出一组字符串,每个字符串都是前两个字符串相加而成,求第n个字符串的c的各个坐标的差的和,结果 ...
- hdu 5443 (2015长春网赛G题 求区间最值)
求区间最值,数据范围也很小,因为只会线段树,所以套了线段树模板=.= Sample Input3110011 151 2 3 4 551 21 32 43 43 531 999999 141 11 2 ...
- ACM学习历程—HDU5476 Explore Track of Point(平面几何)(2015上海网赛09题)
Problem Description In Geometry, the problem of track is very interesting. Because in some cases, th ...
随机推荐
- spring boot 的热部署插件
- python使用cv2显示图片像素值
给定一张灰度图,显示这张图片的像素值 def show_image_pixel(img): ''' :param img: 需要输出像素值的图像,要求是灰度图 :return: 无返回值 ''' he ...
- 关于scp在zsh报错:zsh:no matches found :
我要将某一目录下面所有文件拷贝的时候,scp *.jpg 的时候,报错 zsh: no matchs found:path 其实是zsh自己解析了*号,所以,只要给*加上就可以了\ scp \*.jp ...
- 前端三大框架之一React入门教程
相信大家对框架这个词都很熟悉吧,我一直喜欢js原生来开发,但是目前都要求工作效率,所有使用框架或者是库会使我们开发更加方便和快速,甚至一个人干十个人的活.. 框架优点: 1.方便开发.快速写功能 2. ...
- mySQL遇到的问题
学习mySQL遇到以下错误. 仔细检查才发现,是字段不一样. 所以插入数据,应该一一对应.
- ivew 表格中的input数据改变就会失去焦点
主要有两种解决办法: 1.创建一个临时空数组创建一个临时空数组,render内操作的是这个空数组内的对象,然后监听这个临时空数组,在赋值给table组件的data,render内操作的是这个空数组内的 ...
- 大型运输行业实战_day12_1_权限管理实现
1.业务分析 权限说的是不同的用户对同一个系统有不同访问权限,其设计的本质是:给先给用户分配好URL,然后在访问的时候判断该用户是否有当前访问的URL. 2.实现 2.1数据库设计标准5表权限结构 2 ...
- Excel图表编辑---表格移动,样式修改
一.移动位置和调整大小 先鼠标选中如下面这个图片,之后点击上方的设计按钮,随后选择右边的, 再选择,就可以实现图片的表格之间的移动. 其中移动图表里面的,选中这个之后,图表的大小会根据窗口的大小自动调 ...
- java面试题:Linux
Q:Linux怎么查端口?端口被占用怎么办? netstat -ntulp | grep 2181//查看2181端口号 netstat -pan | grep 2181 //查看2181端口号 如下 ...
- 搭建harbor仓库、LDAP认证
ldap: 192.168.199.177 c5game.com 宿主机:192.168.199.224 测试客户机:192.168.199.223 安装docker.docker-compose 访 ...