2021.06.30普转提测试总结

T1社交距离

刚开始的思路就是二分,但由于数据范围是 1 0 18 10^{18} 1018,所以开始思考如何优化二分范围。

大致思路是:记录每次区间的长度,其中的最小值为L,而R的最大范围为区间右端点的最大值。

(最后的最后发现是自己想多了,就是 1 1 1~ 1 0 18 10^{18} 1018…)

T2 奶牛飞盘队

用一个数组d[i]记录前若干个数中所构成的和对f取模后等于i的方案数,每次读入某一个数,从0~f-1循环一遍更新方案数,最后在d[a[i]%f]上++。

在考场上有错未找出来,之后订正是重构了一遍a了。

T3 养猪

二维dp,f[i][j]表示前i天,卖出j头猪所获得的最大收益,思考可得,将天数从后向前循环可省略一层。

for(int i=1;i<=n;i++)
	{
		for(int j=f;j>=1;j--)
		{
			ff[j]=max(ff[j],ff[j-1]+max(0,b[i].a-(j-1)*b[i].p));
			maxx=max(maxx,ff[j]);
		}
	}

T4 时间线

在考场时试想过用最长路来写,但对于源节点的处理不够恰当,无奈写了个暴力。

考完试后经同学启发,将所有节点先同时连向同一个源节点,边权值为s[i],最后从这个节点出发即可,剩下的就是跑一遍每个节点的最长路即可(因为要满足所有约束条件,所以要在m的范围内尽可能的长)

T5 数字变换

考场上并未观察出丝毫图论的痕迹,算是毫无思路。(明明之前写过)

考完以后,在老师的讲解下发现质数约束和一定为1,剩下的按照变化条件连边构建若干个有向图,最后的n个数为n个节点,构成一个"森林",因为要求最多的变化步数,也就是所有树中最长的直径了。

T6 牛奶管道

按照平常的最短路跑一遍,将更新值的条件和所更新的内容进行修改,本人是用spfa跑的,但dij按照题目要求应该不会在环中不断更新答案有时间试试

总结

本人太菜,其实有能力拿到更高的分数,但在考场上debug却de不出来也算是自己能力的不足吧,在考场上不能够很好的把题目代入所学的算法中,还需锻炼…

下次一定 每次都这么说

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值