gym 102920 2020-2021 ACM-ICPC, Asia Seoul Regional Contest(部分简单题题解)

其他的非签到题解可以看牛逼同学的
这里

gym 102920D

题意:给出一个平面,n个点,点i与点j的距离是|xi-xj|+|yi-yj|,每个点上有加油站,加一公里油的费用是wi,给出油箱容量W,在S->T的路途中最多加delta次油,求最少费用
(第一个给出的点是S,第二个给出的点是T)

题解:
哈密顿距离很有特点,a->b的距离显然只会小于等于a->c+c->b,显然如果走一段路线,经过其中两个连续的加油站上时不用加油,那么肯定不用选择走过这些点,而是直接越过他们到达下一个点,这样经过的距离会更优
因此可以推出一个结论,最优答案每次从x走到y,要么x是充满电的,要么y是没电的
如果下一个点价格便宜或者是终点,显然电量恰好到下一个点就够了,所以终点没电,如果下一个点价格贵,要么就是在这个点充满,使到下个点的时候尽可能少冲,要么就是根本不用在贵的点停留,直接越过这个点考虑新的下一个点,在那个点耗尽或在这个点充满,总之,路径上的点必然满足上述结论
那么就直接DP这些关键点就行了
假设dp[d][pos][r]表示充了d次电,到pos剩余r电量的最小消费,显然之前是deltanr
w的dp,现在经过我们的优化,可以只dp关键点,也就是dp[d][pos][w]和dp[d][pos][0]
转移有下面这三种(可以自己根据满电和没电关系画一下,很清晰)
该点上没电充到满电
dp[d][x][0]->dp[d+1][x][w]
该点没电充电到下个点再没电
dp[d][x][0]->dp[d+1][y][0]
该点满电到中继点再到没电点
dp[d][x][w]->dp[d+1][z][0]
前两种不难转移,第三种需要考虑中继点,这个可以预处理一下,具体就是显然中继点是因为z离x太远了,所以用两条w以内的x->z+z->y去更新长度在w~2w之间的x->y就行了,复杂度我不是很知道,题解上说是n^2logn的(题解是韩文的有兴趣自己去看看吧)

gym 102920F

题意:给出若干个墨水缸子和管子,连接x和y的管子会引导x里的墨水流向y,一开始的k个缸子有不同的墨水,然后如果一个缸子里的墨水是来自多个装有不同墨水的缸子的,那么这个缸子里的墨水就是一种新的颜色(即使两个不同的缸子c,d的墨水都来自于a,b,c,d也是不同的颜色)求一共有几种不同的颜色

题解:好怪啊,板子题做出来的人这么少,显然如果一个缸子的颜色出现过了,他的头上肯定会有一个支配点,如果没有出现过就没有支配点,显然建一个起点,向一开始k个点连边,然后把每个x->y变成边连上建图,如果一个点的最近支配点是起点,他的颜色就是新的,所以对于原图跑支配树就行了

gym 102920H

题意:给出abc三个数组
求有多少个a(i)+c(i)=2b(i)

题解:FFT板子题,正负的话加一个基数平移一下就行了,求解(a(i)+30000)+(c(i)+30000)=2*(b(i)+30000)方案数和原式等价

gym 102920I

题意:2e3大小a数组,2e5个询问,每次l r x,求l~r之间连续子段和小于等于x的最大值

题解:考虑离线做法,预处理所有区间的子段和,按照询问和子段和的大小从小到大排序,这样可以保证,每次询问的时候只要询问最大值,那么l ~ r拆开来拆成l一维r一维,就相当于求一个子矩形的最大值,用线段树维护,发现常数巨大,所以考虑树状数组,但树状数组维护的是前缀最大值,所以,把l翻转,前缀换成后缀,因为l>r时l ~ r的前缀和永远不会被更新,永远是-inf,所以查询后缀的大子矩形等价于查询原来的子矩形。

gym 102920J

题意:给出n个开关,每个开关能控制不同种类的灯,问对于每个灯,能否都存在一种开关灯方案,使得只有这盏灯开,其他灯关,如果可以,输出方案

题解:显然如果秩不是n就无解,如果秩是n,那么答案就是把该矩阵消到单位矩阵的方案,也就是该矩阵的逆,所以就按照这个高斯消元模拟一下就行了,注意500^3会gg,要bitset优化

gym 102920K

题意:给出一个不规则图形,用横长为2|3或竖长为2|3的多米诺骨牌完整覆盖,输出方案

题解:因为保证了没有洞而且每个点都有相邻的两个黑块,可以想象一下,这个图形不可能会有贪心的后效性,所以直接贪心就行了,如果这个点没填,有四种情况,第一种是和后面直接变成横长2,或者和前面变成横长3,或者和下面变成竖长2,或者和上面变成竖长3,因为23可以拼出1以上的所有数,所以没有后效性,贪心就行。

gym 102920L

题意:给出一个长度1e6的数组a,求最大的 ( a i + a j ) ∗ ( j − i ) (a_i+a_j)*(j-i) (ai+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值