2024.7.2

2024.7.2

T1

题面

总共 n 个数与 m 个限制,第 i 个限制给定 ki 个数,表示这些数两两不能分为一组,问最少可以分为几组。

1kn105,1m4

题解

把每个人的参赛情况用一个 [0,15] 中的整数 s 表示,再按照 popcount(s) 从大到小贪心凑即可。(求证)复杂度 O(24m+nm)

方法

  • 贪心

T2

题面

给定一棵 n 个点的树和整数 k,边有边权。
定义一个树上连通块的权值为其中边权之和,你需要求满足「至多包含一个度数 >k 的点」的树上连通块的权值最大值。
注意,条件中的度数指连通块中的度数,而非原树中的度数。

1n2×105,0k<n

题解

dpx,0/1 表示以 x 为根的子树中 没有/有 度数 >k 的点,注意向上转移应该算上与父亲的边,与字数内答案不完全一样,转移即可

复杂度 O(n)

方法

  • 树形 DP

T3

题面

称一个正整数对 (a,b)合法,当且仅当存在正整数 kk 组正整数对 (hi,wi),使得

  • i=1khiwi=a

  • i=1khi+wi=b

给定 n,m,求满足 a[1,n],b[1,m] 的正整数对中有多少是合法的。

1n,m2×105

题解

这里是 c,s6×10349 分做法

dpa,b 表示 (a,b) 是否合法,则

dpa,b=h1,w1,hwa,h+wbdpahw,bwh

可以 bitset 优化,这是 18 分的。

很难不借助打表注意到,\existw\N,a[1,n],b[w,2a],(a,b)

利用Excel 可得, w2.6n,打表可得当 n6×103w 可取 200

于是只需要存储小于 w 的数据时间变为 O(w2n32)=O(n2)

可以过 49 分数据

正解:

方法

  • 打表

    这种连数竞选手都不一定能证明的结论,不用计算机辅助证明还能用什么。

T4

题面

对于一个元素互不相同的序列 a1,a2,,an,定义一次合法的操作为:

  • 选择一个 使得 i[2,n1] 使得 ai1<ai<ai+1 ,将 ai+1 移动到 ai1 之前。

我们定义一个序列是合法的,当且仅当它能够由一个严格单调上升的序列通过有限多次操作得到。

给定排列 p1n。有 q 次修改,每次修改形如交换 pxpy 的值。你需要在每次修改后,回答最小的正整数 k,满足 pkn 为一个合法的序列。

2n105,1q105,1x,yn,xy,pn

题解

考虑从一个严格递增序列开始操作的过程,发现操作过程中每个数右侧小于它的数的个数始终为偶数,并且显然任意满足这个条件的序列都合法,所以这个条件是充要的。

便有了 O(n2) 做法

考虑用分块维护这个信息。设 i 右侧有 ri<pi 的数。假设交换 ,那么 x,y 所在的块可以暴力重构;对于中间的块,影响是一个值域区间内的 r±1

于是可以想到每个块内部先排序,然后维护 r 的差分。这样的话发现需要对中间每个块做 lower_bound ,而块内是可以线性重构的。直接做时间复杂度O(nnlogn)为 ,已经足以通过。

方法

  • 模拟操作过程

作者:lupengheyyds

出处:https://www.cnblogs.com/lupengheyyds/p/18498791

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   lupengheyyds  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示