bzoj3211花神游历各国

来源:互联网 发布:淘宝波奇网有假货吗 编辑:程序博客网 时间:2024/06/10 09:47

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%的数据, n ≤ 100000,m≤200000 ,data[i]非负且小于10^9

Source

SPOJ2713 gss4 数据已加强

看了好几道并查集的题都不会都说是和这道题一模一样
那么我们来看看这道题把。
首先可以用线段树暴力做复杂度大概多个log
线段树做就是暴力做法吧
我们来学习一下树状数组加并查集的更暴力的做法吧
思路是暴力修改l到r然后用并查集跳过那些已经不能继续开方的数
大概基本很多人的修改都是下面的这一句话

for(int j=l;j<=r;add(j,(t=(int)sqrt(a[j]))-a[j]),a[j]=t,        f[j]=(a[j]<=1)?j+1:j,j=(find(j)==j?j+1:f[j]));

!这种东西我能看懂么
不存在的
不过好像第一行就是暴力修改的意思没啥可想的
如果j已经被削到1以下(开方没变化),那么原来连向j的那些应该指向j+1了,否则还指向j
第二句表示如果j还指向自己那么就一位一位走,否则直接从父亲转移。
对于正确性我觉得随便手玩一下就懂了
那么我们学会了新知识!!!
虽然只是能看懂自己根本写不出来

#include<cstdio>#include<cstring>#include<utility>#include<algorithm>#include<iostream>#include<queue>#include<stack>#include<cmath>#include<cstdlib>#include<ctime>using namespace std;inline int read(){    char ch='*';    int f=1;    while(!isdigit(ch=getchar())) if(ch=='-') f=-1;    int num=ch-'0';    while(isdigit(ch=getchar())) num=num*10+ch-'0';    return num*f;}typedef long long ll;const int maxn = 100005;ll c[maxn];int a[maxn],f[maxn],n,m,op,l,r,t;int find(int x){return x==f[x]? x:f[x]=find(f[x]);}inline void add(int x ,int num) {while(x<=n) c[x]+=num,x+=x&-x;}inline ll sum(int x){ll s = 0;while(x) s+=c[x],x-=x&-x;return s;}int main(){    n=read();    for(register int i=1;i<=n;i++) f[i]=i,a[i]=read(),add(i,a[i]);    m=read();f[n+1]=n+1;    for(register int i=1;i<=m;i++)    {        op=read();l=read();r=read();        if(op==1){            printf("%lld\n",(sum(r)-sum(l-1)));        }         else for(int j=l;j<=r;add(j,(t=(int)sqrt(a[j]))-a[j]),a[j]=t,        f[j]=(a[j]<=1)?j+1:j,j=(find(j)==j?j+1:f[j]));    }    return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 Ⅵvo手机声音小怎么办 小米手机预约错了怎么办 小米note二手没解锁怎么办 艾灸后脸色越黑怎么办 淘宝软件类目不能上架宝贝怎么办 ae中没有mpg格式怎么办 淘宝小二处理不公怎么办 遇到卖保险的人怎么办 租房合同没理家电清单怎么办 普雪油烟机坏了怎么办 我累了 真的累了怎么办 u盘15g变成4g了怎么办 属兔的买了东户怎么办 玩时时彩输了2万怎么办 胸变的又软又小怎么办 u盘16g变成4g了怎么办 1岁宝宝吃了就吐怎么办 脚崴了肿了很痛怎么办 九格拼图5在9那怎么办 4s锁屏密码忘了怎么办 6p触屏偶尔乱跳怎么办 新办劳务公司的劳务资质怎么办 汽车没电了打不着火怎么办 吃凉的甜的牙疼怎么办 学车对点对不上怎么办 发现老公有外遇最明智的怎么办 想开个童装店但是没经验怎么办 母乳不够吃宝宝又不喝奶粉怎么办 掉头发很厉害怎么办有什么偏方 红米2a刷死机了怎么办 公司退市我们买的股票怎么办 黑魂3把npc杀了怎么办 摔倒了膝盖摔肿了又痛怎么办 厕所堵了怎么办疏通马桶有妙招 月经不来怎么办如何让它快点来 苹果手机进水了开不了机怎么办 苹果5s进水了怎么办修要多少钱 吃了过期3年的药怎么办 离婚后孩子的抚养费不给怎么办 小车钥匙丢了怎么办配要多少钱 一键启动的车钥匙丢了怎么办