[BZOJ3211]花神游历各国(线段树+区间开根)

题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3211

分析:

区间开根是没法区间合并的。

但是注意到10^9开根开个5次就变成1了……

于是只要在每个区间额外维护个值b,b=1表示这段全部都是1了,不用修改了,b=2表示这段没有全部是1,还要修改

然后这样就行了

时间: 2024-07-31 14:32:55

[BZOJ3211]花神游历各国(线段树+区间开根)的相关文章

bzoj3211花神游历各国 线段树

3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 4252  Solved: 1547[Submit][Status][Discuss] Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 41 100 5 551 1 22 1 21 1 22 2 31 1 4 Sample Output 1011111 HINT 对于100%的数据, n ≤ 1000

BZOJ 3211 花神游历各国 线段树题解

BZOJ 3211 花神游历各国 线段树题解 3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 2551  Solved: 946[Submit][Status][Discuss] Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 2 1 2 1 1 2 2 2 3 1 1 4 Sample Output 101

BZOJ 3211: 花神游历各国( 线段树 )

线段树...区间开方...明显是要处理到叶节点的 之前在CF做过道区间取模...差不多, 只有开方, 那么每个数开方次数也是有限的(0,1时就会停止), 最大的数10^9开方10+次也就不会动了.那么我们线段树多记个max就可以少掉很多不必要的操作 -------------------------------------------------------------------------------------------- #include<cstdio> #include<cs

BZOJ 3211 花神游历各国 (树状数组+并查集)

题解:首先,单点修改求区间和可以用树状数组实现,因为开平方很耗时间,所以在这个方面可以优化,我们知道,开平方开几次之后数字就会等于1 ,所以,用数组记录下一个应该开的数,每次直接跳到下一个不是1的数字进行开平方,至于这个数组,可以用并查集维护. #include <cstdio> #include <cmath> #include <iostream> using namespace std; typedef long long LL; LL c[100005]; in

[BZOJ3211]花神游历各国&amp;&amp;[BZOJ3038] 上帝造题的七分钟2 树状数组+并查集

3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 4057  Solved: 1480[Submit][Status][Discuss] Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 2 1 2 1 1 2 2 2 3 1 1 4 Sample Output 101 11 11 HINT 对于100%的数据,

bzoj3211: 花神游历各国

/*向下取整smg! Popoqqq:题目大意:给定一个序列,提供下列操作:1.将[l.r]区间内每个数a[i]变为sqrt(a[i])2.查询[l,r]区间的和根号是不支持区间修改的,于是我们选择单点修改区间查询的树状数组,但是这样是O(n^2)的,怎么办?我们发现一个数x最多开loglogx次根号就会变为1 也就是一个int范围内的数只要开6次根号就会变为1 于是修改的总时间复杂度为O(nloglogn)但是单次修改怎么办?我们维护一个并查集,一旦一个数为1或0,我们就把这个位置的fathe

hdu 4027 Can you answer these queries? 线段树区间开根号,区间求和

Can you answer these queries? Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5195 Description A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use our secret weapo

bzoj3211: 花神游历各国(线段树)

bzoj3211 输出格式:每次x=1时,每行一个整数,表示这次旅行的开心度 解析:已经写了好几次这种题了,这次来水水博客 QAQ~ ???不难发现对于数列中的每一个数,被进行操作后改变的次数是很少的. ???于是可以记录下每一段区间是否已经全部变成了1(变成1后再进行操作数仍不变),对于全是1的区间不用再进行操作. ???这样我们可以对每一个不全是1的区间暴力修改,最后统计一下和即可. 代码如下: #include<cstdio> #include<algorithm> #inc

【线段树】bzoj3038 上帝造题的七分钟2 / bzoj3211 花神游历各国

暴力修改,记录一段是否全部为1或0,若全是了,则不再修改. 注意3211一定要判是否为0,否则会T得惨无人道. #include<cstdio> #include<cmath> using namespace std; #define lson rt<<1,l,m #define rson rt<<1|1,m+1,r int f,c; typedef long long ll; inline void R(int &x){ c=0;f=1; for(