JZOJ NOIP2014模拟 8.12

一、过河

题意:n条河,第i条河宽w[i],在河中的单位速度为v[i]。n+1个平行于y轴的河岸,河岸上走单位速度为u。每次只能从整点到整点。求到(x,y)的最小时间。x=sigma(w[i])

小论:贪心。由于是从整点到整点。把y看成每次走增加1个高度,走y次(因为由题意知到达目的地的方法是第1个河岸走到第2个河岸走高了0或1或2或……个高度,第2个河岸到第3个河岸走高了0或1或2或……个高度……一直到最后一个河岸都是如此)。每次看这1高度是从哪个河岸走到其下一河岸的,或是直接在岸上走。下面是计算跨河的:设当前从第i个河岸渡到第i+1个河岸,第i+1个河岸已经走了h[i]高度(即已经从第i个到第i+1个河岸往上走了j高度),则ans+=(sqrt(sqr(w[i])+sqr(h[i]+1))-sqrt(sqr(w[i])+sqr(h[i])))/v[i],我们每次只用找到(sqrt(sqr(w[i])+sqr(h[i]+1))-sqrt(sqr(w[i])+sqr(h[i])))/v[i]的最小值就行了。这样的话,我们可以用一个堆维护,每次比较是跨河好还是在岸上走好就行了。

当时情况:估计30分,实际10分。dp。f[i,j]为到第i条河岸j高度的最优解,转移非常简单。但因为把在岸上走的速度u想成了走单位路程耗的时间(脑子抽了),连30分都没拿到……。


二、逃离迷宫

题意:n*m的网格图,从(x1,y1)走到(x2,y2)消耗的体力为(s[x1,y1]-s[x2,y2])^2。现在图中某些地方放有补充体力的药水,体力足够多。问从入口到出口最小消耗的体力为多少。

小论:由于最多有15个格子放有药水,加上入口出口两个点,最多17个关键点。我们可以先把两两关键点间的最小消耗体力值跑出来,然后状压跑一遍dp或最短路就行了。

当时情况:估计20分,实际0分。打了个裸spfa,可是忘记加状压了,于是就变成只能应付20%的那些没有药的数据。可这些数据也莫名的挂了……(看来我有无药都没救了)


三、幸运数

题意:给定n、m,求小于n的,所有质因子都小于等于m且每种质因子个数都为奇数的正整数的个数。

小论:先把小于m的质数筛出来。然后枚举每个质数取的奇数个数,这样能过(20~40)%的数据。接下来就是优化了!如果对于当前枚举到的质数p[i]、之前已枚举到的所有的积s,有s*p[i]^2>n的话,那么从p[i]一直到p[k](p[k+1]*s>n,p[k]*s<=n)的这些质数要么只在其中取任意一个,要么都不取。于是我们可以二分出k,这样就可以过100%的数据了。

当时情况:估计20分,实际20分。未加优化的暴力...…


总结:第一题一般都是贪心等——想多点就能想出一想出就是送分的题。贪心需要发散思维,注意将问题由整体分为局部;看到数据中有个小于等于10左右的,想想是不是状压;搜索剪枝的话,可以自己出几个数据看一下,找一下共通规律看能不能剪枝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值