1111 模拟赛总结

赛时安排

7:50~8:00 看题目
8:00~8:20 推了推T1数学题的特殊样例的性质,当 a = 2 , b = 3 a=2,b=3 a=2,b=3时,打表能发现,凑成1需要 3 − 2 3-2 32两步,然后2和3各需要一步,接着4,5,6需要两步,7,8,9需要三步,可以推出,每三个数字为一组,然后答案就是 ( n % 3 ) ? n / 3 + 1 : n / 3 (n\%3)?n/3+1:n/3 (n%3)?n/3+1:n/3考试时候忘了判断是否整除三的情况了…丢了10分。然后还有 a = 1 a=1 a=1的情况,先用b来凑n,然后对于剩下的部分判断全部用1凑,还是先用1凑成b再减一个b代价少。
8:20~8:55 然后看了看T2,发现第一档的70分是个 O ( n 3 ) O(n^3) O(n3)的DP,然后写了一下。测完之后爆零了,发现…它的答案比我设置的初值都大…然后好像还因为数组是数据上限,每次memset之后还T掉了…然后70分没了
9:00~9:50 看了看T3,第一档十分想了个 O ( n 2 l o g ) O(n^2log) O(n2log)的方法,每一次求倍增求LCA,然后算答案。
9:50~10:30 接着想了想T2的正解,然后按DP的方法来想。想着再多开一维判断这一个地方是否被选过,但是这样来写DP的话最后答案并不是想的那样来输出…然后就卡住了。
10:30~12:00 T4,看了眼…发现还不如去磕一下T1…然后死磕T1…
12:00~12:10 交卷

赛后总结

T1

根据题目中的条件,很显然能够得到一个式子 a x + b y = c ax+by=c ax+by=c,已知 a , b , c a,b,c a,b,c,来求得 ∣ x ∣ + ∣ y ∣ |x|+|y| x+y的最小值。我们可以看出这就是拓展欧几里得。因此,我们可以通过拓展欧几里得先求出一个特解,然后再根据通式来求得最优解。

T2

这道题的正解是DP然后再加上分治,然鹅,据说这道题是把之前的一道背包改了一下删掉了个条件,为了让这道题要加上分治的优化,用贪心就能过掉了…只需要按攻击和抵挡之间的代价差从大到小的顺序排序,然后前面的都用来攻击就过了。

T3

这道题的题解思路是用一个单调栈来维护,但是用dsu on tree的话也可以过去。做法就是把每个点按他在区间的位置再排序然后dfs,接着按dsu的方法来做,每一个节点存他这个位置能够以它为LCA的区间的个数,然后重儿子直接继承答案,轻儿子就与前面的区间合并,用并查集来维护,最后把每个节点上的答案累加一下就好了。

T4

To be continued…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值