首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >"难金"的 ICPC 南京赛点,究竟有多难

"难金"的 ICPC 南京赛点,究竟有多难

作者头像
ACM算法日常
发布2021-10-27 14:33:43
发布2021-10-27 14:33:43
1.1K0
举报
文章被收录于专栏:ACM算法日常ACM算法日常

南京赛点历来是强队云集之地,在南京赛点拿金牌可谓是难上加难。

下面我们来看看 2019 年南京的题目。由于是现场参赛的,也就没有了代码分享。

Problem A

题意:蛇形矩阵中有

n

个位置是有价值的,价值是位置上的数位和,每次询问一个子矩阵中的价值总和。

题解:蛇形矩阵,给出坐标求位置上的数,可以直接

O(1)

通过分类讨论出来。

只需要知道他是从内往里第几圈就能算出来。

得到了每一个位置的价值,就变成了一个二维数点问题,直接树状数组维护一下就好了。

Problem C

题解:毫无营养的分块打表

Problem D

题意:给定一个

DAG

,每一次等概率从一个点走向其连向的每个点或者停在原地,第

i

次操作会造成

i

的伤害,求总伤害的期望值。

题解:如果每次操作都只会造成

1

的伤害,令

S(u)

代表节点

u

相连的所有点(包括

u

),到终点的期望伤害就是

f(u)=1+\frac{1}{|S(u)|}\sum_{v\in S(u)}f(v)

,移项之后就可以算出值。

现在第

i

次操作会造成

i

的伤害,但我们可以将其拆成路径上每个点到终点的路径之和。这样,令

g(u)

代表此时到终点的期望伤害,则

g(u)=f(u)+\frac{1}{|S(u)|}\sum_{v\in S(u)}g(v)

。同样,移项后计算出答案。

Problem E

题目:求

\sum\sum...\sum(a_1,...a_k)^2

题解:枚举gcd,莫比乌斯反演然后杜教筛。

ans=\sum\limits_{k}\sum\limits_{i=1}^{n}i^2\sum\limits_{j=1}^{n/i}\mu(j)\frac{n}{ij}^k

,把

k

求和移到最后就是等比数列,交换

i,j

\sum\limits_{j=1}^{n}calc(j) \times \mu * I^2

,后部分杜教筛,前部分数论分块。

Problem F

题意:给出一个全排列,第

i

次操作,

a_1=i

,每次可以从

a_i

所在全排列中的附近

k

个位置选择一个

<a_i

数作为

a_j

,要求字典序最大的,求这样的数列非

0

数有几个。

题解:产生这个数列的方式,显然是贪心,每次在全排列中的附近

k

个位置选择一个

<a_i

且最大的数。

于是就发现,当前的数列非

0

个数就是当前数所在位置在全排列中的附近

k

个位置选择一个

<a_i

且最大的数的数列中非

0

数量

+1

直接用

set

维护一下窗口的数,二分查找就能得到每一个数周围满足要求的数,然后从小往大递推一下就好了。

Problem H

题意:在一个存在负权边的图中,依次加入六条给定起点终点的边,使得加入的边边权尽量小,且加入之后不存在负权环。

题解:每一次加入一条边,用

SPFA

算出两点之间的距离,取反作为边权加入图。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ACM算法日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Problem A
  • Problem C
  • Problem D
  • Problem E
  • Problem F
  • Problem H
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档