首页 > 其他分享 >学考复习

学考复习

时间:2024-11-05 21:09:01浏览次数:1  
标签:lazy 复习 sum mid id 学考 self def

学考复习……(?)

真的是复习吗

难道不是啥也没学过吗

不定期更新

感觉打一些比较熟的东西更容易上手一点

码的怎么现在学啥语言上来先学怎么封装

并查集

洛谷板子

n,m=map(int,input().split())
class dsu:
    def __init__(self,n):
        self.fa=[i for i in range(n+1)]
    def find(self,id):
        if self.fa[id]==id:
            return id
        else:
            self.fa[id]=self.find(self.fa[id])
            return self.fa[id]
    def join(self,x,y):
        fx=self.find(x)
        fy=self.find(y)
        if fx!=fy:
            self.fa[fx]=fy
    def samefa(self,x,y):
        fx=self.find(x)
        fy=self.find(y)
        return fx==fy
d=dsu(n)
for i in range(m):
    op,x,y=map(int,input().split())
    if op==1:
        d.join(x,y)
    else:
        print("Y") if d.samefa(x,y) else print("N")

线段树

洛谷板子

你说得对,但是 Python 线段树常数太大是怎么回事呢,Python 线段树常数太大,其实就是 Python 线段树过不了洛谷模板题,对此小编也感到非常奇怪,但是事实就是这样

n,m=map(int,input().split())
a=[int(i) for i in input().split()]
def midof(l,r):
    return ((l)+(r))//2
class segtree:
    def __init__(self,n):
        self.sum=[0 for i in range(n+1)]
        self.lazy=[0 for i in range(n+1)]
    def build(self,id,l,r):
        if l==r:
            self.sum[id]=a[l-1]
            return
        mid=midof(l,r)
        self.build(id*2,l,mid)
        self.build(id*2+1,mid+1,r)
        self.sum[id]=self.sum[id*2]+self.sum[id*2+1]
    def pushdown(self,id,l,r):
        if self.lazy[id]!=0:
            mid=midof(l,r)
            self.sum[id*2]+=(mid-l+1)*self.lazy[id]
            self.lazy[id*2]+=self.lazy[id]
            self.sum[id*2+1]+=(r-(mid+1)+1)*self.lazy[id]
            self.lazy[id*2+1]+=self.lazy[id]
            self.lazy[id]=0
    def change(self,id,l,r,L,R,val):
        if L<=l and r<=R:
            self.sum[id]+=(r-l+1)*val
            self.lazy[id]+=val
            return
        mid=midof(l,r)
        self.pushdown(id,l,r)
        if R<=mid:
            self.change(id*2,l,mid,L,R,val)
        elif L>=mid+1:
            self.change(id*2+1,mid+1,r,L,R,val)
        else:
            self.change(id*2,l,mid,L,mid,val)
            self.change(id*2+1,mid+1,r,mid+1,R,val)
        self.sum[id]=self.sum[id*2]+self.sum[id*2+1]
    def ask(self,id,l,r,L,R):
        if L<=l and r<=R:
            return self.sum[id]
        self.pushdown(id,l,r)
        mid=midof(l,r)
        if R<=mid:
            return self.ask(id*2,l,mid,L,R)
        elif L>=mid+1:
            return self.ask(id*2+1,mid+1,r,L,R)
        return self.ask(id*2,l,mid,L,mid)+self.ask(id*2+1,mid+1,r,mid+1,R)
t=segtree(n*4)
t.build(1,1,n)
for i in range(m):
    op=[int(i) for i in input().split()]
    if op[0]==1:
        t.change(1,1,n,op[1],op[2],op[3])
    else:
        print(t.ask(1,1,n,op[1],op[2]))

标签:lazy,复习,sum,mid,id,学考,self,def
From: https://www.cnblogs.com/HaneDaCafe/p/18528857

相关文章

  • 数据结构期末复习绪论部分
    语雀链接:https://www.yuque.com/g/wushi-ls7km/ga9rkw/atvszq3vugrzblr0/collaborator/join?token=MY21l2k2LPLrQF8l&source=doc_collaborator#《数据结构期末复习绪论部分》......
  • C#期中复习
    C#期中测试重点复习//输入学生的学号,输出所在学院,年级,班级Console.WriteLine("请输入您的学号:");stringstudent_id=Console.ReadLine();intxy=int.Parse(student_id.Substring(4,2));intgrade=int.Parse(student_id.Substring(0,4));intcla=int.Parse(student_id......
  • Java复习29(PTA)
    人口统计分数20全屏浏览切换布局作者 孙晨霞单位 河北农业大学本题运行时要求键盘输入10个人员的信息(每一个人信息包括:姓名,性别,年龄,民族),要求同学实现一个函数,统计民族是“汉族”的人数。函数接口定义:publicstaticintnumofHan(Stringdata[])其中data[]是......
  • 挑战Java面试题复习第5天,无人扶我青云志
    挑战第5天java反射ListSetMap区别Object常用方法java反射定义:运行时动态获取类信息和调用方法的特性。应用场景:JDBC数据库连接。框架如Hibernate和Struts等。实现方式:通过四种方法获取Class对象:Class.forName(“类的路径”)类名.class对象名.getClass......
  • C语言复习总结超详细版(1)小白转身即变 有实例超级详细
    废话不多说直接开整注:本博文超级详细但是还是适合有C语言基础的观看 耗时很久,内容不会有问题但是 ⚠️字体晦涩望见谅引子第一个C语言程序#include<stdio.h>intmain(){printf("Hello,LJY!\n");return0;} main函数每个C语⾔程序不管有多少⾏代码......
  • juc复习(下篇)(10.31)
    juc复习(10.31)阻塞队列写入:如果队列满了,就必须阻塞等待读取:如果队列是空的,必须阻塞等待生产使用阻塞队列的情况多线程并发处理,线程池四组API方式抛出异常有返回值不抛出异常阻塞等待超时等待添加addofferputoffer(3个参数)移除removepolltakepoll(两个参数)检测队首元素e......
  • 上海市:中国历史第一、二册复习
    专题1:疆域变迁(参见地图册一、二册的p1)西周(地图册一p10)秦朝(地图册一p20)西汉(地图册一p26)-东汉(地图册一p28)三国(地图册一p34)西晋(地图册一p36)东晋(地图册一p36)隋朝(地图册二p4)唐朝(地图册二p6、p8)北宋(地图册二p16)南宋(地图册二p18、p22)......
  • 微积分甲II - 期末复习
    微积分(甲)II辅学:期末复习一、级数级数\(\suma_n\)收敛(发散)等价于数列\((\sum_{i=1}^na_i)\)收敛(发散)。1.1正项级数比较判别法:\(\suma_n\)收敛,\(b_n\leqa_n\),\(\sumb_n\)收敛;\(\suma_n\)发散,\(b_n\geqa_n\),\(\sumb_n\)发散。积分判别法:\(\int_1^{+\inft......
  • 队列与树 数据结构复习笔记
    2.3队列队列(Queue),它是一种运算受限的线性表,先进先出(FIFOFirstInFirstOut)队列是一种受限的线性结构受限之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作Python标准库中的queue模块提供了多种队列实现,包括普通队列、双端队列、优先队......
  • CF1249F Maximum Weight Subset 题解 / 长链剖分复习
    CF1249FMaximumWeightSubset题解题目大意给定一个\(n\)个节点的树,每个节点有点权\(a_i\)。从中选出若干节点,要求这些点两两之间距离大于给定常数\(k\),使得点权和最大。Solve给出一种线性做法。前置知识:长链剖分优化DP。考虑一个DP:设\(f(u,d)\)表示在\(u\)的子......