A. Divisors


 
大概平均下来每个数也就几千约数吧....,直接筛

B. Market


可以把时间离线下来,

考试没有想到将询问离线,用数组存算了算只能过200的点,拿了70

事实上背包后直接二分就好。。。

C. Dash Speed


好题,想到以前的一道题影子。

考场用单调队列多QJ了20分,然而没有想到并查集

线段树上分治?????

线段树上的节点表示在该权值在该区间内的边,每个节点开个vector即可

那么考虑区间查询和单点修改,

对于每个叶子节点,我们从上到下所经历的边其实就是可行的边

对于每个节点维护并查集,该联通块的最长直径和两个端点

在两个联通块相连时就是6种情况

即原直径或两联通块的端点所连的直径

但是对于每个点我们清空并查集会T,

那么我们采用按秩合并....

就是对每个节点编个排名,然后排名小的连向排名的节点,

然后我们开个栈,记录每次新连边后更改信息

void deld(int now){
while(top>now){
fa[st[top].to]=st[top].to;
del[st[top].fa]-=del[st[top].to];
len[st[top].fa]=st[top].val;
lx[st[top].fa]=st[top].dian1;
rx[st[top].fa]=st[top].dian2;
top--;
}
}

因为我们是将两联通块的fa节点相连,所以撤去后,儿子节点指向自己,父亲节点的del要减去

然后len,及直径两端点修改回原来的。

然后以为是栈,所以分治完后清空就好了。

因为倍增LCA超时了,所以改为ST求LCA,O(1)查询,跑的飞快

void DFS(int x,int father){
pre[++dep]=x;R[dep]=deep[x];fir[x]=dep;
for(int i=head[x];i;i=e[i].n){
int to=e[i].to;
if(to==father)continue;
deep[to]=deep[x]+1;
DFS(to,x);
pre[++dep]=x;R[dep]=deep[x];
}
}
void ST(){
logg[0]=-1;
for(int i=1;i<=dep;++i)logg[i]=logg[i>>1]+1;
for(int j=1;j<=dep;++j)faa[j][0]=j;
for(int j=1;(1<<j)<=dep;++j){
for(int i=1;i+(1<<j)-1<=dep;++i){
int x=faa[i][j-1];int y=faa[i+(1<<(j-1))][j-1];
if(R[x]<R[y])faa[i][j]=x;
else faa[i][j]=y;
}
}
}

每个节点遍历时添进pre数组里,回溯时也要添R数组记录深度,fir记录每个值的最小出现位置

倍增找两节点中深度最小的节点,注意现在节点是pre的序列节点

查询找fir[x],fir[y]这段区间的最小深度对应的节点

csp-s模拟测试58「Divisors」·「Market」·「Dash Speed」的更多相关文章

  1. [考试反思]1003csp-s模拟测试58:沉淀

    稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...

  2. [CSP-S模拟测试58]题解

    以后题解还是单独放吧. A.Divisors 根号筛求所有数的因子,扫一遍去重统计即可. #include<cstdio> #include<iostream> #includ ...

  3. NOIP模拟测试19「count·dinner·chess」

    反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...

  4. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  5. csp-s模拟测试94

    csp-s模拟测试94 一场简单题,打爆了.$T1$脑抽分解质因数准备分子分母消,想了半天发现$jb$互质直接上天,果断码了高精滚蛋.$T2$无脑手玩大样例,突然灵光一闪想到映射到前$K$大小的区间, ...

  6. 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  7. 「 从0到1学习微服务SpringCloud 」03 Eureka的自我保护机制

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 Eureka的高可用需要 ...

  8. Android单元测试与模拟测试详解

    测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...

  9. [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)

    目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...

随机推荐

  1. FPS游戏方框透视基本原理

    计算机图形学基础 计算机图形学最基础的目标就是把建模时构建好的3D物体显示在2D屏幕上,这就涉及到物体在不同坐标系中坐标的转换.(物体/建模坐标系 ---------> 屏幕坐标系) 坐标系 在 ...

  2. MySQL连接本地服务器

    1.打开"控制面板" 2.搜索"管理工具",并点击第一个"管理工具" 3.双击"服务" 4.找到"MySQL& ...

  3. Qt事件与常用事件处理、过滤

    转载: https://blog.csdn.net/apollon_krj/article/category/6939539 https://blog.csdn.net/qq_41072190/art ...

  4. Linux_磁盘管理理论概述

    一.磁盘阵列 1.什么是磁盘阵列? 1️⃣:磁盘整列就是将多块独立的磁盘组合到一起,形成容量大的磁盘组. 2️⃣:将相同的数据存放到不多个的磁盘的不同位置 2.RAID0 1️⃣:RAID0是磁盘整列 ...

  5. Linux 操作系统(一)命令&用户&权限

    以下实例均在Centos7下验证 Centos7 查看命令帮助 man xxx 常用命令 ls / cd - #切到上次目录 cd #回家 cat cat f1 f2 cat f1 f2>f3 ...

  6. SSM整合(ForestBlog为例)

    SSM整合(ForestBlog为例) 原版本github地址 :https://github.com/saysky/ForestBlog 文中版本地址:https://github.com/Yans ...

  7. 解决SecureCRTPortable和SecureFXPortable的中文乱码问题

    我们使用客户端连接Linux服务器时会出现中文乱码的问题,解决方法如下: 一.修改SecureCRTPortable的相关配置 步骤一:[选项]->[全局选项] 步骤二:[常规]->[默认 ...

  8. 优秀电路资料--- IOT方案

    完整的IOT方案 http://www.cirmall.com/circuit/4117/%E3%80%90%E5%BC%80%E6%BA%90%E3%80%91%E5%AE%8C%E6%95%B4% ...

  9. GO汇编-函数

    GO汇编-函数 终于到函数了!因为Go汇编语言中,可以也建议通过Go语言来定义全局变量,那么剩下的也就是函数了.只有掌握了汇编函数的基本用法,才能真正算是Go汇编语言入门.本章将简单讨论Go汇编中函数 ...

  10. Python+Selenium - 窗口切换

    当有新窗口出现时,并要在新窗口操作,步骤: 1.产生新窗口 2.获取所有窗口的句柄:driver.window_handles 3.切换函数:driver.switch_to.window(新窗口句柄 ...