听说经常发题解rp++
传送门 password:12345ssdlh 此密码记忆需配合wxg魔性音乐
T1
Contest2178 - 2019-4-18 高一noip基础知识点 测试7 T3
不会请自行翻阅之前博客
T2
震惊!此题洛谷上紫题!
其实还是很简单的
首先,按成绩sort
然后,枚举每一个可以做中位数的牛,根据中位数的特性,一定在它左右各取n/2头牛
假设中位数定在i,l[i]表示1-i中前n/2个数的和,r[i]表示i-c中前n/2个数的和
那么只需要满足i.money+l[i-1]+r[i+1]<=F
考虑如何快速求出l和r
假设我们已知l[i-1],对于i.money,我们只需要比较i.money和已经取的最大的,谁小就要谁
那显然用个heap维护即可
代码
T3
震惊,此题洛谷上蓝题!
但是就一个dfs就解决了
我是不会告诉你我WA50是因为数组开小了
按照题意模拟dfs即可
只需要加一个记忆化,即在相同时间拥有相同的能力值的话,那么能滑的次数一定相同
就记忆化一下
就好了
剩下的一些神仙剪枝请酌情使用
代码
T4
设dp[i][j]表示前i个数里取一些数,让它们的和%m=j的方案数
那么,dp[i][j]=dp[i-1][j]+dp[i-1][(j-a[i])%m],a[i]表示第i个数
代码
T5
设dp[l][r]表示在金币还剩下l-r这段区间的时候,现在取的那个人可以取得的最大收益
那么,显然在取完一个之后,需要让下一个人获得的收益最小
所以,dp[l][r]=s(l,r)-min(dp[l][r-1],dp[l+1][r])
代码
T6
震惊!此题在洛谷上是蓝题!
其实这是最简单的一道题了
先满足子树,如果还少,就在子树里找出权值最小的点,往里加就好了
代码
T7
首先二分比值k
对于条边(u,v),将它的边权看做e[i].len*k-pos[v]
然后判负环就好了
负环的最基本的方法是spfa
即一个点如果入队超过m次,那么一定存在负环
代码