首页 > 其他分享 >5.16

5.16

时间:2024-05-16 21:40:55浏览次数:22  
标签:return int mid dat logmul 5.16 inline

image

糖丸了,其实是在为自己闲话创造头图。

喜报,终于找回了原来闲话的感觉(?)

果然还是得自己说一大堆没用的话才好啊,不能只放图(

image

image

好可爱啊(

bzoj4399: 魔法少女LJJ

非常好题,使我调到死。

现在没调完,但是其实就是线段树合并,动态开点,并查集,普通线段树区间查询等等的集合,全放一起就完事了,(谨防题目诈骗)

先放个错的code

#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
namespace Watarai_Hinami
{
    inline void CLOSE(){std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);}
    inline void FIRE(){freopen(".in","r",stdin);freopen(".out","w",stdout);}
}
namespace Chongyun
{
    inline int read(){int s = 0,w = 1;char ch = getchar();while(ch<'0'||ch>'9'){ if(ch == '-') w = -1;ch = getchar();}while(ch>='0'&&ch<='9'){ s = s*10+ch-'0';ch = getchar();}return s*w;}
    inline void write(int x){char F[20];int tmp=x>0?x:-x,cnt=0;;if(x<0)putchar('-') ;while(tmp>0){F[cnt++]=tmp%10+'0';tmp/=10;}while(cnt>0)putchar(F[--cnt]);}
}
using namespace Watarai_Hinami;
using namespace Chongyun;
const int N=4e6+10;
const int INF=1e9+5;
struct TREE
{
    bool tag;
    int dat,l,r;
    double logmul;
}t[N*20];
int fa[N];
int rt[N];
int cnt;
inline int find_fa(int x)
{
    return x==fa[x]? x : fa[x]=find_fa(fa[x]);
}
inline void pushdown(int p)
{
    if(!t[p].tag) return;
    t[t[p].l].dat=t[t[p].r].dat=0,
    t[t[p].l].logmul=t[t[p].r].logmul=0;
    t[t[p].l].tag=t[t[p].r].tag=1,t[p].tag=0;
}
inline void update(int &p,int x,int a,double v,int l,int r)
{
    if(!p) p=++cnt;
    t[p].dat+=a,t[p].logmul+=a*v;
    if(l==r) return;
    pushdown(p);
    int mid=l+r>>1;
    if(mid>=x) update(t[p].l,x,l,mid,v,a);
    else update(t[p].r,x,mid+1,r,v,a);
}
inline void del(int p,int l,int r,int ll,int rr)
{
    if(!p) return;
    if(l<=ll && r>=rr)
    {  
        t[p].dat=t[p].logmul=0,t[p].tag=1;
        return;
    }
    pushdown(p);
    int mid=ll+rr>>1;
    if(l<=mid) del(t[p].l,l,r,ll,mid);
    if(mid>r) del(t[p].r,l,r,mid+1,r);
    t[p].dat=t[t[p].l].dat+t[t[p].r].dat;
    t[p].logmul=t[t[p].l].logmul+t[t[p].r].logmul;
}
inline int merge(int u,int v)
{
    if(!u || !v) return u+v;
    t[u].dat+=t[v].dat,t[u].logmul+=t[v].logmul;
    pushdown(u),pushdown(v);
    t[u].l=merge(t[u].l,t[v].l),t[u].r=merge(t[u].r,t[v].r);
    return u;
}
inline int q5(int p,int l,int r,int k)
{
    if(l==r) return l;
    pushdown(p);
    int mid=l+r>>1;
    if(k<=t[t[p].l].dat) return q5(t[p].l,l,mid,k);
    else return q5(t[p].r,mid+1,r,k-t[t[p].l].dat);
}
inline int q7(int p,int l,int r,int b,int k)
{
    if(!p) return 0;
    if(l<=b && r>=k)
        return t[p].dat;
    int mid=b+k>>1,ans=0;
    if(l<=mid) ans+=q7(t[p].l,l,r,b,mid);
    if(r>mid) ans+=q7(t[p].r,l,r,mid+1,k);
    return ans;
}
int x,a,b,q,k,ans;
char cc;
signed main()
{
    int n=read();
    for(int i=1;i<=n;++i)
    {
        int opt=read();a=read();
        if(opt==1)
        {
            update(rt[++cnt],a,1,log(a),1,INF);
            fa[cnt]=cnt;
        }
        if(opt==2)
        {
            b=read();
            if(find_fa(a)==find_fa(b)) continue;
            rt[find_fa(a)]=merge(rt[find_fa(a)],rt[find_fa(b)]);
            fa[find_fa(b)]=fa[find_fa(a)];
        }
        if(opt==3)
        {
            x=read();
            int t1=q7(rt[find_fa(a)],1,x,1,INF);
            del(rt[find_fa(a)],1,x,1,INF);
            update(rt[find_fa(a)],x,t1,log(x),1,INF);
        }
        if(opt==4)
        {
            x=read();
            int t1=q7(rt[find_fa(a)],x,INF,1,INF);
            del(rt[find_fa(a)],x,INF,1,INF);
            update(rt[find_fa(a)],x,t1,log(x),1,INF);
        }
        if(opt==5)
        {
            k=read();
            cout<<q5(rt[find_fa(a)],1,INF,k)<<endl;
        }
        if(opt==6)
        {
            b=read();
            if(t[rt[find_fa(a)]].logmul>t[rt[find_fa(b)]].logmul) puts("1");
            else puts("0");
        }
        if(opt==7) cout<<t[rt[find_fa(a)]].dat<<endl;
    }
}   

谁能教教哪错了

标签:return,int,mid,dat,logmul,5.16,inline
From: https://www.cnblogs.com/HSxh/p/18196702

相关文章

  • 一个小小的经验帖——建于5.16
    1.常变量和宏定义常量和宏定义的常数都是用来表示在程序执行过程中不会改变的值,但它们之间有几点区别:作用域和命名空间:常量:使用 const 关键字定义的常量具有作用域和命名空间,它们在定义它们的作用域内可见,且可以通过命名空间进行限定。宏定义的常数:使用 #define 定义的......
  • 第15.16.17章学习笔记
    实际上的问题II15.1大整数的运算所有公钥中的计算都是基于大整数运算。如我们曾提及的,恰当地实现大整数运算并不是一件容易的事情。大多数的处理例程总是或多或少地与平台相关。能够通过平台特性得到的有效率提升总是难以发挥实际作用。比如,多数CPU有一种带进位加法运算(add-wi......
  • dockerfile搭建activemq5.16.5
    dockerfile搭建activemq5.16.5搭建环境最小化的centos7.5家目录下完成如下操作环境构建脚本#!/bin/bash#authorbygwl###2023-02-10docker安装配置yuminstallwgetntpdatetelnetvimnet-toolsbash-completiongccgcc-c++make-ysed-i.bak's/SELINUX=enfor......
  • kali 5.16内核升级6.0.0 失败以后重新修改gurb引导菜单
    背景简介:自己拿测试机升级内核后,无法正常开机出现“unabletomountrootfsonunknown-block(0,0) kali”错误 #新内核不能正常启动尝试自己修复,并且恢复引导菜单,恢复开机默认启动,以下为研究记录 #首先几个重要目录/boot/grub/grub.cfg  #这个目录是开机引导选......
  • CENTOS 6.0 mini系统编译安装mysql 5.5.16过程
     下面的安装过程是www.centos.bz博主朱海茂的文章,在此一并谢过,看到你的这篇文章我编译成功了,谢谢。根据我的情况进行了简单的修改,请见谅。我的是centos6的系统,使用mini的安装模式,安装完成后的第一件事要配置好网络,这个过程就郁闷了我好几次,mini模式安装出来没有setup,网络只能......
  • 5.16 普通代码块
    publicclassHelloWorld{publicstaticvoidmain(String[]args){//可以在一个方法中进行一些结构拆分,以防止相同变量名称所带来的相互影响!{//普通代码块intx=10;//局部变量System.out.println("x="+x);......
  • 2023.5.16 第二阶段冲刺日报(三)
    今天是冲刺第三天,在昨天进行了开发后,在今日的站立会议中,我们进行了内容和问题的总结首先,我们明确了昨天的开发进度:1.找到了开发方向,即对webrtc技术的运用和尝试2.对安卓端采取了如下代码进行尝试importcom.github.sarxos.webcam.Webcam;importjava.awt.*;importjava.awt......
  • JSP_5.16_课堂笔记
    完整的可以与数据库连接的登录界面的代码login.jsp<%@pagelanguage="java"contentType="text/html;UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-8&......
  • 5.16每日总结
    搭建python系统在桌面建立一个工作夹,然后每个章节都单独建立一个Python文件进行实验。比如可以新建一个pytips的目录,然后在该目录下,每个章节创建一个tips文件夹,里面创建对应的 .py 文件。......
  • 5.16
      #include<bits/stdc++.h>#defineN10usingnamespacestd;main(){inti,j,a[N],t,count=0;printf("ÇëΪÊý×éÔªËظ³³õÖµ£º\n");for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=1;i<=N-1;i++)......