第一题:作弊
这题我们可以用一个循环来枚举当这个回文字串中间位为i的最长情况,两重循环也不会超时,就这样一直枚举下去,找出最长的那个字串,就输出即可。
第二题:最大杂置
我们只有细心枚举样例数据是怎样得来的,便可发现n[i]就等于杨辉三角第n[i]+1行的中间数,根据这个规律,我们就可以求出答案了。
第三题:投影
这题看着会觉得很难,但仔细看样例其实跟之前做过的围墙翻新比较相似,我们只需保留读入的y,然后用一个双重循环,依次判断当前i和当前j是否相等,如果相等且之前没有找过,就标记。
第四题:除草
这题我们需要用到动态规划,设f[i,j,1]表示已经把从i到j的草除完,且现在正在i点;f[i,j,2]表示已经把从i到j的草除完,且现在正在j点;那么我们可以根据它的每种情况推出状态转移方程:
if i<j then
f[i,j,1]:=min(f[i+1,j,1]+(p[i+1-p[i])*(n-j+i),f[i+1,j,2]+(p[j]-p[i])*(n-j+i));
f[i,j,2]:=min(f[i,j-1,1]+(p[j]-p[i])*(n-j+i),f[i,j-1,2]+(p[j]-p[j-1])*(n-j+i));
注意:p数组要先按从小到大排好,且f[i,i,1]=f[i,i,2]=abs(l-p[i])*n;
版权声明:本文为Hot_Herat原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。