本文题目顺序以PDF为准
T1 AC
两个队列同时跑画师和洪水的广搜,注意洪水优先于画师
T2 0 pts
简单二分(不小心多输了点东西)
T3 85 pts
优先队列板子(没看到“如果没有则输出NONE”+没加读入优化)
T4 AC
一个很神奇的做法
预处理从l~r的按钮同向按下的相邻按钮上的数字差之和f[l][r]
定义dp[i][j]为
- 若j为0,则dp[i][j]为第i个按钮被正向按下,第(i-1)个按钮被逆向按下时1~i相邻被按的按钮上的数字差之和的最小值
- 若j为1,则dp[i][j]为第i个按钮被逆向按下,第(i-1)个按钮被正向按下时1~i相邻被按的按钮上的数字差之和的最小值
易得转移式为
dp[i][j]=min(min(dp[k][(j+1)%2]+f[k][i-1]+abs(a[i]-a[k-1]))(2<=k<i),f[1][i-1])
答案为
min(min(dp[i][j]+f[i][n]+abs(a[i-1]-a[n]))(2<=i<=n),f[1][n])
T5
AC
注意到若最长上升子序列要选择Ak,则最长上升子序列中一定有Ai<Ak(iAk(i>k)
其逆命题也成立
于是先删除所有Ai>=Ak(i<k)或Aik)的项,然后正常做LIS
T6
AC
DP转移:dp[i][j]=max(dp[i-1][j+a],dp[i-1][j-a]);