• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






This_poet——Only a poet

为省队而奋斗,为NOI而奋斗!This_poet@126.com
 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

2011年10月31日

POJ1015 Jury Compromise——DP——被某些人害苦了!!!
摘要: 水水的DP,网上居然有人说200*400*20会爆内存~于是想了一个滚动数组的,但是状态记录就不好办了,后来才发现200*400*20是没问题的……状态转移方程:dp[i][j]表示选出i个人、两方差值为j的时候两方价值和的最大值dp[i][j]=max{ dp[i-1][j-p[i]+d[i]]+p[i]+d[i] }记录路径的话,直接记录并倒推即可……参考代码:program poj1015;//By_Thispoetconst maxn=4000;var i,j,k,m,n,p,test :longint; mini,maxi :longint; f :array... 阅读全文
posted @ 2011-10-31 18:18 This_poet 阅读(610) 评论(0) 推荐(0)
 
POJ3590 The shuffle Problem——置换群+DP/递推预处理
摘要: 显然,这是一个置换群问题,答案m就是将n这个数拆成k个(1=<k<=n),k个数能够得出的最小公倍数。简略证明:序列会被分为若干个群,每个群需要交换这个群的size次才能够回复原位,因此,问题转化成求将n这个数拆成k个(1=<k<=n),k个数能够得出的最小公倍数,以及满足题目要求的字典序最小的序列。DP预处理:dp[i][j]表示将i这个数字划分成j个,这j个数能够组成的最小公倍数。那么方程就是dp[i][j]=max{lcm(dp[k][j-1],i-k)} (j-1<=k<=i-1)注意,要令字典序最小,必须使划分的集合数尽量多,并按照集合大小从小到大 阅读全文
posted @ 2011-10-31 18:09 This_poet 阅读(577) 评论(0) 推荐(0)