codechef题目选讲(pty)概要.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
codechef题目选讲(pty)概要

Reduce string 这个做法是DP的经典优化。 另外一种颇经典的优化是将0,1状态转化成在某一维上取最值。 例如:f[i][j][k][0,1] - g[i][j] g[i][j]代表使得f[i][j][k]为1的最小的k的值。 当然这种优化需要满足一定的单调性,所以请谨慎使用。 Problem7: Annual Parade 题意:在一个n个点m条带权边的有向图中,你需要安排若干条路径(si,ti),路径满足至少包含两个不相同的点,而你的花费将由三部分构成: 1、路径si-ti上所经过的边的边权和,一条边被经过多次,就将被计算多次。 2、如果si != ti,那么该条路径额外增加C的费用。 3、如果某个点没有被任何一条路径经过,也将额外增加C的费用。 Annual Parade 现在将有Q个询问,每个询问是一个给定的C,你需要回答此时的最小花费。 N = 250, M = 30000 Q = 10000, C = 10000, vij = 10000 Annual Parade 1、简化问题:首先两两之间求出最短路,然后给(i,j)[i != j]之间加上一条权值为dis(i,j)的有向边。这样所有的路径(si,ti)都将是一条简单路径,并且互不包含公共点。 Annual Parade 2、最小边权和路径覆盖! 建立最小费用最大流模型:左边为S,连向左边n个点,右边n个点,连向T。如果i和j之间有边,则我们将左边的第i个点连向右边的第j个点,花费为边权。所有的边的容量均为1。 初始时所有的点都不被路径经过,此时花费是N*C Annual Parade 每添加1的流量,也就是每多匹配一条边,会发生什么惊世骇俗的事情呢? 1、连接了两条原本不相交的路径,这时候费用将会减C. 2、连接了一条路径的首尾,构成了一个环,费用同样减C! 设本次增广增加的费用是V. 本次增广对答案的贡献就是V-C Annual Parade 由于V是递增的,所以我们增广到VC就可以停止增广。 于是我们可以对增广所增加的费用进行预处理。然后每次查询时二分出增广的次数再O(1)求出答案即可! Annual Parade 网络流模型永远是如此的神奇。。 Problem8: Pruning Trees 题意:给定一棵n个点的树,每条边有边权,现在需要删除若干条边,使得剩下的每个联通块中都存在一个点,满足该联通块其他点到该点的距离=d,问删除的边的边权和最小是多少? N = 100, d = 10^9, w = 10^7 T = 40 Pruning Trees 令f[u][c]代表以u为根的子树:满足最后u所在的联通块的中心是c时最大能保留的边权和。 为了方便递推,我们再令k[u]代表f[u][c]中c为u的孩子的最大值。 同时我们规定当dis[u][c] d时,f[u][c]=0 Pruning Trees 情形1:若c不在u所在的子树中或者u=c: 枚举u的每个孩子v f[u][c] = Σmax{k[v], (f[v][c]+w[u][v])*(dis[v][c] = d)} 情形2:若c在u所在的子树中,令其在u的孩子v’的子树中。枚举u的孩子v。 若v = v’:f[u][c] += f[v’][c] + w[u][v’]。 若v != v’:同情形1。 Pruning Trees 复杂度O(n^2*T)。 DP状态设计比较巧妙,c在u的子树的外的情形是对未来的一种限制,是一种未卜先知的动态规划。 Problem9: Maximum Sub-rectangle in Matrix 题意:给定一个n*m的矩阵A,每个格子有一个权值,现在要你选定一个行的集合(l1,l2,l3..lk),再选定一个列的集合(p1,p2..ps),使得它们交叉处的格子的权值和最大。 n, m = 300 Maximum Sub-rectangle in Matrix Challenge Np问题。 Maximum Sub-rectangle in Matrix 个人思路: 一、当确定了一个行的集合S,可以得出一个关于列的最优方案。看成关于S的函数F(S)。 对这个函数进行盲人爬山,模拟退火等各种乱搞算法。。 期望得分0.995 Maximum Sub-rectangle in Matrix 思路二: 当确定了行的集合后,可以得到一个关于列的最优方案集合,然后根据这个列的方案集合,再反推行的最优集合,如此反复迭代,直到不能迭代为止。 得分:0.997~0.998 缺点:容易钻进死胡同,并且耗费较多时间。 Maximum Sub-rectangle in Matri

您可能关注的文档

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档