AtCoder Other Contest 做题记录

AtCoder Other Contest

ACL#

ACL1C - Moving Pieces#

才发现自己很久没有碰过网络流了。

题意:给定一个棋盘,上面有障碍和棋子,要求不经过任何障碍,不出界,同一个格子同时只能有一个棋子,每次可以将棋子向右或是向下移动一步。要求最大移动次数。

1N,M50

解法:

完全没想到可以网络流,注意到这是费用流之后题目变得很简单了。每一个点向其能走到的点连一条费用为 1,流量无限的边,跑费用流即可。

https://atcoder.jp/contests/acl1/submissions/59252262

JSC#

JSC2021F#

WATER

题意:给定长度为 N 的数组 a,长度为 M 的数组 b,初始所有元素的值为 0,有 Q 次单点修改,要求每一次修改后回答 ijmax(ai,bj)

1N,M,Q2×105

解法:

解法:考虑每一次修改一个值的影响。先减去原来对答案的贡献,再加入新的贡献。一个值,例如 ai 对答案的贡献是 b 中小于 ai 的数量乘 ai,加上大于 aib 之和。线段树维护一下即可。

Submissions

Code Formula#

Code Formula 2014 本選H - 平和協定#

fydj 推荐的题目。

题意:n 个点,每一个点有两种属性 aibi,如果 s1(aiaj)(bibj)s2,那么在点 i 和点 j 之间连一条边,问能连多少条边?

1ai,bi,s1,s2,n5×104,4s

解法:

根据 fydj 所说,5e4 还开 4 s,让人想到分块,更具体地说是整除分块。

先将 [s1,s2] 容斥为 [1,r],对于 a 之差为 x 的,限制 b 之差必然是一段区间 [1,rx],可以整除分块,然后二维数点。

实现上,这题空间是 64MB,不能将 n 根 n 个询问全部存下来,可以先整除分块枚举 a 之差的范围,再枚举每一个点。然后有点卡常。最后发现排序很慢,发现二维数点拆出来的两个前缀是分别有序的,改成线性的归并就过了。

作者:Terminator-Line

出处:https://www.cnblogs.com/Terminator-Line/p/18702916

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

posted @   Terminator-Line  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示