DTOJ 4697. 格

25 篇文章 0 订阅
14 篇文章 0 订阅

题意

有一个 n n n m m m 列的矩阵,初始所有位置的权值都为 0 0 0.

开始时,你在格子 ( x , y ) (x,y) (x,y) 上。

每天早上,每个格子里的权值都会增加 1 1 1.

每天下午,你可以留在当前格子,或瞬移到上下左右相邻格子中的一个。

每天晚上,你会获得当前格子里的权值,然后清空当前格。

求第 k k k 天晚上后,你所获权值的最大值。

子任务一 ( 20 20 20pts), n = 1 n=1 n=1.

子任务二 ( 20 20 20pts), n = 2 n=2 n=2.

子任务三 ( 20 20 20pts), 2 ∣ n 2|n 2n.

子任务四 ( 40 40 40pts),无特殊限制.

对所有的数据, T ≤ 1 0 5 ,   1 ≤ n , m ≤ 1 0 9 ,   1 ≤ x ≤ n ,   1 ≤ y ≤ m ,   1 ≤ k ≤ 1 0 18 T\le 10^5,\, 1\le n,m\le 10^9,\,1\le x\le n,\,1\le y\le m,\,1\le k\le 10^{18} T105,1n,m109,1xn,1ym,1k1018.

题解

没有贪心、构造能力的我测试的时候想自闭了。
首先是一个显然而重要的转化:获得的价值等于经过每个格子的最晚时间,所以答案的上界一定是 ( k − n m + 1 ) + . . . + k (k-nm+1)+...+k (knm+1)+...+k(没往这里想一直在乱画肯定做不出来啊)。
这样就比较可想了,只要最后 n m nm nm步能把图走完即可达到上界。如果 n n n m m m为偶数,那么一定存在哈密顿回路,按回路走即可。否则,如果是都是奇数,考虑能否走完。由于和奇偶有关,考虑黑白染色:把和为奇数的染成黑色,偶数为白色,这样黑色比白色少 1 1 1,要走完所有格子必须从白色出发,且一定能走完(不把自己堵死就好)。如果 k > = n m k>=nm k>=nm,在第一步跳到和为偶数的点上;否则直接走 n m − 1 nm-1 nm1步。
但对于 n = 1 n=1 n=1 m = 1 m=1 m=1的情况需要特殊考虑:如果 k k k很大可以走遍所有格子,就到最后再走;否则考虑尽量逼近上界,先往一个方向走几步在走到另一边的尽头即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值