hdu-5475 An easy problem---线段树+取模
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5475
题目大意:
给X赋初值1,然后给Q个操作,每个操作对应一个整数M;
如果操作是1则将X乘以对应的M,
如果是2则除以第M次操作对应的M',求每次操作后X的值对给定值取摸的结果。
解题思路:
第一眼看这道题,以为就是水题,直接模拟暴力呀,但是发现这样是错误的,因为这里有除法,对除法取模,就应该是逆元,但是逆元不一定存在
想了之后发现可以用线段树保存每一个要乘以的数字,对于操作一就加入数字即可,操作二就对第M次操作的数字进行标记,不让他参与乘法运算,每次输出tree[1]的值就可以了。
线段树维护两个值,一个为标记,一个是区间内的数字的积,对于操作一,更新叶节点,并且更新其父节点。对于操作2也是更新叶节点,标记他,更新父节点时,不让标记过的叶节点参与乘法运算。
#include<bits/stdc++.h>
#define MID(l, r) (l + (r - l) / 2)
#define lc (o<<1)
#define rc (o<<1|1)
using namespace std;
typedef long long ll;
int n, m;
const int maxn = + ;
struct node
{
bool flag;
ll num;
int l, r;
}tree[maxn << ];
void build(int o,int l, int r)
{
tree[o].l = l, tree[o].r = r;
tree[o].flag = ;
if(l == r)
{
tree[o].num = ;
return;
}
int m = MID(l ,r);
build(lc, l, m);
build(rc, m + , r);
tree[o].num = ;
if(tree[lc].flag)tree[o].num = tree[o].num * tree[lc].num % m;
if(tree[rc].flag)tree[o].num = tree[o].num * tree[rc].num % m;
}
int flag;
int p, v;
void update(int o)
{
if(tree[o].l == tree[o].r)
{
if(flag)
{
tree[o].flag = ;
tree[o].num = v;
}
else
{
tree[o].flag = ;
}
return;
}
if(p <= tree[lc].r)update(lc);
else update(rc);
tree[o].num = ;
if(tree[lc].flag)tree[o].num = tree[o].num * tree[lc].num % m;
if(tree[rc].flag)tree[o].num = tree[o].num * tree[rc].num % m;
}
int main()
{
int T, cases = ;
cin >> T;
while(T--)
{
printf("Case #%d:\n", ++cases);
scanf("%d%d", &n, &m);
int a, b;
build(, , n);
for(int i = ; i <= n; i++)
{
scanf("%d%d", &a, &b);
if(a == )
{
flag = ;
p = i, v = b;
}
else
{
flag = ;
p = b;
}
update();
printf("%lld\n", tree[].num);
}
}
return ;
}
hdu-5475 An easy problem---线段树+取模的更多相关文章
- HDU 5475 An easy problem 线段树
An easy problem Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
- 2015上海网络赛 HDU 5475 An easy problem 线段树
题意就不说了 思路:线段树,维护区间乘积.2操作就将要除的点更新为1. #include<iostream> #include<cstdio> #include<cstr ...
- hdu 5475 An easy problem(暴力 || 线段树区间单点更新)
http://acm.hdu.edu.cn/showproblem.php?pid=5475 An easy problem Time Limit: 8000/5000 MS (Java/Others ...
- hud-5475 An easy problem(线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=5475 An easy problem Time Limit: 8000/5000 MS (Java/Others ...
- hdu 4291 A Short problem(矩阵+取模循环节)
A Short problem Time Limit: 2000/1000 MS (J ...
- Gym 101201J Shopping (线段树+取模)
题意:给定 n 个物品,然后有 m 个人买东西,他们有 x 元钱,然后从 l - r 这个区间内买东西,对于每个物品都尽可能多的买,问你最少剩下多少钱. 析:对于物品,尽可能多的买的意思就是对这个物品 ...
- hdu 5443 The Water Problem 线段树
The Water Problem Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
- HDU 3016 Man Down (线段树+dp)
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- HDU.5692 Snacks ( DFS序 线段树维护最大值 )
HDU.5692 Snacks ( DFS序 线段树维护最大值 ) 题意分析 给出一颗树,节点标号为0-n,每个节点有一定权值,并且规定0号为根节点.有两种操作:操作一为询问,给出一个节点x,求从0号 ...
随机推荐
- Silverlight & Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)
模糊效果(BlurEffect)与阴影效果(DropShadowEffect)是两个非常实用和常用的两个特效,比如在开发相册中,可以对照片的缩略图添加模糊效果,在放大照片的过程中动态改变照片的大小和模 ...
- Nodejs 8.0 踩坑经验汇总
.Linq:Linq to sql 类 高度集成化的数据库访问技术 使用Linq是应该注意的问题: 1.创建Linq连接后生成的dbml文件不要变动,生成的表不要碰,拖动表也会造成数据库连接发生变动, ...
- Struts2初步学习总结
Struts2当时上课的时候老师给我们讲过,了解过一些,但也仅仅是了解,,,没动手去做,准确的说是试了一下,然后没做成功,,,现在又想把这个夹生饭给煮一下了,,,, 结合W3Cschool和轻量级Ja ...
- Angular4 step by step.2
1.使用CLI命令生成的项目,直接把css ,和 template 给独立到文件中了,看着 `` 扎眼 哇咔咔 2.项目效果图:
- Hadoop 完全分布式部署(三节点)
用来测试,我在VMware下用Centos7搭起一个三节点的Hadoop完全分布式集群.其中NameNode和DataNode在同一台机器上,如果有条件建议大家把NameNode单独放在一台机器上,因 ...
- 2018-12-25 课堂笔记&面试题
面试题一.Java中,八大基本数据类型有哪些?答:数值型:整型(byte.short.int.long)浮点型(float.double)非数值型:布尔类型(boolean)字符型(char).注意: ...
- SZU3
CodeForces 343A 这是第一题,像这种水题一定不要想复杂,思路不对立马换. 抓住串联和并联,可以用辗转相除法 #include <iostream> #include < ...
- python 2.7支持中文
在代码的第一行加上#coding=utf-8 return render_template('index.html',message=u"小明小明")print u'你要打印的字符 ...
- Hibernate 注解(Annotations 二)一对一双向注解
注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来 ...
- windows 2003 安装 MVC 环境 404错误,无法找到该页
在windows server 2003 IIS6 系统安装 DotNet 4.0 + MVC3 环境后, .cshtml 文件依然无法运行,404错误 解决方案:查看处理程序隐射,如果没有.csht ...