旧题新做:从idy的视角看数据结构

  “今天你不写总结……!!!”

  额……

  还是讲我的吧。这些考试都是idy出的题。

20170121:DFS序、 ST表、线段树练习

  这是第一次考数据结构。

  Problem 1. setsum 1 second
    给你一个长度为N 的整数序列,支持两种操作:
    • modity l r val 将区间[l,r] 中的所有数修改为val
    • query l r 询问区间[l,r] 所有数的和

  分析:最简单的线段树,区间更改区间求和。但注意是更改,不是添改,sum与flag需同时覆盖。

  Problem 2. subtree 1 second
    给出一棵N 个点的有根树(以1 为根),每个点有点权,要求支持:
    • modify u x 把节点u 的点权加x
    • query u 询问u 代表的子树的点权和

  分析:DFS序,单点修改区间求和

  Problem 3. matgcd 1 second
    给出一个N M 的正整数矩阵,再给出Q 个询问:
    • query x1 y1 x2 y2:询问(x1,y1)-(x2,y2) 这个子矩形的最大公约数。

  分析:idy所说的“正解”,我现在依旧很敬畏。树套树,外面按行,行有ls,rs但也有一棵按列的树。合并时,ls的被套树与rs的被套树相合并。查询时,若行已卡入,则进入其按列树进行统计。此题无修改,若有修改,则标记需要好好讲究。但此题就是无修改,故可用ST表水过去。代码实现很暴力。

20170122:LCA 值域线段树 加 复习

  基本在树上。

  Problem 1. distance 1 second
    小庆住在一个很特别的国度里,它有N 个城市,并且只建了N -1 条双向路,但神奇的是任意两个城市都可以通过这些路连接起来。小庆最近在研究寒假的旅游计划,有时她想快速地知道两个城市之间的距离,于是找你来帮帮解决。

  分析:ST表倍增经典做法,存anc与cost。

  Problem 2. redpacket 1 second
    承上题)小漫是小庆那个国家的国王,她住在1 号城市,u 号城市如果到1 必定经过v 号城市,我们则称v 号城市管辖u 号城市(v 号城市也管辖自己)。过年了,小漫想给国家的一些城市发红包,每次她会给u 号城市管辖的每个城市发放w 的红包,有时,她也想知道某个城市或被某个城市管辖的城市一共得了多少红包。如下:
    • give u w :表示将u 号城市管辖的每个城市发w 的红包。
    • single u :表示询问u 号城市得了多少红包。
    • all u :表示询问u 号城市管辖的城市一共得了多少红包。

  分析:DFS序,简单处理。

  Problem 3. kth 1 second
    小敏有个可重集S,一开始就包含一些整数,现在有三种操作需要你执行:
    • add x 将整数数x 加到集合中
    • del x 如果集合中有整数x,则删除一个x,否则忽略本操作。
    • query k 询问这个集合中第k 小的整数数是多少

  分析:值域线段树,若不提前给出上下界,须读入离散化。

20170123:最SXBK的一次练习

  额额额额额。

  Problem 1. dcplca 1 second
    这是一道练习题,要求你们用链剖来写lca,熟悉链剖的过程。(以节点1 为根)

  分析:神奇的idy为了防止你用倍增,一定会卡O(nlog n)的内存。但是,链剖确实不难写。DFS1:siz,son,fat,dep。DFS2:top,in,out,seq。DFS2中的后三者是为了方便用线段树DFS序,一条重链上in值是连续的。

  Problem 2. treekth 1 second
    给你棵带点权树,一些询问:
    • query u v 询问节点u 和v 之间的简单路径上的点权的中位数1。

  分析:这道题才是真正SXBK的那道题。先用树链剖分(后面求LCA),再DFS建出主席树(存链值),然后用差分求出中位数。但是,就是调不出来!!!(笔者现在已经调了出来……)

  Problem 3. full 1 second
    我们来个完全版如何?
    给你棵带点权的树(以1 为根),要你完成一些操作。
    • msub u x:将u 代表的子树的点权整体加x
    • mpth u v x:将u 到v 的简单路径的点权整体加x
    • qsub u:询问子树u 的点权和
    • qpth u v:询问路径u 到v 的点权和

  分析:链剖与DFS序共存。

20170318:数据结构第1套模拟题

  是否变难了?

  Problem 1. rotinv 2 seconds 256 MB
    如果你有一个长度为n 的序列:
      a1,a2,a3,……,an
    那么它的一个逆序对是一个二元组:< i, j > 满足i < j 且ai > aj,其中i, j ∈ [1, n]。
    我们称一个序列所包含的逆序对的个数为这个序列的逆序对数。
    那么问题来了:
    我给出一个长度为n 的序列,需要你计算:

        a1,a2,a3,……,an-1,an

      a2,a3,a4,……,an,a1

              ……

        an,a1,a2,……,an-2,an-1
    这n 个序列的逆序对之和。

  分析:方法很多,但大致相似。转化为数学公式,然后用树状数组快速解决。对于这种问题的极困难版,可见BZOJ 图腾。

  Problem 2. rise 2 seconds 256 MB
    你有一堆柱子,它们竖直地并排摆放在桌子上,它们的高度分别是:

h1,h2,h3,……,hn

    你从前往后看,能够看见的柱子个数为这个柱子序列的“可见度”(能够看见柱子i 当且仅当hj < hi & j < i)。
    现在给你一个长度为n 的序列,还有m 个询问,每次询问某个区间[l,r] 的柱子单独拿出来后,其可见度是多大。

  分析:当时并没有看懂题解。后来做了一道BZOJ 楼房重建,再一看便恍然大悟。与那道题相似,但需要多存储一些东西。因为没有修改,可以充分使用此题的性质。但丁神在统计的时候,把所有线段先放入了栈,再集中处理。看似更加麻烦,但其实更加朴素,更加灵活。还有,当时很迷,于是写了个暴力(链表)水了过去。

  Problem 3. seqmod 2 seconds 256 MB
    给你一棵无根树,边有边权,且是[0,9] 之间的整数,给你m 个询问,每次询问两个点u, v 之间的路径的边的边权顺次连接起来后构成的那个数字取模于31。

  分析:题面十分易懂。链剖也很好想,但是,就像其他很多的DS题一样,你以为自己已经明白了,但还是有太多细节没有想到。为了方便合并,idy想到用struct来做到方便的合并。找路径的方式也有不同,谁深了就跳谁,最后到同一条链上进行最后的合并。每一个节点也存了2个方向,但怎样区分?很简单,按深度。

20170404:practice before 省选

  啊啊啊啊啊!

  Problem 1. setmod 2 seconds 256 MB
    给你一个序列:a1,a2,a3,……, an,有m 个操作,操作如下:
    • modify l r x  将区间[l,r] 中的每个数修改为x
    • change l r x 将区间[l,r] 中的每个数加上x
    • query l r 询问区间[l,r] 中的和

  分析:我在处理时,用了一种叫做kill的标记。因为“修改为”==“清场”+“加上”。但是,这似乎有点不负责任。若+=与=标记同时作用,当然很好想。若只用一个,需用type。

  int type; // type==1 change += 改改改delta 原delta或无则++ 原value则value++ 
  dnt delta, value; // type==2 modify = 改value

  Problem 2. area  2 seconds 256 MB
    给出n 个矩形,求它们的面积并.
    更准确一点,每个矩形将给出它的左上角和右下角的位置:x1,y1, x2, y2
    这四个数都是整数且满足x1<=x2,y1<=y2.
    我们需要你求:
      area =|{ f(x, y) ∈ Z × Z | ∃ a rect. s. t. x1<=x2 and y1<=y2 }|

  分析:扫描线,标记永久化。时候不早了,明天再来。

  Problem 3. intkth 3 seconds 512 MB
    我看好你哟。
    给你一个长度为n 的序列,有m 个操作:
    • modify u x 将第u 个数修改为x
    • query l r k 询问区间[l,r] 中第k 小的数

  分析:此题很有趣。树状数组套线段树,很好实现。

 

转载于:https://www.cnblogs.com/Doggu/p/idy_DS.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用的 Java 工具类之 Apache 全家桶使用

平常我们在日常的开发中会一些通用的功能封装成一些工具类&#xff0c;以便之后复用。但是有些常用功能&#xff0c;业界已经存在&#xff0c;我们无需造轮子&#xff0c;只需直接使用或借用它们的 Api &#xff0c;构建我们的自己项目中工具类。这篇首先介绍平常用到的 Apache…

.NET MAUI实战 MessagingCenter

1.概要在.NET MAUI提供了消息机制&#xff0c;该机制为订阅/发布模式。发布-订阅模式是一种消息传递模式&#xff0c;在此模式下&#xff0c;发布者可在无需知道任何接收方&#xff08;称为订阅方&#xff09;的情况下发送消息。同样&#xff0c;订阅方可在不了解任何发布方的情…

elasticsearch 5.1 问题 ubuntu

1、can not run elasticsearch as root 切换到非root用户 2、main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register") 改变elasticsearch文件夹所有者到当前用…

洛谷——P1033 自由落体

https://www.luogu.org/problem/show?pid1033#sub 题目描述 在高为 H 的天花板上有 n 个小球&#xff0c;体积不计&#xff0c;位置分别为 0&#xff0c;1&#xff0c;2&#xff0c;…&#xff0e;n-1。在地面上有一个小车&#xff08;长为 L&#xff0c;高为 K&#xff0c;距…

java 接口防刷_java轻量级接口限流/防刷插件

简介call-limit提供接口限流、防刷的功能&#xff0c;插件基于spring开发&#xff0c;在应用应用的任何一个逻辑层皆可使用(web、service、dao)&#xff0c;插件支持单机应用下的限流和分布式应用的限流(分布式应用限流需要依赖redis)&#xff0c;在简单业务场景下插件可为大家…

【leetcode】521. Longest Uncommon Subsequence I

题目如下&#xff1a; 解题思路&#xff1a;本题有点意思。首先如果输入的两个字符串都为空&#xff0c;那么结果是-1&#xff1b;如果两个字符串长度不一样&#xff0c;那么结果是较长的字符串的长度&#xff0c;因为较长的字符串肯定是自身的子序列&#xff0c;但一定不是较短…

【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三倍?...

【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三倍&#xff1f;独立观察员 2022 年 9 月 4 日在编写 “Wifi 固定器 [1]” 程序时&#xff0c;按如下方式使用了定时器&#xff1a;// 声明&#xff1b; private Timer _Timer new Timer() { …

JS魔法堂:判断节点位置关系

一、前言                           在polyfill querySelectorAll 和写弹出窗时都需要判断两个节点间的位置关系&#xff0c;通过jQuery我们可以轻松搞定&#xff0c;但原生JS呢&#xff1f;下面我将整理各种判断方法&#xff0c;以供日后查阅。 二…

ChartCtrl源码剖析之——CChartAxis类

CChartAxis类用来绘制波形控件的坐标轴&#xff0c;这个源码相对较复杂&#xff0c;当初阅读的时候耗费了不少精力来理解源码中的一些实现细节。 CChartAxis类的头文件。 #if !defined(AFX_CHARTAXIS_H__063D695C_43CF_4A46_8AA0_C7E00268E0D3__INCLUDED_) #define AFX_CHARTA…

java如何输出线程的标识符_Java多线程面试题

1、在Java中什么是进程&#xff0c;什么是线程进程&#xff1a;进程是程序执行的一个实例&#xff0c;进程是线程的容器。程序是指令、数据及其组织形式的描述&#xff0c;进程是程序的实体。线程&#xff1a;有时被称为轻量级进程(Lightweight Process&#xff0c;LWP)&#x…

基于.net开发的自助餐饮系统

本文系 EMQ&Intel 联合举办的首届“中国物联网数据基础设施最佳案例评选大赛“个人开发者赛道一等奖作品。项目简介智能餐饮自助结算系统是一个由称重系统、显示屏、自助扫码盒和 Intel CPU 组成的智能自助结算终端&#xff0c;将装有菜品的托盘放到秤盘上结算&#xff0c;…

cacti 被监控机器snmp 配置

被监控服务器 需要查看网卡流量&#xff0c; 磁盘空间等信息。修改如下。vi /etc/snmp/snmpd.conf1、找到com2sec notConfigUser default public 改为&#xff1a;com2sec notConfigUser 192.168.1.1&#xff08;改成监控服务器的ip&#xff09; public 2、找到…

IntentService用法

IntentService 用完即走 IntentService&#xff0c;可以看做是Service和HandlerThread的结合体&#xff0c;在完成了使命之后会自动停止&#xff0c;适合需要在工作线程处理UI无关任务的场景。 IntentService 是继承自 Service 并处理异步请求的一个类&#xff0c;在 IntentSer…

TeaPot 用webgl画茶壶(3) 环境纹理和skybox

1 <html>2 <head>3 <title>TeaPolt</title>4 </head>5 6 <body οnlοad"main()">7 <canvas id"viewPort" width"600" height"600">8 This b…

java打包维护_java打包详解

from yahh2008的blog: http://www.matrix.org.cn/blog/yahh2008/兄弟&#xff0c;对java着迷吗&#xff0c;或者是为了自己的生计&#xff0c;不论怎样都欢迎你进入精彩java世界&#xff0c;welcome&#xff01;可能你刚刚对每个人说&#xff1a;Hello World&#xff01;也或者…

Linux高级文本处理之sed(三)

sed高级命令sed允许将多行内容读取到模式空间&#xff0c;这样你就可以匹配跨越多行的内容。本篇笔记主要介绍这些命令&#xff0c;它们能够创建多行模式空间并且处理之。其中&#xff0c;N/D/P这三个多行命令分别对应于小写的n/d/p命令&#xff0c;后者我们在上一篇已经介绍。…

如何在 C# 程序中注入恶意 DLL ?

一&#xff1a;背景 前段时间在训练营上课的时候就有朋友提到一个问题&#xff0c;为什么 Windbg 附加到 C# 程序后&#xff0c;程序就处于中断状态了&#xff1f;它到底是如何实现的&#xff1f;其实简而言之就是线程的远程注入&#xff0c;这一篇就展开说一下。二&#xff1a…

练习题|网络编程-socket开发

原文&#xff1a;https://www.cnblogs.com/shengyang17/p/8822745.html 1、什么是C/S架构&#xff1f; C指的是client&#xff08;客户端软件&#xff09;&#xff0c;S指的是Server&#xff08;服务端软件&#xff09;&#xff0c;C/S架构的软件&#xff0c;实现服务端软件与客…

okhttputils java_Java OkHttpUtils.post方法代码示例

import com.zhy.http.okhttp.OkHttpUtils; //导入方法依赖的package包/类Overridepublic void performRequestAsync(AyoRequest request, BaseResponseDispatcher responseHandler, BaseHttpCallback callback) {String url request.url;//基于OkHttpUtils辅助类//1 method决定…

近日安排

先把二分题做了&#xff0c;二分哪个小白书学了。 做图论题&#xff0c;4道转载于:https://www.cnblogs.com/no-regrets/p/7215366.html