首页 > 其他分享 >记一场 ABC364

记一场 ABC364

时间:2024-08-27 15:28:03浏览次数:9  
标签:二分 比赛 过此题 一场 赛时 total DP ABC364

于洛谷专栏获得更差的阅读体验
于 CSDN 获得更一般的阅读体验
赛时 AC ABCD,赛后补出了 E。
由于比赛在一个月前,本来已经忘记这场比赛了,直到我看到了:

(来自一位超厉害的小学同学神犇)
\(364\)?很近的比赛啊,我打过吗?似乎打过?
打开题目一看:这不就是斯坦纳树板题吗?但我为什么没印象?
打开 AT 一看,额,我还真打过:

菜爆了。。。也难怪对 G 没印象。
重新看一下题,发现还挺好玩,遂把 F、G 题干掉了。

作为第二场 AK 的比赛(第一场是 ABC126,但是太简单了),决定写篇总结。


以下 \(5\) 题是比赛当天做的。

[ABC364A] Glutton Takahashi

只要判断是否有 \(2\) 个连续的 sweet
笑点解析:赛时吃了一发罚时,数组下标写错了。
过此题时比赛已经过去了 \(6\) 分钟。

[ABC364B] Grid Walk

按题意模拟。
过此题时比赛已经过去了 \(11\) 分钟。

[ABC364C] Minimum Glutton

贪心。
想要停止吃饭,甜度限制和咸度限制只需要超过一个就可以了。所以可以分别按甜度和咸度从大到小排序,看哪种策略先结束。
过此题时比赛已经过去了 \(16\) 分钟。

[ABC364D] K-th Nearest

二分套二分,需要思维转换。
与直接其求距离给定点第 \(k\) 近的点是哪个,不如直接求这个距离。设给定点坐标为 \(x\),二分这个距离(记为 \(b\)),看在 \([x-b,x+b]\) 的范围内有几个点。区间查询使用线段树,由于值域范围过大,动态开点。
然而刚才看题解区发现全是二分套二分……二分距离后,二分距离 \(x-b,x+b\) 最近的点,判断中间的点的数量。
赛后为了涨咕值写了篇题解。
过此题时比赛已经过去了 \(57\) 分钟。

[ABC364E] Maximum Glutton

注意看这个 Maximum,和前文的 minimum 形成了鲜明的对比,设置悬念,吸引读者的阅读兴趣,引发读者的思考,前后呼应,提示我们二者有相同也有不同。
由于要吃尽量多的东西,就要求两个参数都不能超过限制,此时一道菜的两个参数都会对当前情况的优劣产生影响,所以贪心会比较难绷。
于是使用 DP。
然后一看数据范围:

\[n \le 80,x,y \le 10^4 \]

空间去掉 \(n\) 那维还勉强是 \(x \times y=10^8\) 刚刚好,时间就这 \(O(nxy)=8 \times 10^9\),根本不带超时的好吧!
赛时吃了 \(2\) 发罚时(未 AC),win!


赛后 \(20\) min 看题解。

Instead, noticing that the value of \(N\) is fairly smaller than those of \(X\) and \(Y\) in this problem, we take the following typical approach: swapping the key and value of DP. Specifically, bring the number of dishes to the key and total saltiness to the value to define:

  • \(dp_{i,j,k}=\) (the minimum total saltiness when choosing exactly \(k\) dishes from dishes
    \(1,2,\dots,i\) so that the total sweetness is exactly
    \(j\)).

This way, the DP table can be filled in a total of
\(O(N ^2X)\) time. All that left is to find the maximum
\(k\) such that there exists \(j\) with \(dp_{N,j,k}\le Y\).

沃德???那么妙又那么帅的吗?我居然没想到,是自己太菜了……还不是因为自己不够努力。。。
常用 DP trick \(+1\)。
于是开始补题。一开始填表法过不去,用了刷表法才过。
此时已经 \(22:18\) 了。


以下 \(2\) 题是 \(2024.8.27\) 才做的。

[ABC364F]Range Connect MST

好玩,kruskal 与并查集小技巧 \(+1\)。
按照 kruskal 的步骤去做,但是发现不能暴力判断一条边的两个点是否连通。但由于一个区间的所有点都连向一个点,所以 \([l_i,r_i]\) 有几个连通块就会连几条边。暴力处理每个连通块,把前面的合并到后面。
哦,想起来了,赛时看过几眼。

[ABC364G]Last Major City

一眼得斯坦纳树。
先考虑只有 \(k-1\) 个关键点,直接复制板题代码即可。对于每一个询问,输出 \(f_{i,S}\) 即可,因为当第 \(i\) 个点被连通时,可以把它当做又一个关键点。

总结

好比赛,好题。
希望可以多出点这样的比赛,不要像某些比赛只会出三维前缀和于博客园获得更好的阅读体验
赛时 AC ABCD,赛后补出了 E。
由于比赛在一个月前,本来已经忘记这场比赛了,直到我看到了:

(来自一位超厉害的小学同学神犇)
\(364\)?很近的比赛啊,我打过吗?似乎打过?
打开题目一看:这不就是斯坦纳树板题吗?但我为什么没印象?
打开 AT 一看,额,我还真打过:

菜爆了。。。也难怪对 G 没印象。
重新看一下题,发现还挺好玩,遂把 F、G 题干掉了。

作为第二场 AK 的比赛(第一场是 ABC126,但是太简单了),决定写篇总结。


以下 \(5\) 题是比赛当天做的。

[ABC364A] Glutton Takahashi

只要判断是否有 \(2\) 个连续的 sweet
笑点解析:赛时吃了一发罚时,数组下标写错了。
过此题时比赛已经过去了 \(6\) 分钟。

[ABC364B] Grid Walk

按题意模拟。
过此题时比赛已经过去了 \(11\) 分钟。

[ABC364C] Minimum Glutton

贪心。
想要停止吃饭,甜度限制和咸度限制只需要超过一个就可以了。所以可以分别按甜度和咸度从大到小排序,看哪种策略先结束。
过此题时比赛已经过去了 \(16\) 分钟。

[ABC364D] K-th Nearest

二分套二分,需要思维转换。
与直接其求距离给定点第 \(k\) 近的点是哪个,不如直接求这个距离。设给定点坐标为 \(x\),二分这个距离(记为 \(b\)),看在 \([x-b,x+b]\) 的范围内有几个点。区间查询使用线段树,由于值域范围过大,动态开点。
然而刚才看题解区发现全是二分套二分……二分距离后,二分距离 \(x-b,x+b\) 最近的点,判断中间的点的数量。
赛后为了涨咕值写了篇题解。
过此题时比赛已经过去了 \(57\) 分钟。

[ABC364E] Maximum Glutton

注意看这个 Maximum,和前文的 minimum 形成了鲜明的对比,设置悬念,吸引读者的阅读兴趣,引发读者的思考,前后呼应,提示我们二者有相同也有不同。
由于要吃尽量多的东西,就要求两个参数都不能超过限制,此时一道菜的两个参数都会对当前情况的优劣产生影响,所以贪心会比较难绷。
于是使用 DP。
然后一看数据范围:

\[n \le 80,x,y \le 10^4 \]

空间去掉 \(n\) 那维还勉强是 \(x \times y=10^8\) 刚刚好,时间就这 \(O(nxy)=8 \times 10^9\),根本不带超时的好吧!
赛时吃了 \(2\) 发罚时(未 AC),win!


赛后 \(20\) min 看题解。

Instead, noticing that the value of \(N\) is fairly smaller than those of \(X\) and \(Y\) in this problem, we take the following typical approach: swapping the key and value of DP. Specifically, bring the number of dishes to the key and total saltiness to the value to define:

  • \(dp_{i,j,k}=\) (the minimum total saltiness when choosing exactly \(k\) dishes from dishes
    \(1,2,\dots,i\) so that the total sweetness is exactly
    \(j\)).

This way, the DP table can be filled in a total of
\(O(N ^2X)\) time. All that left is to find the maximum
\(k\) such that there exists \(j\) with \(dp_{N,j,k}\le Y\).

沃德???那么妙又那么帅的吗?我居然没想到,是自己太菜了……还不是因为自己不够努力。。。
常用 DP trick \(+1\)。
于是开始补题。一开始填表法过不去,用了刷表法才过。
此时已经 \(22:18\) 了。


以下 \(2\) 题是 \(2024.8.27\) 才做的。

[ABC364F]Range Connect MST

好玩,kruskal 与并查集小技巧 \(+1\)。
按照 kruskal 的步骤去做,但是发现不能暴力判断一条边的两个点是否连通。但由于一个区间的所有点都连向一个点,所以 \([l_i,r_i]\) 有几个连通块就会连几条边。暴力处理每个连通块,把前面的合并到后面。
哦,想起来了,赛时看过几眼。

[ABC364G]Last Major City

一眼得斯坦纳树。
先考虑只有 \(k-1\) 个关键点,直接复制板题代码即可。对于每一个询问,输出 \(f_{i,S}\) 即可,因为当第 \(i\) 个点被连通时,可以把它当做又一个关键点。

总结

好比赛,好题。
希望可以多出点这样的比赛,不要像某些比赛只会出三维前缀和

标签:二分,比赛,过此题,一场,赛时,total,DP,ABC364
From: https://www.cnblogs.com/hog-dawa-ioi/p/18382787

相关文章

  • 【外地跑一场马拉松】跑步装备的分类:轻盈上阵,无惧风雨
    每次外地去跑一场全马,我都会给自己列一份清单,深怕自己有遗漏,要在目的地临时补,会特别焦虑。为了让大家在马拉松比赛中轻盈上阵,无惧风雨,今天就来为大家详细解析一下我的跑步装备清单。首先,我们要明确的是,跑步装备的选择直接影响到我们的比赛体验。以下是我为大家精选的几款跑步......
  • Voice agent connected!回顾一场 24 小时的黑客松
       ......
  • 像是做了一场梦,一场不想醒来的梦。
    我不想和任何人说话,我不想理睬任何人,谁都不要和我说话,我要安安静静的写,不要打扰我。我把游戏源码(含教程)放到了夸克网盘:https://pan.quark.cn/s/a3cf34ffaeef游戏中,人工智能处理语言对话,人工智能的虚拟世界,这只是个开始。图片太多,需要加载一会,才显示。小区:小区傍晚的暮雪:......
  • abc364 题解
    第一次场切A~F,写个题解纪念一下。比赛链接:https://atcoder.jp/contests/abc367A-ShoutEveryday题意:高桥每天\(B\)时刻睡觉,\(C\)时刻起床(\(B,C\)时刻也在睡觉),请问高桥\(A\)时刻是否没睡。思路:对于\(B<=C\)和\(B>C\)分别处理即可。代码:https://atcoder.jp/con......
  • 由字节对齐引发的一场“血案“
    最近在搞个网络通信协议,采用socketudp传输,运行时,居然报段错误了,经过debug,发现居然是因为字节对齐问题导致的。这个问题在实现通信协议,是经常会遇到的问题,为了方便读者理解,我把内容做了简化,分享给大家。1、协议说明通信协议信令格式如下:typedefstructprotocol_msg_s{ ......
  • 地理编码之旅,一场地址与坐标的漫游
    随着移动设备的普及和定位服务的发展,在使用导航和位置搜索时,用户期望应用提供的位置是准确无误的,同时用户也希望App可以根据位置提供个性化和本地化服务,比如,在社交媒体上分享位置信息或帮助家庭设备智能联网管理等。想要获取准确的位置,经纬度是确定每个地点位置的精确坐标,但是,使用......
  • [240801] 类 C 语言 C3 是一种进化,而不是一场革命 | 趣文: find + mkdir 是图灵完备
    目录类C语言C3是一种进化,而不是一场革命C3编程语言特征C3设计原则安装C3编程语言第一个C3项目趣文:find+mkdir是图灵完备类C语言C3是一种进化,而不是一场革命C3是基于C的编程语言,它是C的一种演变,其目标是在尽可能保留C相同语法情况下进行改......
  • 探索梦幻之旅:一场说走就走的旅游攻略!
    在这个快节奏的时代,偶尔放慢脚步,踏上一场说走就走的旅行,成为了许多人心中最温柔的向往。无论是追寻历史的足迹,还是沉浸于自然的怀抱,每一次旅行都是一次心灵的洗礼。今天,就让我们一起规划一场梦幻般的旅程,探索那些隐藏在地图角落的绝美风景与文化瑰宝。一、前期准备:细致规划,轻......
  • Atcoder ABC364 D-F
    AtcoderABC364D-FD-K-thNearest链接:D-K-thNearest(atcoder.jp)简要题意:问题陈述在一条数线上有\(N+Q\)个点\(A_1,\dots,A_N,B_1,\dots,B_Q\),其中点\(A_i\)的坐标为\(a_i\),点\(B_j\)的坐标为\(b_j\)。请就每个点\(j=1,2,\dots,Q\)回答下面的问题:......
  • ABC364F
    区间连边先想到线段树优化建图,但显然的是这样建图求MST根本没法做。需要另想他法。前两天刚做了弹跳,此题并没有直接建图,而是模拟了Dijkstra来跑最短路。同理,此题我们也可以不直接建图,而是通过模拟Kruskal来求MST。将边按照权值从小到大排序,注意到连完边后\([l,r]\)的每......