联合省选 & JSOI 2021 游记

提高组蒟蒻来被吊打啦。

Day -3

首次写点分树,AC得很艰难。

刚了几道 dp 神题,口胡了 B 卷。

Day -2

把一些不熟悉的板子打/复习了一遍,口胡了一场 Div.1+Div.2 CF(写了两题),补了洛谷省选课程期末考试的题并写了题解,改了动态 dp 的博客(几千人来看我的天哪)。

Day -1

做了几道题,复习了一些板子。

Day 0

复习了斜优与决策单调性优化 d p dp dp,还看了自己的许多博客并做了一些改动。

然后就是喜闻乐见的颓废时间。

Day 1

在这里插入图片描述
7 7 7 点被下床,吃了一点方便面就出发了。

南外在旭日中闪亮亮的。来的人似乎并不很多,我在四楼机房旁随便逛逛,并看了考场与考号。然后就是一波开幕雷击:

djq与我的距离只有2个单位!

好的,真不错,要被狠狠地压制一把了。

然后就去看几个基友熟人的座位号,没有在我旁边的。实际上 pmt 巨巨坐在我的对面,可是从考好上看不出来。

很快就可以进机房了。我狠狠地搂了 ZHR 一下,并互相加油鼓劲,然后就去了不同的机房。

把外套拖下,我就坐了下来。把快读写完了,对拍正准备写,突然发现自己坐错了位置 ⋯ \cdots 连忙把帮别人写的玩意儿删掉,然后自己连滚带爬地跑到了自己的座位上,完美地把自己的外套和水杯和食物丢在了那里。

接下来的情节必然是被冷风吹啦,不过这样也能保持神志清楚呢

题目正在上传的时候,我满脑子都是吃啥喝啥之类的问题,我总不能现在下位去拿自己东西被禁赛三年吧。

只好无奈地做题。


开题。

先把所有题目看了一遍,发现 T1 不难,T2 是一个前缀和的形式(明显是看错了),T3 是一个毒瘤图论题。我应该能做出 T1 吧(原来还是我高估自己了)。

旁边的老哥开始在纸上画,我也随着瞎画,结果自己画出来个“正解”。码了一小时,发现小,中样例都过去了,就大样例过不去。然后死活调不出来(已经过去了 1.5 h 1.5h 1.5h),回头看一眼题面,发现自己题面看错了

浪费了一个半小时的时间,真不错啊。我为什么不认真看题啊啊啊啊啊啊啊啊啊!

然后重新思考,又搞出来个“正解”。写了一半,发现又假掉了。然后又是痛苦的思考,在开始 2 h 2h 2h 的时候决定写一个 40 40 40 分的暴力。写了一半发现是 60 60 60 分的,于是打算写完这题之后去刚 T2 去。

写完之后一发过了三个样例,可是我却感觉一点也不爽。旁边的老哥显然已经切掉两题了,并在为第三题苦思冥想(感觉他在画 T3 的图);而我却只有一题的部分分。。。

开 T2,发现是个毒瘤构造题。这种题你觉得我能做得出来?于是盯着 m = 2 m=2 m=2 看了半天搞出来个做法,然后就写了,一发过了自己的样例。于是又想了想别的部分分,不大会的样子,就去码了个 T3 的第一档暴力。

只剩 1.5 h 1.5h 1.5h 了,我决定先去想 T2 的另几个部分分。想了一会儿,搞出来个 n ≤ 3 , m ≤ 3 n \le 3,m \le 3 n3,m3,写了一半发现假掉了(又开始了),十分自闭,但是本着骗分的思想硬写完了。

最后半小时,T1 我打了一个像随机化一样的玩意儿,结果过了所有样例。我自己也不大相信,想检验一下,但是我发现时间不多了,只有十分钟不到了。

加上文件操作,然后检查一波自己的文件名。最后还剩 3 3 3 分钟的时候,我趴在桌子上,突然老师一句话把我惊醒了——

你们把那个文件夹给压缩一下啊

然后就开始压缩,结果压缩错了,把 cpp 文件全删掉了。我手忙脚乱,立刻到回收站去把它们复原,然后比赛就结束了,我没有压缩文件夹

好在一个好心的老师来帮我把它给压缩了,提交得很顺利。

紧接着,我突然发现自己的 T2 做法假了。跟 pmt 鸽鸽聊了几句,发现他 T1 写了一个树套树,T2会很多分,T3 写了个类正解,果然吊打了我。

出了考场找不到自己的衣服,实际上就在我的眼前。找啊,找啊,最后清场的时候,老师才帮我发现了它(就在我旁边)。我感谢地穿上衣服走了。

然后跟 ZHR 说了几句,原来他也吊打了我呀。真不错,明天不用去了。

期望得分: [ 60 , 100 ] + [ 0 , 30 ] + 16 = [ 76 , 146 ] [60,100]+[0,30]+16=[76,146] [60,100]+[0,30]+16=[76,146]

这个分数,明天是不是只要比 AK 的分数多个 10 10 10 分左右就能翻盘了呀。

Day 2

面了各路巨佬,然后迷迷糊糊地进了考场。

由于有了经验,没有犯像昨天一样傻逼的错误,很顺利地等到了发题。结果我看到文件来了,手残点开了它,然后立刻关掉,满脑子都是文件夹被损坏之类的惨案 ⋯ ⋯ \cdots \cdots 好在我运气不错,我点开来的时候老师的电脑卡住了,停止发了一会儿。

开题。

T1一道数据结构题,T2 计数题,T3 又是图论题。

从 T1 的 30 30 30 分开始, O ( n q ) O(nq) O(nq) 随便搞搞就行了。然后发现通过一些技巧,在随机数据上可以搞到 O ( q log ⁡ 2 n ) O(q \log^2 n) O(qlog2n),于是很快写完过了小样例和中样例。

然后我开始想 m ≤ 300 m \le 300 m300 的做法,大概是树剖+主席树。感觉代码会很长,为了这 20 20 20 分花这么长时间不大值得。

紧接着,我开始想链的做法。正当我画完一条链并手玩两组之后,我竟然得到了“正解”!

f i , j f_{i,j} fi,j 表示,看到第 i i i 个位置且匹配区间 [ x , j ] [x,j] [x,j] 时, x x x 的最小值。

调了 3 h 3h 3h,发现假掉了。

然后留给我的就是 1.5 h 1.5h 1.5h 了,于是写了 3 3 3 个暴力痛苦走人。

期望得分: [ 30 , 40 ] + 60 + 25 = [ 115 , 125 ] [30,40]+60+25=[115,125] [30,40]+60+25=[115,125]

好耶!E队再见!

Day 3

洛谷民间数据测了一波,大概是 190 190 190

但 T1,T2 都是玄学做法,感觉能多拿一点分……所以总分在 [ 185 , 210 ] [185,210] [185,210] 之间吧。

Day 4-6

滚去学自闭的文化课去了。

去春游了一波,一直在打和平精英,还不停地翻车。

Day 7

出成绩了耶!我 236 \text{236} 236

当时在课堂上就开心地蹦了起来,虽然分数很低,可是超出了我的预期。

然后就看排名,发现 rnk 58,初一初二 rnk 7,相比 NOIP 进步了一名。总人数 101 \text{101} 101,所以我依然是倒数(大雾

得知一位高二学长没能进入省队之后,我就没那么开心了 /kk 然后满脑子都是自己退役的场景 ⋯ ⋯ \cdots \cdots

Day 8-inf

进省队反正是不可能的事情了,但 APIO 和 NOI 2021 同步赛都在等着我呢(

希望我不要再写 6 6 6 个暴力的吧。

To be continued … … \huge {\text{To be continued……}} To be continued

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
根据引用[1],dp[u][j]表示在u子树中选取恰好j个人时能获得的最大价值。而根据引用,该问题的时间复杂度为O(log2​104×nm)。 对于洛谷P2143 [JSOI2010] 巨额奖金问题,我们可以使用动态规划来解决。具体步骤如下: 1. 首先,我们需要构建一棵树来表示员工之间的关系。树的根节点表示公司的总经理,其他节点表示员工。每个节点都有一个权值,表示该员工的奖金金额。 2. 接下来,我们可以使用动态规划来计算每个节点的dp值。对于每个节点u,我们可以考虑两种情况: - 如果选择节点u,则dp[u][j] = dp[v][j-1] + value[u],其中v是u的子节点,value[u]表示节点u的奖金金额。 - 如果不选择节点u,则dp[u][j] = max(dp[v][j]),其中v是u的子节点。 3. 最后,我们可以通过遍历树的所有节点,计算出dp[u][j]的最大值,即为所求的巨额奖金。 下面是一个示例代码,演示了如何使用动态规划来解决洛谷P2143 [JSOI2010] 巨额奖金问题: ```python # 构建树的数据结构 class Node: def __init__(self, value): self.value = value self.children = [] # 动态规划求解最大奖金 def max_bonus(root, j): dp = [[0] * (j+1) for _ in range(len(root)+1)] def dfs(node): if not node: return for child in node.children: dfs(child) for k in range(j, 0, -1): dp[node.value][k] = max(dp[node.value][k], dp[node.value][k-1] + node.value) for child in node.children: for k in range(j, 0, -1): for l in range(k-1, -1, -1): dp[node.value][k] = max(dp[node.value][k], dp[node.value][k-l-1] + dp[child.value][l]) dfs(root) return dp[root.value][j] # 构建树 root = Node(1) root.children.append(Node(2)) root.children.append(Node(3)) root.children[0].children.append(Node(4)) root.children[0].children.append(Node(5)) root.children[1].children.append(Node(6)) # 求解最大奖金 j = 3 max_bonus_value = max_bonus(root, j) print("最大奖金为:", max_bonus_value) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值