首页 > 其他分享 >2023 杭电多校 Day1

2023 杭电多校 Day1

时间:2023-07-18 23:12:03浏览次数:60  
标签:std 杭电多校 code min 线段 Day1 即可 2023 李超树

1009

签到, 队友哥切的, 没看

1002

\(f(x, 0/1/2)\) 表示当前点没有覆盖/覆盖/放置观察点 子树内最小代价, 简单转移即可。

f[x][1] = 1e18;
f[x][2] = a[x]; f[x][0] = 0;
for (int y : e[x]) if (y != fx) {
	dfs(y, x);
	static i64 g[3];
	g[0] = g[1] = g[2] = 1e18;
	g[1] = f[x][0] + f[y][2];
	g[1] = std :: min( {g[1], f[x][1] + f[y][2], f[x][1] + f[y][1] } );
	g[2] = std :: min( {g[2], f[x][2] + f[y][0], f[x][2] + f[y][1], f[x][2] + f[y][2]} );
	g[0] = std :: min( {g[0], f[x][0] + f[y][1]} );
	g[1] = std :: min( {g[1], f[x][0] + f[y][2]} );
	f[x][0] = g[0];
	f[x][1] = g[1];
	f[x][2] = g[2];
}

1010

这个一看就是 \(x\) 递增条件比较关键, 可以观察到当 \(a_i\) 第一次比 \(x\) 小以后, 以后的操作都是取反然后加上 \(x\) 。

我的做法就是开一个线段树维护原来的序列, 开一个线段树维护另外一个序列, 每次发现区间有值会第一次比 \(x\) 小就暴力递归下去把这个值删掉, 然后加入另外一个线段树。这样的话每次在两棵线段树上面区间取反, 区间加法。在第一个线段树上发现有要删掉的点就暴力递归, 复杂度一个 \(\log\) 。

code

1005

最小表示法即可。

比赛的时候学长写了个倍长再哈希的做法, 还被卡常数了(

真正的战犯往往没有写这题的代码

1006

\(10\) 组询问一看就是用来暴力的。

一眼 DP, 设 \(f_x\) 表示跳到 \(x\) 的最小代价, 转移就是

\[f_x = \min_{y \in subtree(x)} \{f_y + (d_y - d_x - L) ^ 2\} \]

经典斜率优化形式, 但是显然我事不会去写启发式合并平衡树维护的凸包的, 也不想去写什么定期重构之类的鬼东西, 点分治斜率优化也行, 但是还是懒得写, 所以选择使用李超树维护。

李超树合并即可。

李超树合并和普通线段树合并基本一致, 只是当两边存在的时候多了一个插入直线的操作, 但是事实上加入操作以后仍然是单 \(\log\) 的。

复杂度不记得怎么证明了, 反正跑得快。

code

1012

\[SG(x) = \text{xor}_{fa_y =x} (SG(y) + 1) \]

换根维护一下即可。

结论来自于 POJ3710

1003

区间 dp, 赛时没时间写完了。其实是赛时马上就要结束了没注意到等级会小于等于7懒得写了

注意到这个以后直接 \(dp(l, r, x, k)\) 表示 \((l, r)\) 区间,留下 \(x\) 等级 \(k\) 号卡片, 简单转移一下就做完了。

code

1001

队友哥写的, 可惜 G 了。

暴力枚举相交路径上每一个点计算相遇最短时间, 直接 exgcd 算最小解即可, 代码还没写, 睡觉觉捏

标签:std,杭电多校,code,min,线段,Day1,即可,2023,李超树
From: https://www.cnblogs.com/clover4/p/17564377.html

相关文章

  • 2023.7.18
    今天又学了一些ret2dlresolve的内容,中间因为一个地方刚开始理解错了ctfwiki上的意思,导致后面的想不明白什么意思,费了不少时间去看博客,翻书,问学长。虽然浪费了一些时间,但期间也学了不少其他的知识。明天还要实习一天去完成学校的实习作业,可能也学不了多少网安的东西,说明一下。......
  • 2023-07-18:给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空), 使得剩余元素的 和
    2023-07-18:给你一个正整数数组nums,请你移除最短子数组(可以为空),使得剩余元素的和能被p整除。不允许将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回-1。子数组定义为原数组中连续的一组元素。输入:nums=[3,1,4,2],p=6。输出:1。答......
  • 2023杭电多校第一场
    手还是有点生(随便写点东西.jpg1001实际上把链找出来之后就可以把树扔了(然后在某个位置上出现的点它的出现位置就可以表示为$k*dis+b$,$b$是位置对于$S$的每个数字,找它在$T$的位置,能拿到两个同余方程,形如$x=t_1(modn)$和$x=t_2(modm)$找最小正整数解即可。代码是学弟......
  • Camtasia 2023.0.0 Mac中文解锁版含camtasia2023激活密钥
    随着网络科技的迅速发展,所以对于电脑的使用率也就越来越高了!然而,也可能跟这有关系,目前各种类型的软件层出不穷,当然也就包括了电脑录屏软件。这给我们造成了一些困难,究竟哪一款适合自己呢?Camtasia2023是TechSmith公司出品的一款屏幕录像和编辑的软件,可轻松录制和分享高质量的截屏视......
  • 2023杭电多校第一场
    目录1002CityUpgrading1005CyclicallyIsomorphic1009Assertion比赛地址:传送门1002CityUpgrading思路:树形DP类似题:洛谷P2458保安站岗1005CyclicallyIsomorphic思路:最小表示法+判断最小表示法模板:洛谷P1368【模板】最小表示法1009Assertion鸽巢原理,不记......
  • 2023-07-18:给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空), 使得剩余元素的 和
    2023-07-18:给你一个正整数数组nums,请你移除最短子数组(可以为空),使得剩余元素的和能被p整除。不允许将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回-1。子数组定义为原数组中连续的一组元素。输入:nums=[3,1,4,2],p=6。输......
  • 2023.7.18打卡
    2023.7.18(1)、今天早上去练了车,练到中午才回来,记了单词,学了Java,看了《大道至简》,看了辩论赛。(2)、明天还要去练车,然后得回家一趟,我爷爷要我回去有点事,所以可能学不了Java,我打算带着《大道至简》一起回去,回家也能看看,记记单词,看一步电影。(3)、今天没遇到什么问题。......
  • stm32片上资源(2023/7/18)
     *NVIC &SysTick为片内资源 *NVIC:内核里面用于管理中断的设备,比如配置中断优先级这些东西 *SysTick:内核里面是一个定时器,主要用来给操作系统提供定时服务的。STM32可以加入操作系统的,比如FreeRTOS、UCOS等,如果用了这些操作系统,就需要用SysTick提供定时来进行任务切换功......
  • 2023.7.18 周二:Arrays类
    1importjava.sql.SQLOutput;2importjava.util.Arrays;3importjava.util.Scanner;4//Arrays类5publicclasstest{6publicstaticvoidmain(String[]args){7int[]a={5,4,6,8,9,1,7,2,3};8//打印数组元素9Arrays.t......
  • P6227 [BalticOI 2019 Day1] 山谷
    P6227[BalticOI2019Day1]山谷Description给一棵树,一个根,一些特殊补给点,一些询问。求解如下问题:断掉一条边\(u\tov\),这样以后你能否从给定的\(R_i\)走到根,若能输出escaped。不能到达根且不能到达任何一个特殊补给点输出oo。若不能到达根但可以到达特殊补给点输出边权和......