首页 > 其他分享 >「模拟赛」Solution Set

「模拟赛」Solution Set

时间:2023-11-14 22:23:38浏览次数:42  
标签:Set 黑点 text 可以 Solution 复杂度 mathcal 我们 模拟

\(\text{heart}\)

\(\text{Solution}\)

可以记 \(f(u)\) 为从 \(u\) 出发到某个点停止的方案数,\(f(u)\) 可以 \(O(n)\) 转移,显然复杂度为 \(O(n^2)\).
当前我们要转移 \(u\) 子树内,对于 \(v\in \text{subtree(u)}\) 我们记 \(g_v\) 为 \(\min\limits_{p_k>p_j}p_k\),其中 \(k\) 在 \(u\) 到 \(v\) 路径(不包含 \(u,v\))上的节点,仅当 \(p_u<g_v\) 且 \(p_u>p_v\) 时 \(v\) 可以对 \(u\) 贡献,我们可以用线段树维护 \(f(u)\),考虑线段树下标为 \(i\) 的位置维护 \(p_j=i\) 的 \(v_i=g_j\) 和 \(s_i=f(j)\),我们可以先用对子树进行线段树合并然后考虑修改和查询

  • 对于 \(k\in[1,p_i]\) 修改 \(v_k\leftarrow \min(v_k,p_i)\).

  • 查询 \(\sum_{k=1}^{p_i}[v_k>p_i]s_k\).

可以用 \(\text{Segment Tree Beats}\) 维护,复杂度 \(O(n\log n)\).

\(\text{「USACO23OPEN」Triples of Cows P}\)

\(\text{Link}\)

发现删点后连边操作是 \(O(n^2)\) 级别的,考虑建虚点来优化。

具体的,考虑我们将原树上点称为黑点,新建的虚点为白点,我们将边拆为一个点,我们将原树上的边 \((u_i,v_i)\) 变为 \((u_i,n+i),(v_i,n+i)\),由于 \(n\) 最后删去,我们可以以 \(n\) 为根。我们删点可以直接将所有儿子合并到父亲上,用并查集维护时间复杂度就是 \(O(n\log n)\) 的而且保证了图仍然是一棵树,原树 \(u,v\) 直接相连等价于黑点 \(u\) 和黑点 \(v\) 同时是某个白点的邻接点,我们用 \(\mathcal W\) 表示 白点集合,用 \(\mathcal B\) 表示 黑点集合。

考虑如何算贡献,考虑计算五元组 \((a,x,b,y,c)\),其中 \(a,b,c\in \mathcal B,x,y\in \mathcal W\),我们可以记录 \(f_u,g_u,h_u\) 为 \(u\) 的 \(1/2/3\) 级儿子数量。

  • \(x=y\),我们可以在 \(x\) 的邻接点中任选 \(3\) 个互不相同的点即可,贡献为

\[\sum_{u\in\mathcal W}(f_u-1)f_u(f_u+1) \]

  • \(x\not= y\),我们可以枚举 \(b\) 然后分为两种情况讨论

标签:Set,黑点,text,可以,Solution,复杂度,mathcal,我们,模拟
From: https://www.cnblogs.com/JIEGEHHHH/p/17813921.html

相关文章

  • 79th 2023/11/4 模拟赛总结57
    这次是多校集训赛题目难,一道题都不会T2有奇怪的小思路,但有时候算不出答案赛时是看完题后,先手玩了一会T1,发现没什么思路后,对T2起了兴趣然后就试图在用代数式去算最大值取值,然后发现为保证正确性,只能\(O(n^2)\)去打,还要防止取到负数于是先打了T1暴力,然后打T2,一开始没发现它正确......
  • swift怎么切换模拟器和预览?
    swiftui一般都是用预览视图查看效果,其实也是可以用模拟器的,出于某种数据的动态刷新测试,中途用模拟器来查看结果却不想怎么在底部控制台找不到打开预览视图的按钮。找了好几分钟,才突然发现,原来预览图的代码被编辑器自动注释了,重新打开注释即可......
  • Solution - Makoto and a Blackboard
    Link。朴素dp应该不用说了。放个用map的代码。intdfs(intn,intk){ if(!k)returnn; if(f[make_pair(n,k)])returnf[make_pair(n,k)]; inttot=0,ans=0; for(inti=1;i*i<=n;i++){ if(n%i)continue; ans=(ans+dfs(i,k-1))%M......
  • 公告 & Solution - 公路旅行
    以后应该会用Obsidian搭个博客,博客园可能会被弃用了。为了有点价值放个不知道什么东西上来。Link。不会T1!原来用到了神秘的倍增!但是我写了一个申必二分,最坏\(O(qn\logn)\),甚至不如暴力,我是......
  • Pset_AnnotationContourLine
    Pset_AnnotationContourLinePSET_TYPEDRIVENOVERRIDE / IfcAnnotation / ContourLine注释等高线:指定具有单个一致测量值的标准曲线的参数。: Définitiondel'IAI:paramètresspécifiquesàunecourbestandardquiaunevaleursimpleetcohérente.......
  • hci0 command 0xfc20 tx timeout(Realtek 8761B Chipset, Bluetooth 5.0)
    当前使用的Linux内核版本: 4.4.189插上USBBluetooth5.0Adapter后,dmesg显示如下log:[240.348480]usb3-1.2:newfull-speedUSBdevicenumber6usingehci-platform[240.437834]usb3-1.2:NewUSBdevicefound,idVendor=0bda,idProduct=8771[240.438541]us......
  • 231114校内模拟赛
    T1平凡原题链接首先,我们容易发现直接求\(A\)不是最小的子序列的排列的个数有些困难#include<bits/stdc++.h>#definemod998244353#defineN1000010#defineintlonglongusingnamespacestd;intn,k,a[N],t[N],vis[N],ans,all,pos;signedmain(){ freopen("ordina......
  • YCOJ734 [ 20231114 NOIP 模拟赛 T3 ] 二次函数
    题意给定\(n\)个形如\(f(x)=(x-m)^2+k\)的二次函数。\(1,m,k\)表示加入一个顶点位\((m,k)\)的二次函数。\(2,x,t\)表示删除所有\(f(x)\let\)的二次函数。求每次操作结束后还剩余几个二次函数。Sol注意到题中二次系数为\(1\),这就意味着每一个函......
  • 浅谈JVM Instruction Set (Opcode)
    浅谈JVMInstructionSet(Opcode)1.背景日常开发中,遇到一个潜藏bug的java代码,借此简单回顾一下JVMInstructionSet(Opcode)知识。问题demo代码如下:publicclassBugDemo{publicstaticvoidmain(String[]args){//模拟用户输入(具有不可预测性),假设......
  • 聊聊定时器 setTimeout 的时延问题
    全局的 setTimeout()  方法设置一个定时器,一旦定时器到期,就会执行一个函数或指定的代码片段,但是需要注意的是,setTimeout 并不是 ECMAScript 标准的一部分,不过几乎每一个JS运行时都支持了这个函数。定时器的使用比较简单,这里不再阐述,我们这篇文章主要聊下关于setTimeout有......