首页 > 其他分享 >P7987【半成品】

P7987【半成品】

时间:2023-04-20 18:12:34浏览次数:34  
标签:一个点 个点 P7987 标记 半成品 奇偶性 偶数 配对

涉及知识点:动态规划

题目链接

题意

给你一个数轴,数轴上有\(n\)个点,选其中一些点进行两两配对,配对要求是这两个点之间距离不能超过\(k\),且一个点只能有一组配对,使得未配对的点之间无法再进行配对。每个点有个代价\(y_i\),我们称一种配对方案的代价为未配对的点的代价和,求配对方案的最大或最小代价

分析

求最值,数据范围只能过\(O(n\log n)\)以下,很有可能是动态规划,我们分成两种情况讨论

T=1,求最小

由于代价的来源是未选择的点,所以我们在处理的时候应该反过来思考,我们不是去选点来配对,而是给一些点打上标记,让剩下没有标记的点都能配对,而我们要保证的事就是标记点之间距离必须大于\(k\),而为了使剩下的点都能配对,显然相邻的两点配对最优

我们将状态设为 \(f[i][j]\) 表示处理完前\(i\)头奶牛,其中标记了 \(j\) 头牛(未配对),剩下 \((i-j)\) 头牛没有被标记(两两配对)。那么我们就可以进行如下分类讨论:

  • 如果\((i-j)\)为偶数,说明前面未标记的牛都已经配对了

    • 给第\(i\)个点打上标记,这样做没有任何限制
    • 不打标记,那么这个点和下一个点匹配,这样做需要保证 \(i\) 到 \(i+1\) 距离小于等于\(k\)
  • 如果\((i-j)\)为奇数,由于我们是相邻点之间进行配对,此时说明最后一个点(即第\(i-1\)个点)还找不到对象(雾)

    • 给第\(i\)个点打上标记,那么上一个点和下一个点匹配,这样做需要保证 \(i-1\) 到 \(i+1\) 的距离小于等于\(k\)
    • 不打标记,那么这个点和上一个点匹配,这样做需要保证 \(i-1\) 到 \(i\) 的距离小于等于\(k\),但在讨论 \(i-1\) 时已经保证了此条件,不用再判断

    思维误区:有人会问如果第\(i-1\)的点被打了标记怎么办,但是此时\((i-j)\)为偶数。可以证明\((i-j)\)为奇数时第\(i-1\)个点不可能被打上标记

但是,这样空间复杂度是\(O(n^2)\)的,过不去\(10^5\)的数据,怎么改进?

注意到一点,得知\((i-j)\)的奇偶性不一定需要知道 \(j\) 具体的数值,只需要记录 \(i\) 和 \(j\) 的奇偶性,当 \(i\) 与 \(j\) 奇偶性相反时,\((i-j)\)为奇数,反之为偶数

那么我们引出一个新的变量 \(j'\),当 \(i\) 为奇数时 \(j'\) 为 \(1\),\(i\) 为偶数时 \(j'\) 为 \(0\) 。那么 \(f[i][j']\) 意味着 \(i\) 和\(j\) 奇偶性相同,表示\((i-j)\)为偶数的情况;\(f[i][!j']\) 意味着 \(i\) 和 \(j\) 奇偶性相反,表示\((i-j)\)为奇数的情况。这样 \(f\) 数组就只用开 \(10^5\times 2\) 的大小了

我们重新思考具体的状态转移怎么写:

(我们令 \(last\) 表示【到 \(i\) 距离大于 \(k\) 的最大的点】)

  • \((i-j)\)为偶数时
    • 给该点打标记,那么就要从 \(j-1\) 的状态转移而来(与当前 \(j\) 奇偶相反),f[i][j']=min(f[i][j'],f[last][!j']+y[i])
    • 不打标记

标签:一个点,个点,P7987,标记,半成品,奇偶性,偶数,配对
From: https://www.cnblogs.com/SkyNet-PKN/p/17337795.html

相关文章

  • python-xpath,爬取猪八戒网(半成品)
    数据未进行清洗xpath  / 层级关系text() 拿文本//    https://blog.csdn.net/KELLENSHAW/article/details/127877476爬取https://task.zbj.com/hall/list-all-0-p1?kw=HTML先定位小盒子的div然后通过检查,xpath://*[@id="hall-list-wrap"]/div[4]/div[1]/div[1]/div[1]/d......
  • Schoof 算法: 有限域上椭圆曲线数点 (半成品)
    在某个域\(K\)上,由关于\(X,Y\)的多项式方程\[E:Y^2=X^3+AX+B\]定义出的曲线我们称为椭圆曲线(ellipticcurve).准确的说,我们这个时候一般考虑域的特......
  • 一个更加高级有对话框的看板娘(半成品,没有图片显示)
    添加一个更加高级的看板娘直接上链接:>> 博客园添加看板娘只需三个步骤-走看看(zoukankan.com) <<>> 博客园添加看板娘只需三个步骤-13号同学-博客园(cnblogs......
  • 编码规范(本文档属于半成品)
     引言1.1  编写目的这是一份旨在增强团队的开发协作,提高代码质量和打造开发基石的编码风格规范。目前其中包含了HTML、JavaScript和css/scss几个部分。 1.2  项目背......
  • 数据全部导出,半成品
     数据全部导出,半成品,需要加载等待,不科学<!DOCTYPEhtml><head><!--<metahttp-equiv="Content-Type"content="text/html;charset=gbk2312"/>--><meta......
  • 半成品生产领料
    --半成品生产领料selecta.月,a.年,a.一类编码,a.存货一类,a.大类编码as父项大类编码,a.存货大类as父项存货大类,a.分类编码as父项分类编码,a.存货分类as父项存货......