传送门 password:12345ssdlh
T1
很容易看出一个物品的实际价值为E-X+C
按照这个价值贪心即可
代码
T2
高精度*低精度
太水了
代码
T3
显然,对于B[i][j]来讲,一共有五个贡献可以使它翻转,即B[i][j],B[i][j+1],B[i+1][j],B[i-1][j],B[i][j-1]
在这些里,只有B[i][j+1]在第i行的下方
即,如果填完了第i行,对于B[i][j+1]是否要翻转,完全取决于B[i][j]的颜色
所以说,我们只需O(2n)填完第一层,之后O(nm)就可以将剩下的行填完
填完后,判断最后一层是否都是白色就好了
代码
T4
一个贪心
先按照时间排序
如果第i个数还有时间学或者比现在学的里面收益最小的大,那就学他,否则就不学
用一个堆维护
代码
T5
设dp[i][0/1]表示到达第i个跨栏的左/右需要经过的最小距离
那么,dp[i][0]=min(dp[x][0]+dis(l[x],l[i]),dp[x][1]+dis[r[x],l[i]),x表示从往上走碰到的第一个栅栏
正确性请脑补
dp[i][1]=min(dp[x][0]+dis(l[x],r[i]),dp[x][1]+dis[r[x],r[i]),x表示从往上走碰到的第一个栅栏
最后要求的相当于是dp[n+1][0](l[n+1]=r[n+1]=0)
代码
T6
设dp[i]表示1--i架缆车所需的最少段数
那么,dp[i]=min(dp[j]+1)
其中,j需要
{
1、j<i
2、i-j>=k
3、i---所有取过的j---j是一个下凸包
}
其中第三个条件用斜率判一下就好了
代码
T7
显然直接枚举TLE
考虑优化
我们发现,如果现在取过的数相同,而且最后一个取得也相同,那么它在往后取的方案数也是相同的
那么,我们就加个记忆化,记录下状态及最后一个取的数,就可以把复杂度从O(n!)优化到O(n*2n)
代码