博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[FZYZOI比赛]T1256 - 20130322 (动态规划) - 黄地产的生活
阅读量:6895 次
发布时间:2019-06-27

本文共 752 字,大约阅读时间需要 2 分钟。

预计得分:100+60+40=200

第一题(P1858 -- 土地利用):

非常标准的动规。f[i][j]表示在前i种中选取某一些的情况下,面积为j。使用到的面积。很明显,最后的答案就是S-f[n-1][S](j从0开始)

那么它的状态转移方程是:f[i][j]=max(f[i-1][j-a[i]]+a[i],f[i][j-1])。需要用到尽可能多的面积使用max不用多说,max中前半段表示,把i这一种房产建起来使用的地产面积(a[i]是第i个房产的面积),后半段是不建房子。边界注意一下即可。

第二题(P1233 -- 售楼大会):

我只能说,和[P1659 -- 合唱队形]几乎是一样的题目啊!就是弱化了。

一开始想到的是最长上升/下降,以i为开头和结尾做一遍。这个就是上次比赛的做法。但是很明显,回文现在未知。

想到一点点思路:如果我们已经知道了回文的内容,那么可以在O(N)的时间之内找出是否可能。

似乎不可以?又想到一个:如果对于相同的字母,我们对它建索引呢?

似乎可以?我们把a[i]展开成所有和它相同字母,在它后面(或本身)的下标,如abcaaa中,第一个a变成5,4,3,0,第二个a变成5,4,3。这样变成了一串数字以后,直接做最长上升子序列!

只有26个字母,很明显,每个字母平均展开成38位数,1000*38=38000。问题是它不仅需要长度,还要表达式!所以只能使用O(N^2)的算法,T。不过60还是可以的。

第三题(P1537 -- 投资):

标准的多重背包。理论最优复杂度O(VN),使用单调队列的方法参考百度吧。我去看看了。

转载于:https://www.cnblogs.com/turtlegood/archive/2013/03/22/2975936.html

你可能感兴趣的文章
配置管理小报100204:产品路线图
查看>>
开发 Windows RT 桌面应用(来自 Surface RT)
查看>>
iOS 6版本与之前版本差异总结
查看>>
JNI编程(二) —— 让C++和Java相互调用(1)
查看>>
memcached简介
查看>>
Ubuntu 更改 Gun Make 版本
查看>>
Service学习笔记
查看>>
idea配置git、GitHub
查看>>
Cocopods安装和升级备忘录
查看>>
如何用Python写一个贪吃蛇AI
查看>>
nginx全局变量
查看>>
今日一练习
查看>>
Kylin 在 58 集团的实践和应用
查看>>
javascript性能优化
查看>>
41. First Missing Positive
查看>>
sql的行转列(PIVOT)与列转行(UNPIVOT)
查看>>
sbt配置——数据源问题解决
查看>>
框架模式与设计模式之区别
查看>>
AngularJS+Satellizer+Node.js+MongoDB->Instagram-13
查看>>
CSS 实现打字效果
查看>>